web-dev-qa-db-ja.com

Linuxは本当に長いダウンタイムの後にDHCPを自己回復しますか?

IPアドレスにDHCPを使用するように構成されたCentOS6/7システム(非実稼働、実験目的)がいくつかあります。先週、大きなネットワークの中断があり、それらのシステムがIPアドレスを失い、DHCPクライアントが終了したことがわかりました。再試行が多すぎる/長すぎると思います。

適切な永久に回復しようとする方法は何ですか?これを実行できるdhcpクライアント設定はありますか?または、1時間ごとに「ifupeth0」のようなことを行うcronエントリを追加する必要がありますか?それとも、これを行うためのはるかに良い方法がありますか?

私はCentOS6とCentOS7がこれらのことを異なる方法で行うことを知っており、これら両方の場合の答えを探しています。


更新:

今のところ、CentOS 6の特定の状況で機能するように見えるこのスクリプト(/etc/cron.hourly/に配置)を作成しました。これはおそらく最善の解決策ではありませんが、「自分のマシンで機能します」。

#!/bin/bash

IF=eth0

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

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

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

6
Niels Basjes

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スクリプトに(デフォルト)-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回試行します。マニュアルページから

-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.
3
Brian Keffer