如何强制客户端静态租约(IP 地址)立即更新/更改?

如何强制客户端静态租约(IP 地址)立即更新/更改?

我的路由器运行 dd-wrt,它为 DHCP 客户端分配静态租约。所有客户端都使用 DHCP。

我最近更改了要分配给客户端的 IP 地址。但客户端不会自动更新。所有客户端都是 Linux。使用“dhclient -r”似乎没有任何区别——客户端会保留老的地址(除非我重新启动它和路由器)。

我以前使用其他路由器(例如 Netgear)时也遇到过同样的问题。我以前以为这纯粹是 Netgear 固件的问题,但现在我相信我只是不知道路由器中静态租约更改时更新 IP 地址的正确程序或规则。我正在寻找一些解释。

我发现,如果我关闭所有设备(包括路由器和所有客户端),然后启动路由器,然后启动客户端,那么所有设备都会获得正确的 IP 地址。所以我知道如何解决这个问题。但除此之外,即使我等待租约到期足够长的时间,地址似乎也不会改变。似乎只要设备保持与路由器的连接,其 IP 地址一旦分配就不会改变。

我在不同情况下都见过这种行为(主要是 Netgear 路由器)。IP 最初是动态分配还是静态分配(DHCP 静态租约)似乎并不重要。当一切仍在运行时,它不会更新。

基本上,我发现必须关闭网络上的每个客户端才能将 IP 地址更新到新方案真的很麻烦。任何人都对此有见解。我希望如果我更好地理解它,我会找到一种更方便的方法来处理它。

(这个问题很小,但却困扰了我好几年。这次,我不想再用老办法来处理它,而是想学点新东西。)

答案1

听起来您的 DHCP 服务器不认为自己对所在网段具有权威性,因此不会发送 DHCPNAK,这将指示客户端放弃其旧租约并进入 init 状态。假设您在同一网段上没有两个 DHCP 服务器,请将 dd-wrt ​​配置为具有权威性,租约应该会开始被放弃。

答案2

我在网上找到了一些答案,它们指出如果 DHCP 客户端已经连接,则必须手动删除它们。http://www.dslreports.com/forum/r19261599-DD-WRT-Unable-to-set-static-ip-address-wotj-DD-WRT-firmware

虽然这不起作用,但它让我尝试拔下并重新连接路由器,以使所有租约消失并迫使客户端请求新的租约。这对我来说很有效。

答案3

当我更换设备并且必须更新静态租约上的 mac 地址时,我遇到了这个恼人的问题很长一段时间。

重新启动路由器总是有效的,但这不是最优雅的解决方案。

对我来说,诀窍是转到 DHCP 客户端并删除 2 个相关的静态租约:

在此处输入图片描述

这似乎导致 DHCP 服务器“忘记”旧的静态租约,并且当新客户端重新启动/请求 IP 地址时,它会获得正确的 IP 地址。

相关内容