如何在局域网上查找所有IPv6 IP地址



仍然习惯了这一点,但有人知道在IPV6网段上检索所有IP地址的最佳方法吗?

在特定接口上ping ff02::1是要求该接口上的所有节点回复ping的一种方式。当然,这取决于每个节点来确定它们是否确实进行了回复。

ff02是链路本地多播作用域的前缀,::1是"所有节点"的目的地。在实践中,您可能还需要添加接口编号,例如ff02::1%3用于接口编号3。这是因为你必须指定在哪个接口上发送ping

不过,我不知道如何在C#中做到这一点,也无法在Windows 10 cmd.exe上运行,ping只会说没有回复。但在我的OS X笔记本电脑上,它可以工作:

:; ping6 ff02::1%en0
PING6(56=40+8+8 bytes) fe80::xxxx:xxxx:xxxx:xxxx%en0 --> ff02::1%en0
16 bytes from fe80::xxxx:xxxx:xxxx:xxxx%en0, icmp_seq=0 hlim=64 time=0.089 ms
16 bytes from fe80::yyyy:yyyy:yyyy:yyyy%en0, icmp_seq=0 hlim=64 time=2.160 ms
16 bytes from fe80::zzzz:zzzz:zzzz:zzzz%en0, icmp_seq=0 hlim=64 time=2.238 ms

如果你想连接到局域网中其他节点上运行的自己的程序,你可能应该为此设置一个特定的多播地址,或者使用带有特定udp端口的ff02::1。这在IPv4和IPv6上基本相同。

编辑:刚刚注意到,至少在默认情况下,Windows 10也不会回答这些ping。

最新更新