web-dev-qa-db-ja.com

シャットダウン中のDHCPリリースをどのように防止しますか?

私は現在Ubuntu14.04を使用していますが、これはさまざまなディストリビューションに適用できると期待しています。

シャットダウン中のDHCPの解放を防ぎ、リースの有効期限が切れるか、起動時にDHCPの更新(必要な場合)を選択したいと思います。

これは可能ですか?

編集:私は(以前は)ドメイン名の解決に応じて異なる応答をする分散アプリケーションを持っています。マシンはオンラインであるがアプリケーションが利用できない場合、他のマシンのアプリケーションはそれを利用できないと認識します。ただし、IPが(シャットダウンを介して)解放された場合、アプリケーションはIPを使用できないことを認識できませんが、ハングするか、エラーをスローします。

残念ながら、エラーを再現するための設定ができなくなっており、エラーがハングしたかスローされたか、およびエラーが何であったかを思い出せません。

6
neverendingqs

ほとんどのunixdhcpクライアントは、常に自分自身の後でクリーンアップし、終了時にリースを解放するという点で礼儀正しいです。ほとんどの場合、これにより、サーバーがリースがアクティブに使用されているかどうかを簡単に判断できるため、状況が改善されますが、プロトコルが機能するためにこれは必須ではありません。あなたが望むことをきれいに行うための3つの方法があります(そしてちょうどうまくいく1つの醜い方法)。

  1. dhcpクライアントを作成する
  2. コマンドラインオプションを使用してdhcpクライアントを変更し、動作を変更します。
  3. 新しい動作をするためだけにdhcpクライアントを変更する
  4. -9を殺す

Kill-9アプローチが導入する2つの競合状態があります

  1. dHCPクライアントを強制終了した後、シャットダウンが完了する前にリースが期限切れになった場合は、期限切れのリースを使用します。
  2. 更新中にdhcpクライアントを強制終了した場合、動作は定義されていません。

これが機能する理由:有効なリースを持つdhcpクライアントの通常の動作は、ほとんどの時間をスリープ状態で過ごし、リースを更新するか、リースを解放してシャットダウンするためにのみウェイクアップすることです。シャットダウンの信号を受信すると、リースを解放して終了します。シグナル-9はキャッチできず、リースリリースをバイパスして、クリーンアップなしで即座に終了します。ほとんどの(すべてではありませんが)dhcpクライアントは、キャッシュ内の有効なリースで開始された場合、リースを更新するだけです。

4
hildred

DHCPリースを取得すると、そのリースは有効期限が切れるまで特定のMAC-IDにバインドされます。マシンの電源を切るかどうかは重要ではありません。重要なのは、リースの期限が切れる前にIPアドレスを再要求するかどうかです。

さらに、most DHCPサーバーは、「ソフト」リースの有効期限で動作します。つまり、リースが正式に期限切れになると、特定のアドレスを別の場所に積極的に配布する必要がある場合を除いて、キャッシュに保持されます。 、またはキャッシュをクリーンアップするための指示を受け取ります。

(注:一部のISPは、セキュリティ対策としてこの機能を積極的にオフにしていますが、その点でどれほど効果的かは議論の余地がありますが、顧客が想定外のときに安価で独自のサーバーを実行できないようにしています。後者を達成しようとしているので、dyndnsを調べたいと思うかもしれません。)

起動するたびに新しいIPアドレスを取得する場合は、DHCPサーバーの設定を調べるか(管理者アクセス権がある場合)、少なくともそれらについて質問することをお勧めします(そうでない場合)。

1
SHW

DHCPクライアントを強制終了してリースが解放されないようにする代わりに、システムをシャットダウンする前にネットワークインターフェイスをシャットダウンすることをお勧めします(つまり、ifconfig eth0 downなど)。

0