我在 Ubuntu 12.04 上遇到了 ipv6 的一个奇怪问题。
有两台主机直接连接到互联网。两台主机都分配了一个 /64 网络。它们各自正确配置了一个 /128 端点,并且一个可以 ping 通另一个,反之亦然。我的计划是将我分配的 ipv6/64 的 /112 子网终止到接口,以便在 apache2 vhosts 中有足够的地址供使用。但这不是重点。
主持人A:
$ ifconfig
eth0 Link encap:Ethernet HWaddr (...)
inet6 addr: fe80::5246:5dff:(...)/64 Scope:Link
inet6 addr: 2a01:xxx:xxx:000A::2/64 Scope:Global
$ route -A inet6
Kernel IPv6 routing table
Destination Next Hop Flag Met Ref Use If
2a01:xxx:xx:000A::/64 :: U 256 0 0 eth0
fe80::/64 :: U 256 0 0 eth0
::/0 fe80::1 UG 1024 0 0 eth0
::/0 :: !n -1 1 5689 lo
::1/128 :: Un 0 1 18 lo
2a01:xxx:xx:000A::2/128 :: Un 0 1 202 lo
2a01:xxx:xx:000A::/112 :: U 1024 0 0 lo
fe80::5246:5dff:fea1:977c/128 :: Un 0 1 86 lo
ff00::/8 :: U 256 0 0 eth0
::/0 :: !n -1 1 5689 lo
主机 B 可以2a01:xxx:xx:000A::[0001-FFFF]
正确 ping6 并且工作正常。但在主机 A 上,我无法 ping 我自己的地址。如果我尝试 ping6 2a01:xxx:xxx:000A::n
,我会得到以下结果:
$ ping6 2a01:xxx:xxx:000A::3
PING (...) 56 data bytes
ping: sendmsg: Invalid argument
ping: sendmsg: Invalid argument
ping: sendmsg: Invalid argument
我怀疑是路由表的问题,但是我已经研究了很长时间了,甚至使用谷歌也无法让它工作。
有什么想法吗?谢谢。
答案1
问题似乎是这样的:
2a01:xxx:xx:000A::/112 :: U 1024 0 0 lo
您有一个 /112 路由,它比 /64 路由更具体:
2a01:xxx:xx:000A::/64 :: U 256 0 0 eth0
并告诉它通过环回接口进行传送。
令人好奇的是,您有:
2a01:xxx:xx:000A::2/128 :: Un 0 1 202 lo
您能否确保所有这些地址都在 eth0 接口上,并且如果您要添加路由,请将它们添加到 eth0?