DHCP服务器必须能够将DHCPOFFER数据包发送到没有IP的客户端,然后它们使用广播目标MAC地址(FF:FF:FF:FF:FF:FF:FF)和广播目标IP地址广播DHCPOFFER。 255.255.255.255)。不幸的是,Linux坚持将255.255.255.255目标IP更改为本地子网广播地址。这会导致违反DHCP协议。
虽然许多DHCP客户端不会注意到此问题,但有些(例如,所有Microsoft DHCP客户端)会注意到。出现此问题的客户端将似乎看不到来自服务器的DHCPOFFER消息。
前面引用的页面所做的是通过多种创建路由或添加255.255.255.255 IP的主机名的方法,“诱骗” Linux网络引擎使用255.255.255.255 IP作为DHCPOFFER的目标IP,等等
编辑:DHCP客户端位于网络的哪个位置都没有关系;问题是,如果目标IP不是255.255.255.255,则某些挑剔的DHCP客户端将忽略DHCP提供。请考虑如果您通过PXE引导PC,则PXE固件是“第一个” DHCP客户端,接下来,如果您加载Linux内核/ initrd,则启动Linux内核会立即发出“第二个” DHCP请求。在这种情况下,在单个PXE引导会话上,您将获得2个连续的完全不同的DHCP客户端,并且可能会发生,尽管第一个客户端可以容忍所描述的DHCP协议违规,而第二个客户端可能无法容忍。如果仅引导“原谅” DHCP客户端,则同一台PXE引导PC可能已经运行良好。
为了“查看”正在发生的事情,我建议获取一些Wireshark流量捕获,并在数据包级别查看问题。