我的路由器(运行 Ubuntu Linux)是双栈、双以太网。路由器的 WAN 接口配置为 IPv4 PPPoE 到我的 ISP。Hurricane Electric 为我提供了一个在路由器上运行的 IPv6 隧道。路由器的 LAN 接口连接到运行 Ubuntu Linux 的 PC。这也配置为双栈。
从路由器来看,没有任何问题。我可以 ping 互联网上的任何公共 IPv4 或 IPv6 地址,并访问任何网站(我已经使用 进行了测试elinks
)。
从 PC 上,我还可以 ping 互联网上的任何 IPv4 或 IPv6 地址。但是,有几个网站(例如,https://wiki.archlinux.org) 使用任何浏览器(例如 Firefox、Chrome 等)都会超时,除非我在 PC 上禁用 IPv6。
什么样的问题会导致这种情况?
编辑:我刚刚在 PC 上再次测试elinks
。经过大约一分钟的“SSL 协商”,它终于正常工作了。我想这可能是浏览器在 IPv6 上超时,然后改为选择 IPv4。
答案1
导致您描述的症状的最常见问题是路径上某处的防火墙配置错误,导致 PMTU 发现失败。
您可以尝试调整隧道本身的 MTU 设置。我相信通过 PPPoE 运行 6in4 的正确 MTU 设置是 1476。请记住,您需要调整隧道两端的 MTU 设置。您还可以尝试将隧道上的 MTU 设置值调低。但不要低于 1280,这是 IPv6 标准允许的最低值。
如果更改隧道上的 MTU 没有帮助,您可以尝试ip6tables
降低通过路由器转发的所有 TCP SYN 数据包的 MSS。我相信这个命令应该可以解决这个问题:
ip6tables -A FORWARD -p tcp --tcp-flags SYN SYN -j TCPMSS --set-mss 1220
我相信 1220 是 MSS 最可靠的值。