如何让 dhclient 忘记它的最后一个 DHCP 租约?

uli*_*tko 34 network-manager networking dhcp

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

我试过了:

  • 使用 刷新当前租约dhclient -r,断开当前网络管理器连接;
  • 杀死任何剩余物dhclientdnsmasq进程;
  • 清理/var/lib/dhcp/目录,其中应该包含客户端租用数据库;
  • sudo restart network-manager.

但即使在这些步骤之后,我在日志中看到 DHCPDISCOVER 紧随其后的是 DHCPREQUEST 不知何故仍然记得地址。

显然,操作系统正在以其他方式存储地址,而我已经没有想法了。来自社区的任何帮助?

小智 22

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

dhclient -r -v eth0 && rm /var/lib/dhcp/dhclient.* ; dhclient -v eth0
Run Code Online (Sandbox Code Playgroud)

  • 当我这样做时,我获得了新的租约,但该 IP 地址似乎尚未被系统使用。如果我尝试 ping 名称或相关 IP 地址,则会失败。如果我使用“ifconfig”检查当前地址,我可以确定它。 (2认同)

the*_*eye 7

DHCP 客户端程序将租约写入文件。只需删除文件并重新启动网络管理器即可。

/var/lib/dhcp/dhclient.leases

这是我的电脑中存储租约的地方。


Sey*_*mad 1

通常情况下,dhclient -r应该可以解决问题;但如果这对你不起作用,我在这里找到了解决方案:

+ 更新 IP 地址一次:

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

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

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

希望能帮助到你:)