我的一些服务器丢失了网络连接(ip 地址在 ifconfig 中消失)。我检查了 linux dhcp 服务器的消息日志,发现在这些服务器丢失连接时,会出现如下消息:
DHCPDISCOVER from <mac address of the server> via <port>
Abandoning IP Address <IP of the server>: pinged before offer
我认为我的 dhcp 服务器的地址池不太可能耗尽(因为只有很少的服务器在运行,并且 ip 地址范围比正在运行的服务器数量大得多)。我怀疑之前已经分配了 ip 的同一个客户端服务器正在进行 dhcpdiscover,当 dhcp 服务器尝试为客户端服务器分配相同的 ip 时,dhcp 服务器会 ping 提议的 ip(客户端服务器仍在使用它),最终导致放弃 IP 地址消息,并且客户端服务器不再获取 ip 地址,从而失去网络连接。
我的问题是:(i) 我的假设是否可行?如果不可行,还有哪些其他可能性(例如,网络中的循环)?(ii) 我可以采取什么措施来避免这种情况再次发生?
答案1
您是否在使用 DHCP 中继?那么在发现期间 ping 该地址可能会在重复地址检查中产生误报。如果没有中继,ARP 检查应该能够将发现者的 MAC 地址与 ARP 的 MAC 地址相匹配。
您应该保留服务器地址并确保没有其他人可以使用它们(例如,在交换机上使用 DHCP 监听进行严格的 MAC/IP 绑定)。
严格来说,发现DHCP 客户端不应再拥有租约范围内的 IP 地址,因此无法对其进行 ping。尝试延长租约的客户端仅会发送请求。
如果网络链接暂时中断并很快恢复,某些客户端会表现出这种行为 - 它们会继续使用以前的 IP 地址,同时仍使用 DHCP 发现来重新检测子网。因此,您看到的效果也可能表明您应该排除布线问题。