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


28

私が達成しようとしているのは、コールドスタート、ゼロ状態のDHCPリース取得dhclientすることです住所)。ネットワーク構成の問題をデバッグするためにこれが必要です。

私が試してみました:

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

しかし、これらの手順の後でも、DHCPDISCOVERのログに、すぐにDHCPREQUESTが表示されます。 まだ覚えアドレス。

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


あなたはそれを理解しましたか?私も同じ問題に直面しています。NetworkManagerの下にもリースファイルがあります。私もそれらを削除しました。何らかの理由で、まだ古いアドレスが取得されます。
-18:38に

回答:


18

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

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

1
これを行ったとき、新しいリースを取得しましたが、システムがIPアドレスを使用していないようです。名前または関連するIPアドレスをpingしようとすると失敗します。ifconfig現在のアドレスの確認に使用する場合、それを固定できます。
TafT

rmパーツを変更すると、この作業ができます(これがないと、以前のリースが使用されました:dhclient -r -v eth0 && rm /var/lib/dhcp/dhclient* ; dhclient -v eth0
davejagoda

6

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

/var/lib/dhcp/dhclient.leases

私のコンピューターでは、ここにリースが保存されています。


2

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

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


それをありがとう!ログに常に DISCOVER、REQUEST、OFFER、ACK 表示される理由がわかりません。シーケンスが意味をなさないためです。それが実際に何が起こるかではないことを知っているだけで、自分の問題を理解する上で私はかなり前に進みます。だから、私のマシンはDHCPOFFER私が望まないIPを取得してから「OK」と言っていますが、それを強制的に他のものを取得しようとすると、サーバーが言うとDHCPNACK、ネットワークがまったくなくなります。推測では、サーバー上の予約は間違ったMAC用です。
-Auspex

私が考えることができる唯一のことは、あなたのISPがあなたにそれらを鳴らして伝えることなくあなたのMacを変更することを許可している場合、/ etc / network / interfacesの「hwaddress ether xx:xx:xx:xx:xx:xx」を変更することですそして、あなたのケーブルモデムがその場でMACを代用していない場合、サーバーはあなたを新しい誰かと見なし、空いているIPリースを提供するはずです。
マット

問題は、空いているIPを提供していことです。そして、外部DNSがそのDNSを指していたため、予約されていると思われるものを強制的に提供しようとしました。そこで、ネットワーク管理者に実際のMACアドレスを送信し、そのMACのIPを本当に予約しているかどうかを尋ねました。
-Auspex

1

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

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

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

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

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

それが役に立てば幸い :)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.