У меня проблемы с настройкой интерфейсов carp в FreeBSD 10-RELEASE.
Следующая конфигурация работает.
#/boot/loader.conf
carp_load="YES"
#/etc/rc.conf
ifconfig_em1="inet 192.168.1.10 netmask 255.255.255.0"
ifconfig_em2="inet 192.168.2.10 netmask 255.255.255.0"
ifconfig_em1_alias0="vhid 11 advskew 210 pass PASSWORD 192.168.1.11/32"
ifconfig_em1_alias1="vhid 12 advskew 210 pass PASSWORD 192.168.1.12/32"
ifconfig_em1_alias2="vhid 13 advskew 210 pass PASSWORD 192.168.1.13/32"
ifconfig_em2_alias0="vhid 20 advskew 210 pass PASSWORD 192.168.2.20/32"
ifconfig_em2_alias1="vhid 21 advskew 210 pass PASSWORD 192.168.2.21/32"
ifconfig_em2_alias2="vhid 22 advskew 210 pass PASSWORD 192.168.2.22/32"
У меня проблемы с псевдонимом.
Кажется, что каждый псевдоним на интерфейс должен быть пронумерован, начиная с 0. Также кажется, что каждый номер псевдонима должен быть последовательным, пропуск номеров приведет к тому, что интерфейс не будет создан.
Например, если я закомментирую ifconfig_em1_alias0
все остальное потерпит неудачу.
Кто-нибудь знает, предполагаемая ли это реализация?
Во-первых, если вы назначаете несколько адресов в одной подсети одному и тому же интерфейсу, вторичные адреса должны иметь маску подсети / 32 и иметь префикс со словом alias:
ifconfig_em1 = "inet 38.111.159.78 netmask 192.168.1.10" ifconfig_em2 = "inet 38.111.159.78 netmask 192.168.2.10"
если
если
Примечание: в общей конфигурации, где вы просто хотите привязать IP-адреса и пропустить материал _alias0 _alias1, вы можете использовать:
ipv4_addrs_em1 = "192.168.2.20-22 / 24"
Но это не работает, когда вам нужно указать vhid для каждого IP-адреса.
Хорошо согласно rc.conf man-страница это предполагаемое поведение.
В разделе network_interfaces он читается.
For each ifconfig_<interface>_alias<n> entry with an address
family keyword, its contents are passed to ifconfig(8).
Execution stops at the first unsuccessful access,
so if something like this is present:
ifconfig_ed0_alias0="inet 127.0.0.251 netmask 0xffffffff"
ifconfig_ed0_alias1="inet 127.0.0.252 netmask 0xffffffff"
ifconfig_ed0_alias2="inet 127.0.0.253 netmask 0xffffffff"
ifconfig_ed0_alias4="inet 127.0.0.254 netmask 0xffffffff"
Then note that alias4 would not be added since the search
would stop with the missing ``alias3'' entry. Because of
this difficult to manage behavior, there is ifconfig_<interface>_aliases variable,
which has the same functionality as ifconfig_<interface>_alias<n>
Вам не нужно использовать aliasN для определения дополнительных IP-адресов, хотя я не уверен, насколько хорошо он будет работать для интерфейсов carp, есть другой синтаксис, как указано на странице руководства rc.conf: ... Из-за этого трудно управлять поведение, есть ifconfig_переменная aliases, которая имеет ту же функциональность, что и ifconfig_alias и может содержать все записи в переменной, например:
ifconfig_ed0_aliases="\
inet 127.0.0.251 netmask 0xffffffff \
inet 127.0.0.252 netmask 0xffffffff \
inet 127.0.0.253 netmask 0xffffffff \
inet 127.0.0.254 netmask 0xffffffff"
Этот метод позволяет избежать случайного пропуска интерфейса, так как вам не нужно гарантировать, что aliasN увеличивается на 1