在FreeBSD 10中改变CARP

我在FreeBSD 10-RELEASE中configurationcarp接口时遇到问题。

以下configuration工作。

#/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开始编号。似乎每个别名编号必须是连续的,跳过数字将导致接口不被创build。

例如,如果我注释掉ifconfig_em1_alias0 ,其余的将会失败。

有谁知道这是否是预期的实施?

首先,如果您将同一个子网中的多个地址分配给相同的接口,则辅助地址应该具有子网掩码/ 32,并且以字别名为前缀:

ifconfig_em1 =“inet 38.111.159.78 netmask 192.168.1.10”ifconfig_em2 =“inet 38.111.159.78 netmask 192.168.2.10”

ifconfig_em1_alias0 =“vhid 11 advskew 210 pass PASSWORD alias 192.168.1.11/32”ifconfig_em1_alias1 =“vhid 12 advskew 210 pass PASSWORD alias 192.168.1.12/32”ifconfig_em1_alias2 =“vhid 13 advskew 210 pass PASSWORD alias 192.168.1.13/32”

ifconfig_em2_alias0 =“vhid 20 advskew 210 pass PASSWORD alias 192.168.2.20/32”ifconfig_em2_alias1 =“vhid 21 advskew 210 pass PASSWORD alias 192.168.2.21/32”ifconfig_em2_alias2 =“vhid 22 advskew 210 pass PASSWORD alias 192.168.2.22/32”

注意:在一般的configuration中,只需要绑定IP地址并跳过_alias0 _alias1的东西,就可以使用:

ipv4_addrs_em1 = “192.168.2.20-22 / 24”

但是当你需要为每个IP地址指定一个vhid时,这是行不通的。

好的根据rc.conf手册页这是预期的行为。

在它读取的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地址,但我不确定它是否适用于鲤鱼接口有另一种语法,如rc.conf手册页中所列:…由于难以pipe理行为,有ifconfig_ aliasesvariables,它具有与ifconfig _alias 相同的function,并且可以包含variables中的所有条目,如下所示:

  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