Как ip_nonlocal_bind = 1 может сломать приложения? - PullRequest
0 голосов
/ 16 марта 2020

У меня есть две Linux виртуальных машин. Все они запускают службу sshd на одном и том же IP. Когда одна машина не работает, вы можете войти на другую виртуальную машину с тем же IP-адресом. Однако другая виртуальная машина не будет прослушивать этот IP-адрес, поскольку он еще не существует.

Я должен перезапустить службу sshd вручную. Однако я не могу войти в ВМ, если sshd не запущен. Я нашел решение, установив ip_nonlocal_bind в 1.

Я прогуглил описание ip_nonlocal_bind в kernel.org :

  ip_nonlocal_bind - BOOLEAN
  If set, allows processes to bind() to non-local IPv6 addresses, 
  which can be quite useful - but may break some applications.
  Default: 0

Последняя строка говорит but may break some applications, и я боюсь, что это может сломать приложение, которое я запускаю на своей виртуальной машине.

Моя виртуальная машина в основном действует как маршрутизатор.

Наконец, я хочу знать : как ip_nonlocal_bind сломать приложения?

1 Ответ

0 голосов
/ 17 марта 2020

В документации ядра сказано, что ip_nonlocal_bind может сломать некоторых приложений, поскольку, как следует из названия, оно позволяет bind() для адресов, которые не являются локальными для машины. Если этот параметр включен, и приложение делает (неверное) предположение, что входящий адрес является локальным для машины, это может привести к тому, что он взломает sh или в любом случае неправильно обработает соединение.

В документации сказано, что это может сломать некоторые приложения, потому что до введения параметра (в ядре v4.3, если я не ошибаюсь) приложения могли смело предполагать, что связанные адреса были локальными.

Я не стал бы беспокоиться об этом в вашем случае, поскольку, как вы говорите, ваша машина просто выполняет роль маршрутизатора, поэтому в основном вся работа по маршрутизации выполняется самим ядром.

...