中小企業ネットワーク上のLinuxサーバーには静的DHCPリースを使用しています。最近、DHCPサーバーに何か問題が発生し、すべてのLinuxサーバーは、ネットワーク上でDHCPサーバーを見つけることができなかったため、IPアドレスを失ってしまいました。
1日後の早送りで、DHCPサーバーはバックアップされて実行されていましたが、サーバーはDHCPサーバーを探していなかったため、IPアドレスがなく、取得しようとしませんでした。結局、手動で物理的に各サーバーに移動してネットワークを再起動する必要がありました。その時点で、サーバーはすぐにIPアドレスを取得しました。
将来この問題を防ぐためにサーバーでできることはありますか? DHCPサーバーがダウンした後、サーバーはしばらくの間IPアドレスを更新しようとした可能性がありますが、最終的には試行を停止したようです。
明らかに解決策はバックアップDHCPサーバーを用意することですが、それがオプションではないふりをしてみましょう。サーバーにIPを無期限に更新しようとし続けるように強制する方法はありますか?
サーバーはCentOSとFedoraの混合です。
彼らはAPIPAアドレッシングに戻りましたか? 169.254.0.0/16?これは、/ etc/sysconfig/networkの NOZEROCONF = Yes ディレクティブで無効にできます。
また、DHCPリースを延長して、DHCPサーバーの妥当な停止期間の2倍になるようにする必要があります。クライアントは通常、更新を試みる前にリース期間の半分を待ちます。数日おきにチェックインするだけの場合は、サーバーを修正するか、新しいサーバーを立ち上げる余裕があります。
完全に予約されたDHCPを本番環境で実行します。信頼性の問題ではありませんでした。実際、静的IPアドレス指定は、人々がしがみつく最後の手動操作の1つであり、主に時代錯誤であると私は主張します。私は正式な分析を行っていませんが、3年間でDHCP関連の問題が1つありました。これは、「今すぐリリース」スクリプトを誤って実行した管理者の太った指でした。 「おっと」の原因のヒストグラムでは、DHCPはロングテールにあります。
誰もがWindowsでスラグを好むことは知っていますが、APIPAが無効でDHCPが有効になっている場合、Windowsマシンは、最後のDHCP割り当てが何であれ保持することにまったく粘り強くなります。数か月のモスボールの後でマシンの電源を入れましたが、wiresharkはDHCPによって割り当てられた最後のアドレスを要求していることを示しています。
サーバーには静的IPアドレスを使用し、パーソナルコンピューターにはDHCPを使用しています。
DHCPはデバイスのIPアドレスを変更しないようにする努力をしていると思いますが、これは保証されません。リースの満了時に、DHCPによってコンピュータに別のIPアドレスが割り当てられる可能性があります。私はいつも、これが就業日の途中でサーバーに起こるのはよくないことだと思っていました。
/ etc/sysconfig/network-scripts/ifcfg-ethXでPERSISTENT_DHCLIENT=yes
を設定できます。これにより、RedHatスタイルのシステムでは、デフォルトでdhclientに送信される-1
フラグが効果的に削除されます。 man dhclient
から:
-1フラグにより、dhclientはリースの取得を1回試行します。失敗した場合、dhclientは終了コード2で終了します。
ただし、停電が発生し、スイッチが起動する前にサーバーがオンラインに戻った場合、これは機能しません https://bugzilla.redhat.com/show_bug.cgi?id=234075 。基本的に、そのバグは、ifupがdhclientを実行する前に、最初にインターフェイスにリンクが存在するかどうかを確認することを示しています。リンクなし-> dhclientなし。
私の解決策は、これをrootのcrontabに追加することです。
*/5 * * * * ifconfig eth0 | grep -q "inet addr:" || ifup eth0 2>&1 >/dev/null
また、これを/etc/dhcp/dhclient.confに追加して、迅速なリカバリを実現します。
retry 10
timeout 10
リース時間は、クライアントではなくサーバーによって設定されます。サーバーが割り当てられているスコープのリース期間を長くすることもできますが、それは実際には単なるバンドエイドです。実際には、冗長DHCPサーバーをセットアップするか、できればサーバーを静的に割り当てられたアドレスに移動する必要があります。