web-dev-qa-db-ja.com

dhclientに最後のDHCPリースを忘れさせる方法は?

私が達成しようとしているのは、コールドスタート、ゼロステートDHCPリースを取得するためです。これは、dhclientを完全な検出および構成プロセス(DHCPDISCOVER–DHCPOFFER–DHCPREQUEST–DHCPACKとして強制することを意味します)記憶されたアドレスを使用するショートカットのDHCPREQUEST–DHCPACKサイクルとは対照的です)。ネットワーク構成の問題をデバッグするためにこれが必要です。

私が試してみました:

  • 現在のリースをdhclient -rでフラッシュし、現在のNetwork Manager接続を切断します。
  • 残りのdhclientおよびdnsmasqプロセスを強制終了します。
  • /var/lib/dhcp/ディレクトリのクリーニング。クライアントリースデータベースが含まれていると思われます。
  • Sudo restart network-manager

しかし、これらの手順の後でも、DHCPDISCOVERのログにDHCPREQUESTが続き、何らかの形でstill記憶されたアドレスが表示されます。

明らかに、OSはどうにかしてアドレスを保存しているので、アイデアが尽きました。コミュニティからの助けはありますか?

27
ulidtko

これは私のためにトリックを行いました(eth0の場合、Sudo suから実行):

dhclient -r -v eth0 && rm /var/lib/dhcp/dhclient.* ; dhclient -v eth0
17
Anton Kiselev

DHCPクライアントプログラムは、リースをファイルに書き込みます。ファイルを削除して、networkmanagerを再起動するだけです。

/var/lib/dhcp/dhclient.leases

これは、私のコンピューターでリースが保存される場所です。

6
thefourtheye

表示されているのは、IPを記憶しているマシンではありません。 syslogにはDISCOVER REQUEST OFFER ACKが表示されますが、これは発生した順序ではありません。実際にDISCOVER OFFER REQUEST ACKを行って、PCとアップストリームDHCPサーバー間のトラフィックを傍受できることを確認しました。 DISCOVERを送信し、サーバーがOFFERを返し、リクエストのIPをOFFERから取得しました

ただし、「dhclient -r」を行うと、dhclientはユニキャストRELEASEを送信し、一部のISPはDHCPサーバーへのマルチキャストパケットのみを受け入れるため、サーバーに関する限り、RELEASEは届きません。有効であるため、オファーで同じIPが返されました。

2
Matt

通常、dhclient -rがトリックを行うはずです。しかし、それがうまくいかない場合は、解決策を見つけました ここ

+ IPアドレスを1回更新する:

注:この例では、インターフェースeth0を使用します。インターフェイスは、DHCPが稼働するように構成する必要があります。

  • ターミナルを開き、Sudo suを実行してルートにします。
  • ifconfigと入力して、DHCPから受け取った現在のIPアドレスを表示します。
  • dhcpcd -kと入力して、適切な信号をdhcpcdに送信します(apt-get install dhcpcdを実行してdhcpcdをインストールする必要がある場合があります)。
  • ifup eth0と入力して、インターフェイスを元に戻します。
  • ifconfigと入力して、新しいIPアドレスを表示します。

IPアドレスを毎回更新するセクションもありますが、説明はRPMベースのディストリビューションについてでした(UbuntuのようなDebianベースのディストリビューションとは対照的です)。

:)に役立つことを願って

0
Seyed Mohammad