我正在设置 FreeBSD carp 路由器/防火墙备份,我的提供商通过 DHCP 提供 IP,它是静态的并且与我的 NIC 的 MAC 地址绑定,因此当 carp 切换状态时,我试图关闭一台机器上的接口并在另一台机器上打开它。它起作用了。到目前为止一切顺利...
我的问题是,当我重新启动 BACKUP 机器时,接口在重新启动后进行配置 - 它使用已在网络中使用的 MAC 与 DHCP 服务器通信,并得到答复。一点也不好 - 有一段时间,我的交换机的 arp 表将数据包定向到错误的端口。
我尝试过了:
dhclient em0
从切换到 MASTER 状态并进入 rc.conf开始ifconfig_em0="down"
,但是如果最终接口进入链接关闭状态,dhclient 退出并且不会作为 devd 恢复,devd 应该恢复它,从dhcpif
-检查network.subr
并告知“em0 不是支持 dhcp 的接口”。设置
ifconfig_em0="down dhcp"
并删除dhclient.leases.em0
文件,然后重新启动 - 我的界面在启动后被关闭并配置(可能它甚至已经启动,然后在进入 carp BACKUP 状态时被我的脚本禁用)。
据我所知,没有办法将 NIC 设置为启用 DHCP,以便由 devd 启动链接时 dhclient,但在启动过程中保持其完全静默?
答案1
作为一种解决方法,我添加了自定义 devd 作业来运行不带检查的 dhclient:
# cat /usr/local/etc/devd/dhclient.conf
notify 1 {
match "system" "IFNET";
match "type" "LINK_UP";
media-type "ethernet";
match "subsystem" "em0";
action "/usr/local/sbin/dhcp_linkup_carp.sh";
};
# cat /usr/local/sbin/dhcp_linkup_carp.sh
#!/bin/sh
[ "`ifconfig em0 | grep inet`" ] && dhclient em0
并设置ifconfig_em0="down"
(rc.conf
界面由 devd carp 脚本启动)