Linux 在长时间停机后可以自行恢复 DHCP 吗?

Linux 在长时间停机后可以自行恢复 DHCP 吗?

我有几个 CentOS 6/7 系统(非生产、实验目的),已配置为使用 DHCP 作为其 IP 地址。上周发生了一次严重的网络中断,我发现这些系统丢失了 IP 地址,DHCP 客户端已终止。我猜是重试次数太多/时间太长造成的。

是什么恰当的让它永远尝试恢复的方法是什么?是否有可以执行此操作的 dhcp 客户端设置?或者我应该添加一个 cron 条目,每小时执行类似“ifup eth0”的操作?或者有更好的方法来做到这一点?

我知道 CentOS 6 和 CentOS 7 做这些事情的方式不同,我正在寻找这两种情况的答案。


更新:

目前我已经创建了这个脚本(我将其放在 /etc/cron.hourly/ 中),它似乎在 CentOS 6 的特定情况下有效。这可能不是最好的解决方案,但它“在我的计算机上有效”。

#!/bin/bash

IF=eth0

ifconfig ${IF} | fgrep 'inet addr' > /dev/null

if [ $? -ne 0 ];
then
    echo "Network is dead, trying restart"
    ifup ${IF}
fi

仍在寻找正确的方法来做到这一点,所以我不认为这是我的问题的正确答案。

答案1

CentOS 6 和 7 都应接受 /etc/sysconfig/network-scripts/ifcfg* 文件中的 PERSISTENT_DHCLIENT 选项。例如

# /etc/sysconfig/network-scripts/ifcfg-eth0 
BOOTPROTO=dhcp
PERSISTENT_DHCLIENT=yes
ONTBOOT=yes
DEVICE=eth0

这将指示 ifup-eth 脚本运行 dhclient,而无需(默认)-1选项

if is_true "${PERSISTENT_DHCLIENT}"; then
    ONESHOT="";
else
    ONESHOT="-1";
fi;
...
DHCLIENTARGS="${DHCLIENTARGS} ${ONESHOT} -q ${DHCLIENTCONF} -lf ${LEASEFILE} -pf /var/run/dhclient-${DEVICE}.pid"

使用该选项,dhclient 将尝试一次。来自手册页

-1 Try once to get a lease. One failure, exit with code 2.

如果没有该选项,dhclient 应该偶尔重试一次(默认每 5 分钟一次),请从 dhclient.conf 手册页重试一次

retry time;

The retry statement determines the time that must pass after the client 
has determined that there is no DHCP server present before it tries 
again to contact a DHCP server. By default, this is five minutes.

相关内容