
私は、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.