CentOS > dhclientの設定

更新日 2015-01-15
広告
CentOS 5.5で、dhclientがDHCPDISCOVERを繰り返し送信するようにする方法を説明します。 eth0インターフェースを使って通信している場合は、/etc/sysconfig/network-scripts/ifcfg-eth0 に、以下の設定を追加します。
PERSISTENT_DHCLIENT=yes

これで、DHCPDISCOVERに対してDHCPOFFERが返されなかった場合に、DHCPDISCOVERを再送します。 ただし、CentOSのブート時にDHCPサーバがダウンしていると、延々とDHCP処理を行い続け、処理が先に進まなくなる可能性があります。

以下は詳細な説明です。

CentOS 5.5のdhclientは、デフォルトでは以下のような設定で実行されます。

/sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient-eth0.leases -pf /var/run/dhclient-eth0.pid eth0

ここで重要なのは-1オプションです。 -1オプションを指定すると、dhclientはDHCPDISCOVERを1回しかブロードキャストしません。 そして、その1回のDISCOVERにOFFERが返されないと、処理を終了します。

つまり、-1オプションを指定したdhclientは、DHCPサーバがしばらくダウンすると、処理を停止するということです。 こうなると、DHCPを利用しているマシンは、それまで割当てられていたIPv4アドレスを解放し、その後は再取得しません。

dhclientはネットワークインターフェースがリンクアップした際に、スクリプト(/etc/sysconfig/network-scripts/ifup-eth)から実行されます。ifup-ethの一部を抜粋します。

if [[ "${PERSISTENT_DHCLIENT}" =  [yY1]* ]]; then
  ONESHOT="";
else
  ONESHOT="-1";
fi;

つまり、変数PERSISTENT_DHCLIENTが [yY1]* であれば、変数ONESHOTは空文字になります(-1オプションは指定されなくなります)。 冒頭で ifcfg-eth0 スクリプトに PERSISTENT_DHCLIENT=yes を設定したのは、この理由からです。

広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system