如何扫描 LAN 上启用 ipv6 的主机?

Dou*_* Su 10 linux local-area-network ipv6 linux-networking

我想发现我所有启用 ipv6 协议并且还活着的邻居。我试过了,ip -6 neighbor show但它什么也没显示。

有人可以推荐一个工具并展示一些例子吗?谢谢。

MLu*_*MLu 25

最好在链路多播地址ping 一个特殊的所有节点- ff02::1- 并等待响应:

~ $ ping6 -I eth0 ff02::1
PING ff02::1(ff02::1) from fe80::a11:96ff:fe04:50cc wlan0: 56 data bytes
64 bytes from fe80::a11:96ff:fe02:50ce: icmp_seq=1 ttl=64 time=0.080 ms
64 bytes from fe80::1eaf:f7ff:fe64:ec8e: icmp_seq=1 ttl=64 time=1.82 ms (DUP!)
64 bytes from fe80::6676:baff:feae:8c04: icmp_seq=1 ttl=64 time=4047 ms (DUP!)
64 bytes from fe80::5626:96ff:fede:ae5f: icmp_seq=1 ttl=64 time=4047 ms (DUP!)
64 bytes from fe80::5626:96ff:fede:ae5f: icmp_seq=1 ttl=64 time=3049 ms (DUP!)
64 bytes from fe80::6676:baff:feae:8c04: icmp_seq=1 ttl=64 time=3049 ms (DUP!)
[...]
^C
Run Code Online (Sandbox Code Playgroud)

这里有几点:

  • 您必须指定接口: -I eth0
  • 响应是链接本地地址 - 通过将前导替换为fe80:您的子网前缀,例如,2001:db8:1234:abcd:如果这是您的子网前缀,它们可以轻松转换为您的全局地址。

请参阅http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtmlff02::1了解可能感兴趣的其他一些多播地址。

  • 我个人更喜欢使用 `-c` 来自动停止 ping 命令和使用 `-n` 这样它就不会尝试反向 DNS,就像这样:`ping6 -c2 -n ff02::1%eth0`。将链接本地前缀替换为全局前缀通常会为您提供节点的全局地址,但并非总是如此,这取决于具体配置。 (5认同)
  • “_响应是链接本地地址 - 通过将前导的 `fe80:` 替换为您的子网前缀,例如使用 `2001:db8:1234:abcd:`_,它们可以轻松地转换为您的全局地址。这不一定是正确的。IPv6 可以拥有,甚至需要,如果地址不是链路本地地址,同一接口上的多个网络,以及地址的 IID 部分甚至不需要远程相同。你必须有一个本地链路地址,但你也可以在同一个接口上有多个全局和/或 ULA 地址,并且不需要具有相同的 IID 甚至前缀长度。 (4认同)