djoproject Asked: 2020-10-05 09:50:19 +0800 CST2020-10-05 09:50:19 +0800 CST 2020-10-05 09:50:19 +0800 CST 如何在 Linux 上很好地进行邻居发现请求? 772 我正在寻找一种方法来检索 LAN 网络上特定主机的 MAC 地址。我知道它的 IPv6 地址。理想情况下,我想要一种方法来触发 Linux 内核为我执行邻居请求,然后我可以通过命令检索主机 MAC 地址ip -6 neighbour 现在,我发现触发邻居请求的唯一方法是尝试在随机端口上建立与主机的 TCP 连接。但我不觉得这个解决方案真的很漂亮: curl --connect-timeout 1 "http://[fe80::1234%eth0]:12345" linux ipv6 ndp icmpv6 2 个回答 Voted ephemient 2020-10-05T15:16:31+08:002020-10-05T15:16:31+08:00 ndisc6 -1 fe80::1234 eth0 当然,替换eth0为正确的接口名称。 Best Answer John Mahowald 2020-10-06T15:36:45+08:002020-10-06T15:36:45+08:00 由于您要求将其反映在内核的邻居中,并且您不愿意安装软件,请尝试 ICMP echo: ping -c 1 fe80::1234%eth0 你尝试什么协议并不重要,只要它是基于 IP 的。 如果您愿意安装软件,nmap 具有发现功能。这是一个仅 NDP 的扫描,输出到包含链路层地址的 XML 文件(和标准输出): nmap -sn -PR -oX /tmp/lladdr.xml -6 fe80::1234%eth0 显然,这种类型的 nmap 扫描使内核发痒以进行邻居发现,因为在测试中我看到它重新出现在ip neigh.
当然,替换
eth0
为正确的接口名称。由于您要求将其反映在内核的邻居中,并且您不愿意安装软件,请尝试 ICMP echo:
你尝试什么协议并不重要,只要它是基于 IP 的。
如果您愿意安装软件,nmap 具有发现功能。这是一个仅 NDP 的扫描,输出到包含链路层地址的 XML 文件(和标准输出):
显然,这种类型的 nmap 扫描使内核发痒以进行邻居发现,因为在测试中我看到它重新出现在
ip neigh
.