我正在 ESXi 服务器内设置虚拟环境。我有一个运行 isc dhcp 的 Ubuntu Server 版本。
当服务器启动时,我发出命令,ifdown eth0
然后是ifup eth0
。此时服务器发出 DHCP 请求,但本身不会用 IP 地址回答该请求。有什么原因吗?
我看到了这篇文章DHCP 服务器能否通过 DHCP 为自己分配 IP 地址但我并不确信 DHCP 服务器无法为自己分配地址。
有没有更好的方法来查看你的 DHCP 服务是否配置正确?我遵循了本指南https://help.ubuntu.com/lts/serverguide/dhcp.html并且无法为网络上的另一个客户端分配IP地址。
答案1
是的,这是可能的。假设 dhcpd.conf 中的 ISC dhcp 服务器设置server-identifier
为 127.0.0.1。这将导致 DHCPOFFER 将 DHCP 选项 54 设置为 127.0.0.1,因此 DHCPREQUEST 将到达服务器。
请注意,如果您希望此 DHCP 服务器有用(其他客户端可以从其请求 IP),则需要在与host
服务器的 eth0 MAC 地址匹配的节中设置此参数。
Ubuntu(至少 12.04)中的一个复杂问题是 DHCP 服务器启动和接口启动之间存在竞争条件。
在启动时,最后一个文件系统挂载后,mountall 将发出文件系统事件。网络和 rc-sysinit upstart 作业将在此事件上启动(rc-sysinit 还需要“net-device-up IFACE=lo”)。
网络作业会启动所有接口。rc-sysinit 作业会发出运行级别事件,从而启动 dhcp 服务器。
所有这些事件都是异步发生的:因此存在竞争条件。