Кажется, есть (по крайней мере) два способа добавить вторичный 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, так как первичный адрес уже обеспечивает необходимый сетевой маршрут.