我正在运行 RHEL5.5,机器上有多个网络接口(eth0、eth1、eth2)。我希望让 /sbin/dhclient 在特定接口(eth0 和 eth2)上绑定其 UDP 端口 68,但当我执行“netstat -anp | grep 68”时,我看到:
udp 0 0 0.0.0.0:68 0.0.0.0:* 6109/dhclient
这会干扰另一个运行自己的 DHCP 客户端的软件守护进程,该守护进程希望在 /sbin/dhclient 未提供服务的特定接口 (eth1) 上运行
我可以让 /sbin/dhclient 不绑定到 UDP 端口 0.0.0.0:68 吗?
我已将 /etc/dhclient.conf 配置为仅为需要的接口提供服务(在本例中为 eth0 和 eth2),但它仍然绑定到 0.0.0.0:68,从而阻止自定义 DHCP 客户端在 eth1 上运行。
任何帮助都值得感激,谢谢。
答案1
DHCP 的工作方式是客户端使用广播地址来查找所有响应的 DHCP 服务器。然后,它会选择其中一个服务器(基于算法,据我所知,这主要与响应时间有关)并请求地址。然后,此地址将绑定到正在配置的接口。
再次强调,根据定义,广播会发送到所有网络接口。因此,除非您愿意编写自己的 DHCP 客户端(源代码可免费获得),否则您对此无能为力。
但是,您可以使用不同的端口。有关详细信息,请阅读 dhclient 的手册页。这还需要一个侦听该端口的 DHCP 服务器。标准 ISC DHCP 服务器使用 -p 选项支持此功能。同样,请阅读 dhcpd 的手册页。
答案2
您可以使用交换机吗?您可以使用 VLAN 轻松实现这一点
您也可以使用 iptables 的标记来完成此操作。