我在尝试让 IPv6 在新安装的 Ubuntu 16.04 (Xenial Xerus) 上运行时遇到了问题。我的场景非常简单 - 尝试 ping 本地 IPv6 地址。
$ ifconfig
enp0s25 Link encap:Ethernet HWaddr b8:ae:ed:77:91:fa
inet6 addr: fe80::ba94:3d5e:9929:4c6e/64 Scope:Link
和
$ ping6 -c 5 -I enp0s25 fe80::ba94:3d5e:9929:4c6e/64
结果是
unknown host
我该如何排除故障?
答案1
删除 /64 并指定 -I 即可工作。/64 指的是掩码中的位数,不应在 ping 中使用。
$ ping6 -c 1 -I enp0s25 fe80::ba94:3d5e:9929:4c6e
PING fe80::ba94:3d5e:9929:4c6e(fe80::ba94:3d5e:9929:4c6e) from fe80::ba94:3d5e:9929:4c6e enp0s25: 56 data bytes
64 bytes from fe80::ba94:3d5e:9929:4c6e: icmp_seq=1 ttl=64 time=0.043 ms
可以在地址中通过附加%
和接口名称来指定本地接口参数 -I:
$ ping6 fe80::ba94:3d5e:9929:4c6e%enp0s25
PING fe80::ba94:3d5e:9929:4c6e%enp0s25(fe80::ba94:3d5e:9929:4c6e) 56 data bytes
64 bytes from fe80::ba94:3d5e:9929:4c6e: icmp_seq=1 ttl=64 time=0.027 ms
64 bytes from fe80::ba94:3d5e:9929:4c6e: icmp_seq=2 ttl=64 time=0.059 ms
...
这些组合不起作用:
$ ping6 -c 1 -I enp0s25 fe80::ba94:3d5e:9929:4c6e/64
unknown host
或者
$ ping6 fe80::ba94:3d5e:9929:4c6e
connect: Invalid argument
答案2
您不应/64
在 ping 中的地址上使用。这相当于在 IPv4 的 ping 命令上使用掩码长度或掩码。我猜 ping 命令试图将其解释为主机名。