# 查看网卡名称
ifconfig
# ping网卡名称上的链路本地广播地址
ping6 FF02::1%网卡名称
# 等待一段时间,然后查看发现的节点
ip neigh
# 会打印节点的IPv6链路本地地址和MAC地址
# 备注:节点的IPv4地址也会顺便显示出来,但不是ping IPv6获得的,所以不完整
所有开启了IPv6功能并且未禁ping的机器都会出现,不需要路由器支持IPv6,因为只要开启了IPv6,机器就会给自己分配链路本地地址,不需要路由器分配。
不过发送ping的机器自己必须开启IPv6,ping的接口也不能关闭IPv6,否则多播发不出去。
从ip neigh
发现的局域网IPv6本地地址(形如fe80::xxxx:xxxx:xxxx:xxxx
)可以用于直接通信,不过也得加上%网卡名称
,比如:
# 尝试连接其中一台机器:
telnet fe80::xxxx:xxxx:xxxx:xxxx%网卡名称 443
curl 'http://[fe80::xxxx:xxxx:xxxx:xxxx%网卡名称]:80/'
ssh fe80::xxxx:xxxx:xxxx:xxxx%网卡名称
ifconfig
# 发现网卡名称是wlan0
ping6 FF02::1%wlan0
# 等待一段时间,然后执行
ip neigh
# 尝试连接其中一台机器
telnet fe80::1234:2234:3234:4234%wlan0 443
curl "http://[fe80::1234:2234:3234:4234%wlan0]:80/"
ssh fe80::1234:2234:3234:4234%wlan0
# 查看网卡序号
route print -6
# 在“接口列表”中找到属于局域网的网卡序号,比如我的是12
ping -t FF02::1%12
# 等待一段时间。
# Windows的ping不能正确显示多播结果,所以只会显示“请求超时”,但ping的结果会填充邻居节点列表。
# 你也可以通过 Wireshark 抓包来查看 ping 的结果,捕获过滤器填 icmp6 即可。
# 查看节点列表
netsh int ipv6 show neigh 12
netsh int ipv4 show neigh 12
# 备注:IPv4节点列表只是顺便显示出来,不是ping IPv6获得的,所以不完整
# 连接其中一个节点
ssh fe80::1234:2234:3234:4234%12
zsh: command not found: ip