如何在 Linux 上完美地进行邻居发现请求?

如何在 Linux 上完美地进行邻居发现请求?

我正在寻找一种方法来检索 LAN 网络上特定主机的 MAC 地址。我知道它的 IPv6 地址。理想情况下,我希望有一种方法可以触发 Linux 内核为我执行邻居请求,然后我可以通过命令检索主机 MAC 地址ip -6 neighbour

目前,我发现触发邻居请求的唯一方法是尝试在随机端口上与主机建立 TCP 连接。但我发现这个解决方案并不好:

curl --connect-timeout 1 "http://[fe80::1234%eth0]:12345"

答案1

由于您要求这反映在内核的邻居中,并且您不愿意安装软件,请尝试 ICMP echo:

ping -c 1 fe80::1234%eth0

实际上,您尝试什么协议并不重要,只要它是基于 IP 的。

如果您愿意安装软件,nmap 具有发现功能。以下是仅 NDP 扫描,输出到包含链路层地址的 XML 文件(和 stdout):

nmap -sn -PR -oX /tmp/lladdr.xml -6 fe80::1234%eth0

显然,这种类型的 nmap 扫描会促使内核进行邻居发现,因为在测试中我看到它重新出现在 下ip neigh

答案2

ndisc6-1 fe80::1234 eth0

eth0当然,用正确的接口名称替换。

相关内容