将 FreeBSD 中的网络接口设置为启用 DHCP,但在明确启用之前完全静默

将 FreeBSD 中的网络接口设置为启用 DHCP,但在明确启用之前完全静默

我正在设置 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 脚本启动)

相关内容