我有几个CentOS 6/7系统(非生产,实验目的)已配置为使用DHCP作为其IP地址.上周发生了大规模网络中断,我发现这些系统丢失了IP地址,DHCP客户端已经终止.我想经过太多/太长的重试.
让它试图永远恢复的正确方法是什么?
是否有可以执行此操作的dhcp客户端设置?或者我应该每小时添加一个类似’ifup eth0’的cron条目?或者有更好的方法来做到这一点?
我知道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
仍然在寻找正确的方法,所以我认为这不是我的问题的正确答案.
解决方法
CentOS 6和7都应该接受/ etc / sysconfig / network-scripts / ifcfg *文件中的PERSISTENT_DHCLIENT选项.e.g.
# /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=dhcp PERSISTENT_DHCLIENT=yes ONTBOOT=yes DEVICE=eth0
这指示ifup-eth脚本在没有(默认)-1选项的情况下运行dhclient
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应该再次从dhclient.conf手册页重试(默认情况下每隔5分钟)
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.