私が達成しようとしているのは、コールドスタート、ゼロステート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はどうにかしてアドレスを保存しているので、アイデアが尽きました。コミュニティからの助けはありますか?
これは私のためにトリックを行いました(eth0の場合、Sudo su
から実行):
dhclient -r -v eth0 && rm /var/lib/dhcp/dhclient.* ; dhclient -v eth0
DHCPクライアントプログラムは、リースをファイルに書き込みます。ファイルを削除して、networkmanagerを再起動するだけです。
/var/lib/dhcp/dhclient.leases
これは、私のコンピューターでリースが保存される場所です。
表示されているのは、IPを記憶しているマシンではありません。 syslogにはDISCOVER REQUEST OFFER ACKが表示されますが、これは発生した順序ではありません。実際にDISCOVER OFFER REQUEST ACKを行って、PCとアップストリームDHCPサーバー間のトラフィックを傍受できることを確認しました。 DISCOVERを送信し、サーバーがOFFERを返し、リクエストのIPをOFFERから取得しました
ただし、「dhclient -r」を行うと、dhclientはユニキャストRELEASEを送信し、一部のISPはDHCPサーバーへのマルチキャストパケットのみを受け入れるため、サーバーに関する限り、RELEASEは届きません。有効であるため、オファーで同じIPが返されました。
通常、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ベースのディストリビューションとは対照的です)。
:)
に役立つことを願って