背景
多个嵌入式 Linux 设备通过以太网连接到网络。根据它们插入交换机上的端口,它们会获得相应的 DHCP IP 地址(每个端口存在于单独的 VLAN 上)。获取 DHCP 地址后,设备可以联系所有其他服务(NTP、FTP 服务器等)。这些设备不是唯一的,任何设备都应该能够插入任何端口(即不能使用静态 IP)。 dhclient.leases 文件更新以反映每 30 秒提供的新租约。
问题
如果设备正常重启,它们会保留其系统时间;然而,在某些情况下,所有设备都会长时间断电,嵌入式Linux系统将丢失其系统时间。在这种情况下,时间将恢复到 01/01/2011。我们对所发生情况的理论是 dhclient.leases 文件中的到期时间是未来的(因为它是在系统时间正确时获取的),因此设备将不允许获取另一个 DHCP 地址。由于它无法获取地址,因此无法获取 NTP 时间来更新系统时间,因此我们进入了先有鸡还是先有蛋的情况。有时我们可以解决这个问题,不断重置设备,直到最终获得租约。
问题
- 这是 dhclient 的预期行为吗?
- 如果 1. 的答案是不,是什么原因导致设备在长时间断电后无法获取 DHCP 地址?
- 是否有任何建议的修复、解决方法或配置更改可以帮助解决该问题?