如何使dhclient忘记其最后的DHCP租约?


28

我要实现的目标是获得冷启动,零状态DHCP租约,这意味着强制dhclient执行完整的发现和配置过程(DHCPDISCOVER-DHCPOFFER-DHCPREQUEST-DHCPACK,而不是使用已记住的快捷方式DHCPREQUEST-DHCPACK周期地址)。我需要它来调试网络配置问题。

我试过了:

  • 用刷新当前租约dhclient -r,断开当前的网络管理器连接;
  • 杀死任何剩余的东西dhclientdnsmasq过程;
  • 清理/var/lib/dhcp/目录,据说包含客户租赁数据库;
  • sudo restart network-manager

但是即使经过这些步骤,我仍然会立即在日志DHCPDISCOVER中看到紧随其后的DHCPREQUEST,但仍然以某种方式记住了地址。

显然,操作系统正在以其他方式存储地址,而我的想法已经用完了。社区有什么帮助吗?


你知道了吗 我也遇到了同样的问题。NetworkManager下也有租赁文件。我也删除了它们。由于某种原因,它仍然会选择旧地址。
摇动

Answers:


18

这对我有用(对于eth0,从运行sudo su):

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

1
完成此操作后,我获得了新的租约,但是系统似乎未使用该IP地址。如果我尝试ping通名称或相关IP地址,它将失败。如果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。在系统日志中,您会看到“发现请求报价确认”,但这并不是按发生的顺序进行。它实际上去了DISCOVER OFFER REQUEST ACK,以确认您可以嗅探PC和上游DHCP服务器之间的流量。您发送了DISCOVER,服务器发回了OFFER,您从OFFER那里获得了IP地址用于您的REQUEST

但是,您做的一切正确,当您执行“ dhclient -r”时,dhclient将发送单播RELEASE,并且某些ISP仅将多播数据包接收到其DHCP服务器,因此RELEASE从未到达那里,就服务器而言,您的租约仍在有效,因此它在报价中为您提供了相同的IP。


感谢那!我从来不明白为什么日志总是显示DISCOVER,REQUEST,OFFER,ACK;因为顺序从来没有道理。知道那不是真的会发生,使我在解决自己的问题上走了很长一段路。因此,我的机器正在获取DHCPOFFER不需要的IP,然后说“确定”,但是如果我强迫它尝试获取其他任何东西,则服务器说来DHCPNACK,最后我根本没有网络。猜测,服务器上的预留是针对错误的MAC的。
Auspex

我唯一能想到的是,您可以尝试在/ etc / network / interfaces中更改“ hwaddress ether xx:xx:xx:xx:xx:xx:xx”,前提是您的ISP允许您更改mac而不必打电话通知它们,并且您的电缆调制解调器没有即时替换其Mac,则服务器应将您视为新用户,并为您提供闲置的IP租约。
马特

问题是,这给我一个空的IP。我试图强迫它给我一个应该保留的地址,因为外部DNS指向了那个地址!因此,我向网络管理员发送了实际的MAC地址,并询问他是否真的为该MAC保留了IP。
Auspex

1

通常,dhclient -r应该做到这一点;但是,如果这对您不起作用,我在这里找到了解决方案:

+一次续订IP地址:

注意:在此示例中,我们将使用接口eth0。必须将接口配置为已启动并正在运行。

  • 打开一个终端并执行sudo suroot操作。
  • 键入ifconfig以显示您从DHCP收到的当前IP地址。
  • 键入dhcpcd -k以将适当的信号发送到dhcpcd(您可能需要通过安装dhcpcd apt-get install dhcpcd)。
  • 现在,通过键入来备份接口ifup eth0
  • 键入ifconfig以显示新的IP地址。

还有一个有关每次更新IP地址的部分,但说明是针对基于RPM的发行版(与基于Ubuntu的基于Debian的发行版相反)。

希望能帮助到你 :)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.