情况:
我们的networking中只有一台ipv4路由器,每台计算机都连接到它(无线或有线)。 带有ipv4和ipv6的服务器也连接到此路由器。 服务器已经configuration了6to4 tunneling和radvd的tunnelbrokers。 networking中的客户端有正确的前缀,可以通过ipv6相互ping通。 但是,他们不能ping通互联网,直到他们第一次ping服务器(与隧道之一)。 我发现这是一个icmp问题,但我找不到解决scheme。
问题是路由器只是ipv4吗?
Ping试试:
standa @ standa-laptop:〜$ ping6 ipv6.google.com PING ipv6.google.com(2a00:1450:8007 :: 69)56个数据字节 ^ C --- ipv6.google.com ping统计--- 29个数据包传输,0个接收,100%丢包,时间28223ms standa @ standa-laptop:〜$ ping6 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478 PING 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478(2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478)56个数据字节 来自2001的64字节:470:XXXX:XXXX:21c:c0ff:fe2b:6478:icmp_seq = 1 ttl = 64时间= 3.55 ms 来自2001的64字节:470:XXXX:XXXX:21c:c0ff:fe2b:6478:icmp_seq = 2 ttl = 64时间= 0.311ms 来自2001的64字节:470:XXXX:XXXX:21c:c0ff:fe2b:6478:icmp_seq = 3 ttl = 64时间= 0.269 ms 来自2001的64字节:470:XXXX:XXXX:21c:c0ff:fe2b:6478:icmp_seq = 4 ttl = 64时间= 0.292 ms ^ C --- 2001:470:XXXX:XXXX:21c:c0ff:fe2b:6478 ping statistics --- 发送4个数据包,接收4个数据包,丢包0%,时间3000ms rtt min / avg / max / mdev = 0.269 / 1.107 / 3.559 / 1.415ms standa @ standa-laptop:〜$ ping6 ipv6.google.com PING ipv6.google.com(2a00:1450:8007 :: 69)56个数据字节 来自2a00:1450:8007 :: 69的64个字节:icmp_seq = 1 ttl = 57时间= 20.7ms 来自2a00:1450:8007 :: 69的64个字节:icmp_seq = 2 ttl = 57时间= 20.2ms 来自2a00:1450:8007 :: 69的64个字节:icmp_seq = 3 ttl = 57时间= 23.4ms ^ C --- ipv6.google.com ping统计--- 发送3个数据包,接收3个数据包,丢包0%,时间2001ms rtt min / avg / max / mdev = 20.267 / 21.479 / 23.413 / 1.392 ms
更新:Radvdconfiguration
接口eth0 {
AdvSendAdvert;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
AdvLinkMTU 1280;
前缀2001:470:1f0a:1511:1 :: / 64 {
AdvOnLink;
AdvAutonomous;
AdvRouterAddr;
};
};
更新2:没有连接
ip -6 neigh fe80 :: 21c:c0ff:fe2b:6478 dev wlan1 lladdr 00:1c:c0:2b:64:78 router REACHABLE
连接(ping后)
fe80 :: 21c:c0ff:fe2b:6478 dev wlan1 lladdr 00:1c:c0:2b:64:78路由器STALE 2001:470:1f0a:1511 :: 1 dev wlan1 lladdr 00:1c:c0:2b:64:78路由器REACHABLE
邻居请求在ping时发生:
fe80 :: 21c:c0ff:fe2b:6478 2001:470:1f0a:1511:21c:bfff:fe60:b389 ICMPv6邻居请求 2001:470:1f0a:1511:21c:bfff:fe60:b389 fe80 :: 21c:c0ff:fe2b:6478 ICMPv6 Neighbor advertisement
客户端的前缀是否被手动分配? 通常他们应该通过邻居发现协议自动发现路由器(在此期间,路由器发送广告并自动分配它们的前缀),但是听起来像这个步骤可能会丢失。
另外,路由器通告应该在路由器通告的ICMP报头中包括其链路层地址作为选项。 如果这个字段丢失,客户端将不知道如何发送数据到路由器。 这听起来可能是这样的。 客户端不知道如何到达路由器,直到它发出邻居发现消息,并且从路由器收到一个邻居通告(ICMP消息集中的路由器标志)。
要在路由器广告中包含源链接层地址,请将以下内容添加到您的radvd.conf中
AdvSourceLLAddress on;
确保您的客户端使用服务器的ipv6地址作为其网关/路由器。 正如Jeff指出的那样,可能会自动分配(检查你的radvdconfiguration),或者在这种情况下手动检查客户端configuration。
我认为你的radvd.conf是好的,虽然它不会伤害比较ip -6 addr; ip -6 route 在ping客户端之前和之后的ip -6 addr; ip -6 route 。 隧道盒或路由器上是否启用了某种连接跟踪function? 从隧道箱完成的ping6是否足够? 有状态的防火墙可以解释为什么数据包只能在ping成功后才能返回。