我正在尝试PXE启动一台机器。 在系统日志中,我可以看到:
dhcpd[28030]: DHCPDISCOVER from 98:90:96:bc:fc:e3 via 10.65.240.2 dhcpd[28030]: none: host unknown. dhcpd[28030]: DHCPOFFER on 10.65.240.111 to 98:90:96:bc:fc:e3 via 10.65.240.2
我无法解决问题。 该子网是有效的,目前,机器有一个租约,这台机器以前build成就好!
一些谷歌search表示“主机未知”暗示与DNS有关:服务器具有该框位于前向和反向区域的区域文件。
DHCP服务器必须能够向没有IP的客户端发送DHCPOFFER数据包,然后用广播目的地MAC地址(FF:FF:FF:FF:FF:FF)广播它们的DHCPOFFER,并使用广播目的地IP地址255.255.255.255)。 不幸的是,Linux坚持把255.255.255.255目的IP改成本地子网广播地址; 这导致违反DHCP协议。
虽然许多DHCP客户端不会注意到这个问题,一些(例如,所有的Microsoft DHCP客户端)都会。 遇到此问题的客户端将看不到来自服务器的DHCPOFFER消息。
之前引用的页面所做的是“欺骗”Linuxnetworking引擎,以便能够使用255.255.255.255 IP作为DHCPOFFER的目标IP,通过创build路由或使用255.255.255.255 IP添加主机名,等等
编辑:没有关系,DHCP客户端networking位于何处; 问题是一些挑剔的DHCP客户端如果其目的IP不是255.255.255.255,将忽略DHCP提供。 请考虑一下,如果您即PXE启动PC,则PXE固件是“第一个”DHCP客户端,接下来,如果您加载了Linux内核/ initrd,您将有一个由启动的Linux内核现在制作的“第二个”DHCP请求。 在这种情况下,在单个PXE启动会话中,您有2个连续的完全不同的DHCP客户端,可能会发生这样的情况,即第一个可以容忍所描述的DHCP协议违规,第二个可能不能。 如果您只启动“宽容”DHCP客户端,相同的PXE引导PC可能会非常好地工作。
为了“看”到底发生了什么,我会build议获取一些Wiresharkstream量捕获,并在数据包级别查看问题。
所以我find了这个页面( http://www.tldp.org/HOWTO/DHCP/x369.html ),里面提到了向/etc/hosts添加一个条目。
我补充说:
255.255.255.255 none
到最后,似乎已经解决了这个问题。 不知道为什么我以前不需要这个,因为它看起来很基本。 任何人都知道这是为什么发生?