强制Linux服务器在丢失IP地址时自动尝试获取IP地址

我们在小型企业networking上为我们的Linux服务器使用静态DHCP租约。 最近,DHCP服务器发生故障,所有的Linux服务器都失去了IP地址,因为他们在networking上找不到DHCP服务器。

快一天后,DHCP服务器恢复正常运行,但服务器似乎没有再寻找DHCP服务器,所以他们没有IP地址,也没有试图获得。 我最后不得不手动和物理地转到每个服务器并重新启动networking,在这一点上,他们会马上得到他们的IP地址。

有什么我可以做的服务器,以防止在未来这个问题? 我确信在DHCP服务器closures后,服务器可能会试图让IP地址更新一段时间,但最终他们显然只是停止尝试。

显然一个解决scheme是有一个备份DHCP服务器,但让我们假装不是一个选项。 有没有办法强制服务器不断尝试无限期更新其IP?

这些服务器是CentOS和Fedora的组合。

他们是否恢复了APIPA的地址? 169.254.0.0/16? 您可以使用/ etc / sysconfig / network中的NOZEROCONF = Yes指令来禁用该指令。

您还应该将DHCP租期扩展为DHCP服务器的最长合理停机时间间隔的两倍。 客户在尝试续约之前通常会等待一半的租期, 如果他们每隔几天只能登记一次,那么在修复服务器或者站立一个新的服务器上有相当大的余地。

我们在生产中运行完全保留的DHCP; 它不是一个可靠性问题。 事实上,我认为静态IP地址是人们最后一次手动操作之一,主要是时代错误。 我还没有做过正式的分析,但是在三年之内,我们遇到了一个与DHCP有关的问题,那就是一个pipe理员发现了一个“发布”脚本。 在“Oops”原因的直方图上,DHCP在长尾上出局。

我知道每个人都喜欢在Windows上融化,但是在APIPA被禁用和启用DHCP的情况下,Windows机器完全顽强地坚持着最后的DHCP分配。 几个月后,我已经启动了机器,wireshark显示他们要求最后一个DHCP分配的地址。

我使用服务器的静态IP地址,仅用于个人电脑的DHCP。

虽然我相信DHCP会尽力避免更改设备的IP地址,但这并不是保证 – 在租约到期时,计算机可能会被DHCP分配一个不同的IP地址。 我一直认为,在工作日中间发生这种情况对于服务器来说是件坏事。

您可以在/ etc / sysconfig / network-scripts / ifcfg-ethX中设置PERSISTENT_DHCLIENT=yes 。 这有效地移除了在RedHat风格的系统上默认发送给dhclient的-1标志。 从man dhclient

-1标志导致dhclient尝试一次获得租约。 如果失败,dhclient以退出码2退出。

但是,如果您的交换机出现断电并且服务器重新联机的情况,则由于https://bugzilla.redhat.com/show_bug.cgi?id=234075 ,这不起作用。 基本上这个bug说ifup首先在尝试运行dhclient之前检查接口上是否存在链接。 没有链接 – >没有dhclient。

我的解决scheme是将其添加到根的crontab:

*/5 * * * * ifconfig eth0 | grep -q "inet addr:" || ifup eth0 2>&1 >/dev/null

租赁时间由服务器设置,而不是由客户端设置。 您可以尝试增加您的服务器分配的范围的租赁期限,但这实际上只是一种创可贴。 你真的需要build立一个冗余的DHCP服务器,或者最好把你的服务器移动到静态分配的地址。