如何从任意客户端查找 DHCP 租约信息?
Posted
技术标签:
【中文标题】如何从任意客户端查找 DHCP 租约信息?【英文标题】:How to find DHCP lease information from an arbitrary client? 【发布时间】:2016-04-21 17:22:57 【问题描述】:我正在编写 Win32 API (C++) 代码来查询网络以获取某些信息。其中一条信息是 DHCP 租用结束时间。我能够从GetIpNetTable
(和/或GetIpNetTable2
)函数中获得我需要的大部分信息;但是在谷歌、MSDN、*** 的大量搜索之后,我找不到从任意客户端获取所有租约信息的方法(此代码不在服务器上运行)。我熟悉GetAdaptersInfo
函数,但它只检索当前机器的信息,而不是网络上的所有机器。有谁知道如何从任意客户端映射出网络的所有 DHCP 租用信息?
【问题讨论】:
一台机器无法检索另一台机器的租约信息。只有 DHCP 服务器拥有该信息,并且每台机器只知道自己的租约。 DHCP 协议中没有任何内容可以查询有关另一台机器的租约信息。您必须在每台机器上运行自己的软件,然后连接到该软件并让它向您报告其本地机器的租约。 【参考方案1】:您可以通过实施只读 DHCP 服务器来做到这一点。客户端将发送 DHCPDISCOVER 消息作为您可以接收的广播(在 UDP 端口 67 上)。响应的 DHCP 服务器将广播回 DHCPOFFER,包括客户端的 MAC 地址、相关 IP 信息和租用时间。如果客户端接受这些设置,它现在将广播 DHCPREQUEST 消息,以便您的只读服务器知道客户端将(尝试)使用 DHCPOFFER 信息。您看不到来自服务器的 DHPCACK 确认,但如果客户端出现故障,它将发送一个新的 DHCPDISCOVER。通过这种方式,您可以构建一个 DHCP 信息表,包括本地客户端的租用时间。
【讨论】:
以上是关于如何从任意客户端查找 DHCP 租约信息?的主要内容,如果未能解决你的问题,请参考以下文章