Назад | Перейти на главную страницу

Та же сетевая маска или / 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.)

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

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

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

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

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