Та же маска сети или /32 для вторичного IP в Linux

Кажется, есть (по крайней мере) два способа добавить вторичный IP-адрес к интерфейсу в Linux. Под вторичным я подразумеваю, что он будет принимать трафик на IP-адрес, и ответы на соединения, сделанные с этим IP, будут использовать его в качестве источника, но любой трафик, исходящий из коробки (например, исходящее TCP-соединение), не будет использовать вторичный адрес.

Оба способа начинаются с добавления основного адреса, например, ip addr add 172.16.8.10/24 dev lan, Затем я могу добавить дополнительный адрес с любой маской сети /24 (соответствует основной) или /32,

Если я добавлю это с /24он становится помеченным как вторичный, поэтому не будет использоваться в качестве источника исходящих пакетов, но это оставляет риск того, что два адреса будут добавлены в неправильном порядке по ошибке. Если я добавлю это с /32неправильный порядок не может произойти, но он не помечается как вторичный, и я не уверен, какие это могут быть плохие последствия.

Итак, мне интересно, какой подход наименее вероятно сломать? (Если это имеет значение, основной службой на этом компьютере является MySQL, но он также работает с NFSv3. Я добавляю вторую машину в качестве горячего резервирования и надеюсь переключаться между ними, меняя принадлежащий вторичному IP-адресу.)

2 ответа

Решение

Если я добавлю его с /24, он будет помечен как вторичный, поэтому не будет использоваться в качестве источника исходящих пакетов, но это оставляет риск того, что два адреса будут добавлены в неправильном порядке по ошибке. Если я добавлю его с /32, неправильный порядок не произойдет, но он не будет помечен как вторичный, и я не уверен, какие это могут быть плохие последствия.

Я не уверен, что вы имеете в виду здесь. Ваши сетевые интерфейсы настроены детерминистически, когда ваша система загружается. Правильно настроив сеть, вы можете решить, какой адрес назначен первым, а какой назначен как дополнительный адрес.

Если вы работаете в системе RedHat, основной файл конфигурации сети ifcfg-eth0 (например) будет обрабатываться до любых псевдонимов интерфейсов, таких как ifcfg-eth0:0, Я менее уверен в поведении в системах Debian, но похоже, что /etc/network/interfaces Файл может обрабатываться последовательно, поэтому поместите определения псевдонимов после основного адреса, и все будет готово.

Итак, мне интересно, какой подход наименее вероятно сломать?

Если оба ваших адреса находятся в одной сети, я не знаю, будет ли один из них более или менее вероятен. Для чего я обычно настраиваю вторичные адреса с сетевой маской /32, так как первичный адрес уже обеспечивает необходимый сетевой маршрут.

Вы не можете рассчитывать на то, что адреса будут «детерминированными». В случае конфигураций аварийного переключения у вас может быть что-то вроде кардиостимулятора, подключающегося и удаляющего или добавляющего IP-адрес к интерфейсу. Поскольку вы не знаете, когда кардиостимулятор установит IP-адрес, вы не можете гарантировать порядок или полагаться на такое детерминированное поведение.

Из-за этого меня немного разочаровывает отслеживание соединений в Linux. У меня есть конфигурация брандмауэра высокой доступности, и исходящие пакеты для всего отправляются на фиксированный адрес. Таким образом, входящий трафик на резервный IP-адрес приводит к исходящему трафику с фиксированного адреса (который отличается) и, таким образом, не выглядит установленным или связанным с входящим соединением и удаляется.

Другие вопросы по тегам