我在本地网络中遇到了奇怪的行为。我们有两个设备,它们获得相同的 IP 地址。经过调查,我发现 IP 地址超出了路由器上主 DHCP 服务器上配置的范围。
我用 nmap 扫描了网络,查找打开的 UDP 端口 67,并发现了另外 9 个 DHCP 服务器。它们大多数位于我同事的 Windows 计算机上,有些位于我们这里的嵌入式 Linux 设备上。我猜并非所有服务器都在分配 IP 地址并导致问题,但至少有一个肯定存在。
调试这种情况的最有效方法是什么?
我在本地网络中遇到了奇怪的行为。我们有两个设备,它们获得相同的 IP 地址。经过调查,我发现 IP 地址超出了路由器上主 DHCP 服务器上配置的范围。
我用 nmap 扫描了网络,查找打开的 UDP 端口 67,并发现了另外 9 个 DHCP 服务器。它们大多数位于我同事的 Windows 计算机上,有些位于我们这里的嵌入式 Linux 设备上。我猜并非所有服务器都在分配 IP 地址并导致问题,但至少有一个肯定存在。
调试这种情况的最有效方法是什么?
在获得重复 IP 的 DHCP 客户端上,首先查看 DHCP 提供的选项。每个 DHCP 服务器都有可能回复指向自己的内容,如路由器/网关或名称服务器或其他内容。
如果这没有帮助,请选择一个可以进行维护的时间窗口,可能在非工作时间,因为这会中断正常服务。
在您批准的 DHCP 服务器上,将租约时间设置为较低的时间,例如 5~10 分钟,以便更容易刷新内容。
然后关闭正确的 DHCP 服务器,并使用测试客户端执行 DHCP 请求。在另一个窗口中运行数据包嗅探器,如 wireshark,或者理想情况下是 tcpdump:
在这种情况下,
66:ed:6e:c6:9d:56
是客户端的 MAC 地址,并且 DHCP 回复来自10.28.1.1
与 DNS 和 NTP 服务器等相同的 IP 功能。一旦您有了 IP 地址,请在超时之前快速检查测试主机的 ARP 表并获取 MAC 地址。
所以现在您知道 00:0d:b9:35:29:c4 是给出 DHCP 回复的 IP 的硬件 MAC 地址。
最后,找出 IP/mac 地址在网络上的位置。对 IP 进行简单的主机名查找可能会告诉你一些有用的信息:
或者
或者,如果这对您来说毫无意义,则必须使用 OUI 查找(例如https://www.wireshark.org/tools/oui-lookup.html) 来追溯 MAC 地址。
对我来说,它返回“00:0D:B9 PC Engines GmbH”,所以我知道它是 APU 或 ALIX 单板 PC。您可能会得到对您有意义的结果,或者您可能会得到像“hp inc”这样宽泛的结果
下一步是查看交换机 MAC 查找表,找出此 MAC 地址连接到哪个物理端口。这假设您的网络中至少有一个受管理的以太网交换机并且可以登录到它。
这完全取决于您拥有哪种交换机,并且不同生态系统之间的差异很大。以下是 Juniper,显示该设备位于千兆端口 19 上:
在 Hasivo 交换机上使用相同的命令,显示设备在端口 te1 上(这需要大写的 MAC)
如果您只有非托管交换机,则唯一的选择是反复 ping IP,同时拔掉 LAN 的部分电源,直到 ping 停止。如果远程主机不响应 ICMP ping,请使用
arping
需要 root 权限的命令:最后,一旦您找到了神秘的 DHCP 服务器,请向负责该服务器的人友好地解释问题是什么以及为什么它给您带来了麻烦。
我多年来在同一个网络上运行了两个不相连的 DHCP 服务器,从未出现过问题。解决方案是让系统管理员(我)确保两个服务器都提供具有正确值的同一组选项,并且每个服务器都有自己的独立范围作为不重叠的动态池。我还设置了许多 DHCP 预留,因此许多主机始终会获得相同的“静态”IP,但我可以在两个 DHCP 服务器中更改名称服务器等选项。
你可以做到这一点——让我们知道你的进展如何。
在从恶意 DHCP 服务器接收 IP 地址的客户端上,输入
ipconfig /all
cmd。有一行显示 DHCP 服务器。从那里开始查找。