目前有一台美国 VPS (A) ,分配了原生 /56 IPv6 Pool, 通过 OpenVPN 将三个 /64 Pool 路由到了国内服务器 (B) 上,这台国内服务器 (B) 再作为 OpenVPN 服务端将其中两个 /64 Pool 路由到另外两台国内服务器 (C,D) 上。
三台国内服务器访问 IPv6 网络和从外部访问通过 OpenVPN 分配的 IPv6 Pool 内的地址都没有问题,但是 C 访问 D / D 访问 C 时有一个奇怪的问题,理论上说应该是直接通过 B 中转的,然而数据包却 C -> B -> A -> B -> D 这样从 A 服务器绕了一圈。
从 C Ping D 并抓包,发现 C 和 D 都有 ICMP Request 和 ICMP Reply 包,但是 B 服务器上只能看到 D 发来的 Reply 包(单向), ip6tables 记录如下:
Chain FORWARD (policy ACCEPT 4519 packets, 3502K bytes)
pkts bytes target prot opt in out source destination
0 0 LOG all * * 2xxx:xxxx:xxxx:xxf1::/64 2xxx:xxxx:xxxx:xxf3::/64 LOG flags 0 level 4
16 1664 LOG all * * 2xxx:xxxx:xxxx:xxf3::/64 2xxx:xxxx:xxxx:xxf1::/64 LOG flags 0 level 4
已经确认 C 和 D 都只和 B 建立了 OpenVPN 连接,且只有这一条 IPv6 链路。
B 直接访问 C / D 时是正常的, OpenVPN 配置文件里也配置了相应的路由 (route-ipv6 + iroute-ipv6)
求解。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.