ipv6 查找前缀中的所有主机

Pau*_*aul 9 openbsd ipv6

使用 ping6 命令,您可以使用以下命令找到接口外的 ipv6 主机的链路本地地址:

 ping6 -I eth0 ff02::1
Run Code Online (Sandbox Code Playgroud)

这将 ping 子网中的所有内容,因此您可以查看那里的内容。这可以在 中查看ndp

是否可以 ping 前缀中的所有内容,以便确定主机的全局范围单播地址?请注意,这假设 ipv6 地址是静态分配的,而不是从 a 自动配置的rad- 所以我们不能只从 mac 地址计算出来。

在 ipv4 术语中,这在功能上等同于 ping -b 192.168.1.0/24

假设我们的前缀是2001:470:1f09:131::/64,我正在寻找一种方法来做这样的事情:

ping6 -b 2001:470:1f09:131::/64
Run Code Online (Sandbox Code Playgroud)

(我知道这-b是缓冲区大小,这仅用于说明)

请注意,这是 OpenBSD,它不支持 -I 中的 IP 地址:

 -I interface
         Source packets with the given interface address.  This flag ap-
         plies if the ping destination is a multicast address, or link-lo-
         cal/site-local unicast address.
Run Code Online (Sandbox Code Playgroud)

Vuc*_*rul 6

将 Celada 的回答和 Bort 的评论中的部分放在一起给出了想要的结果:您需要选项-I-S选项。

因此,假设网络接口vr0具有 IPv6 地址,2001:1418:153:0:2e0:c5ff:fe3f:caef您需要此命令来执行广播 ping:

ping6 -I vr0 -S 2001:1418:153:0:2e0:c5ff:fe3f:caef ff02::1
Run Code Online (Sandbox Code Playgroud)

-S仅从链接本地地址中删除echo 回复中的-I结果;删除根本没有答案的结果。)


小智 5

尝试:

ping6 ff02::1%yournic0
Run Code Online (Sandbox Code Playgroud)

yournic0相关链接所面对的接口名称在哪里。


Cel*_*ada 3

-I参数可以是 IP 地址以及接口名称。看起来如果您指定接口名称,那么它会使用该接口上的链路本地地址作为源地址。从来自其全局范围地址的主机获取回复的技巧是从您自己的全局范围地址发送 ping:

ping6 -I 2001:db8:xxxx::your:own:ip:address ff02::1
Run Code Online (Sandbox Code Playgroud)