我通过 ISP 获得了原生 IPv6(他们给了我一个/48
)。使用 RA(SLAAC),我的路由器正在/64
向网络中的机器通告一个特定的 IPv6 - 换句话说,我的网络拥有完整的原生 IPv6。
我的路由器还连接到 OpenVPN 网络以访问一些私有资源,其中一些资源可通过 IPv6 访问。目标是使 LAN 上的机器能够透明地访问这些资源。
VPN 将路由推送到路由器,以便当需要访问私有资源时,流量会沿着其接口向下流动 - 这个部分工作“正常”,因为我可以看到在接口tcpdump
上连接时流量可以正常出去tun0
,并且从路由器本身连接到东西也是正常的。
我的问题是来自终端客户端的流量永远不会返回到它们。我认为发生的情况是 IP 数据包使用公共 IPv6 地址作为其源地址(客户端机器根本不了解 VPN),因此 VPN 会丢弃这些数据包,因为它们来自(就远程 OpenVPN 而言)虚假地址。
感觉这肯定是一个已知问题,但我真的找不到任何人谈论它。我想我需要以某种方式将从/64
VPN 获得的地址提供给 LAN 上的客户端,并以某种方式(!)分发路由?或者为 v6 进行某种 1:1 本地 → VPN NAT 转换(可能不是这个解决方案)?其他人之前是否完成过此操作?如果是,您做了什么?