我一直在尝试让 IPv6 在我的 Tap OpenVPN 网络上工作。服务器已经有 IPv6,但它只有 /64,可用的最大范围是 /116(这会破坏 autoconf)。我从 he.net 获取 6-in-4 /48 来为我的 VPN 提供地址。
IPv6 隧道端点
Server IPv6 Address:2001:470:xxxx:xxxx::1/64
Client IPv6 Address:2001:470:xxxx:xxxx::2/64
路由 IPv6 前缀
Routed 2001:470:yyyy::/48:
我的网络结构(互联网=>服务器=>客户端)是:
Internet
||
OpenVPN server
eth0 (Native ipv6): 2600:3c01::xxxx:xxxx:xxxx:xxxx/64
he-ipv6 (6-in-4): 2001:470:xxxx:xxxx::2/64
tap0 (VPN): 2001:470:yyyy:zzzz::1/64
||
OpenVPN client
wlan0 (ipv4)
tap0 (VPN - autconf): 2001:470:yyyy:zzzz:wwww:wwww:wwww:wwww/64
服务器配置:
server # ip -6 route
2001:470:xxxx:xxxx::/64 via :: dev he-ipv6 proto kernel metric 256
2001:470:yyyy:zzzz::/64 dev tap0 proto kernel metric 256
2600:3c01::xxxx:xxxx:xxxx:xxxx dev eth0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev tap0 proto kernel metric 256
fe80::/64 via :: dev he-ipv6 proto kernel metric 256
default dev he-ipv6 metric 1024
default via fe80::xxxx:xxxx:xxxx:xxxx dev tap0 proto kernel metric 1024 expires 4748sec
客户端配置:
client # ip -6 route
2001:470:xxxx:xxxx::/64 via 2001:470:yyyy:zzzz::1 dev tap0 metric 1
2001:470:yyyy:zzzz::/64 dev tap0 proto kernel metric 256 expires 86388sec
fe80::/64 dev wlan0 proto kernel metric 256
fe80::/64 dev tap0 proto kernel metric 256
default via fe80::xxxx:xxxx:xxxx:xxxx dev tap0 proto kernel metric 1024 expires 5383sec hoplimit 64
Ping 结果
Internet => 2600:3c01::xxxx:xxxx:xxxx:xxxx Works
Internet => 2001:470:yyyy:zzzz::1 Works
Internet => 2001:470:yyyy:zzzz:wwww:wwww:wwww:wwww Timed Out
Server => 2600:3c01::xxxx:xxxx:xxxx:xxxx Works
Server => 2001:470:yyyy:zzzz::1 Works
Server => 2001:470:yyyy:zzzz:wwww:wwww:wwww:wwww Works
Server => 2404:6800:4006:802::1011 (ipv6.google.com) Works
Client => 2600:3c01::xxxx:xxxx:xxxx:xxxx Works
Client => 2001:470:yyyy:zzzz::1 Works
Client => 2001:470:yyyy:zzzz:wwww:wwww:wwww:wwww Works
Client => 2404:6800:4006:802::1011 (ipv6.google.com) Destination unreachable: Address unreachable
客户端要怎样设置路由才能正常使用 ipv6 上网?
我知道客户端上应该有一个 dev tap0 的默认路由,但我试过的所有网关都没有起作用。我一直在尝试解决这个问题(通过研究和实验),但我还没有找到一个可行的解决方案(尽管这似乎很接近)。
答案1
您确定问题出在客户端而不是服务器上吗?客户端路由看起来没问题。到 ipv6.google.com 的跟踪路由是否到达 2001:470:yyyy:zzzz::1?如果到达,则 IPv6 流量使用 VPN 作为其默认网关,并且您的客户端路由已全部设置。
我认为问题可能出在服务器上的 tap0 和 he-ipv6 之间转发数据包。我不太熟悉 OpenVPN,但通常这类事情除了路由表外还受策略控制。
我认为 OpenVPN 使用 iptables,因此允许两个 ipv6 接口之间双向转发需要这样的操作。
iptables -I FORWARD -i tap0 -o he-ipv6 -j ACCEPT
iptables -I FORWARD -i he-ipv6 -o tap0 -j ACCEPT
答案2
我最终改变了设置,因此这个问题不再适用。
但是,我认为您需要确保内核已设置为为所有设备转发 IPv6 数据包。