【问题标题】:How to force ALL of the DHCP Clients to renew?如何强制所有 DHCP 客户端更新?
【发布时间】:2015-03-07 16:32:32
【问题描述】:

是否有任何网络广播调用或可以强制所有连接的 DHCP 客户端立即更新其地址的东西?

如果没有,为什么不呢?毫无疑问,DHCP 管理员从它诞生之日起就需要此功能。如果没有普遍的客户端自动化,这使得在大型网络上更改路由器地址变得非常困难。

【问题讨论】:

  • 由于多种原因不重复。主要的问题是我要求强制更新网络中的所有客户端,而这个问题只是询问一个。而且答案也不一样。我的问题的答案是完全否定的,而另一个问题的答案是“有时”。
  • 决定稍微澄清一下这个问题。

标签: dhcp renewal


【解决方案1】:

没有letting the network down and up at the client network interface是不可能的。

理论上,DHCP 服务器可以向所有连接的客户端发送 FORCERENEW 消息。 FORCERENEW 描述于RFC3203。 (另见https://serverfault.com/a/569869/107832

可惜大名鼎鼎的ISC DHCP Server不支持:

RFC 3315 中的section 19.4.1 状态@ 重新配置消息。但是,这仅适用于 IPv6。 A message 声明 DOCSIS 3.0 “需要 RFC3315 中指定的重新配置支持(针对 DHCPv6)”

【讨论】:

  • ISC DHCP 是否支持 DHCPv6 Reconfigure 消息?
  • 检查 ISC DHCP 4.3.1 的 dhc6.c 中的客户端源代码,答案是合格的,@ToddFreed。在 [tools.ietf.org/html/rfc3315] 的第 14 节中,它实现了 1..40 的整数范围,而不是 -0.1..0.1 的浮点范围。但在所有意义上和目的上,代码看起来都支持重新配置消息。
  • 这值得扩展,这里有一些源代码摘录,在一个新的答案中。我会赞成,这个问题仍然有很多观点。
  • 现在这是一个“著名的问题”,新访问者不断增加(我认为每天大约 18 个)。我认为仅此一项就掩盖了“用户没有真正的兴趣”的说法
  • 天哪,你会认为拥有 37k 的浏览量你会得到比这更多的支持。
【解决方案2】:

这不是直接可能的 - DHCP 发出一个带有租约的 IP 地址。该租约告诉客户它“有效”多长时间,之后必须续订。通常 - 它会更新相同的 IP,但这是 DCHP 协商发生的时间点。

强制网段上的每台机器进行更新是创建拒绝服务攻击的一种非常好的方法。

但是,您可以在过渡到新的网络拓扑时将租用时间缩短到几分钟。实际上,这将意味着一次小中断,但无论如何您都会通过重新获取多个 IP 来实现。

【讨论】:

  • 因此您需要提前计划 - 时间上至少与您的租赁设置一样长。那是皇家的痛苦。似乎应该有更好的方法。
  • 在每台机器上手动运行 release-renew。在小型网络中这很容易,而在大型网络中,无论如何您都应该将其作为有计划的更改来进行,所以没关系。
  • 客户端自动化并不像你想象的那么难——在任何规模的任何网络上,你都应该将它们放在域中(如果是 Windows),因此可以psexec 或使用 SSH 公私为 Unix 配置的密钥对。
【解决方案3】:

注意:这只是部分解决了 OP 的问题。

要仅强制所有 Wi-Fi DHCP 客户端更新其 DHCP 租约,您可以这样做。假设 Wi-Fi DHCP 客户端连接到您路由器的 SSID,并且您的路由器管理界面支持这些功能。

  • 禁用 DHCP 服务器
  • 关闭 2.4G 和 5G Wifi
  • 重新启用 Wifi 网络
  • 重新启用 DHCP 服务器

我通过通过以太网连接到路由器的客户端使用 WebUI。

【讨论】:

  • 为什么这个答案对我有帮助:Android 6.0 设备(摩托罗拉)坚持使用错误的 DHCP 租约,该租约已在 isc-dhcp-server 上消除。另一种方法是将移动设备置于飞行模式;关闭isc-dhcp-server;清理 DHCP 租约 (serverfault.com/questions/739022/…) ;再次启动服务器;关闭飞行模式。
  • 问题:重启路由器不是更快/更容易吗?
  • @J.ScottElblein 重启路由器可能不会强制 DHCP 客户端更新其 DHCP 租约,因为客户端可能会保留其 DHCP 分配的 IP,直到租约到期时间
【解决方案4】:

我设法通过关闭 dhcpd 服务、删除 /var/lib/dh​​cpd/dhcpd.leases 文件并重新启动守护程序来删除所有租约。然后您必须让每台设备从 DHCP 服务器获取 IP 地址。对于某些设备,只需简单的电源循环即可。

【讨论】:

  • 这最终破坏了我的 DHCP 服务器。不会再发租约了。 :( 错误是没有这样的文件或目录,它没有自己重新制作文件。当我重新制作它时,它不会写入它,我猜是权限问题。CentOS7
  • 更安全的方式:systemctl stop dhcpd ; cp /var/lib/dhcpd/dhcpd.leases /var/lib/dhcpd/dhcpd.leases.backup ; > /var/lib/dhcpd/dhcpd.leases ; systemctl start dhcpd
【解决方案5】:
psexec \\\computername ipconfig /renew

【讨论】:

  • 您能解释一下为什么以及如何回答这个问题吗?
  • 这仅适用于您能够远程访问的 Windows 机器。
猜你喜欢
  • 1970-01-01
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
相关资源
最近更新 更多