Linux は長時間のダウンタイム後も DHCP を自動回復しますか?

Linux は長時間のダウンタイム後も DHCP を自動回復しますか?

私は、IP アドレスに DHCP を使用するように構成された CentOS 6/7 システムをいくつか持っています (非実稼働、実験目的)。先週、大規模なネットワーク障害が発生し、それらのシステムが IP アドレスを失い、DHCP クライアントが終了したことがわかりました。再試行が多すぎたか、長すぎたためだと思います。

何ですかちゃんとした永久に回復を試みるようにする方法はありますか? これを実行できる DHCP クライアント設定はありますか? または、1 時間ごとに '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

まだ適切な方法を探しているところなので、これが私の質問に対する正しい答えではないと思います。

答え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回だけ試行します。manページから

-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.

関連情報