OpenVPN 隧道内的 6in4 隧道 - 可能吗?

OpenVPN 隧道内的 6in4 隧道 - 可能吗?

我有一个具有公共 IPv4 地址的 ubuntu 服务器,以及一个位于 ISP 级 NAT 后面的路由器。

因此,为了让我的本地网络获得 IPv6,我设置了一个 OpenVPN IP 隧道。隧道内的 IPv4 流量没有问题,并且已为 OpenVPN 子网设置了 NAT,因此 OpenVPN 客户端可以通过隧道毫无问题地访问 IPv4 互联网。

然后我设置了一个 DNAT 规则,将 6to4 流量转发到我的 VPN 端点:

Chain PREROUTING (policy ACCEPT)
 target     prot opt source               destination         
 DNAT       ipv6 --  anywhere             anywhere             to:10.2.0.6

我使用的是 MikroTik 的路由器,并按照说明操作这里,除非我的 VPN 端点的 IP 在 6to4 隧道的本地地址中。

当我尝试 ping 隧道代理的端点 IPv6 地址时,我遇到了超时。然后我尝试从另一台具有原生 IPv6 的服务器 ping 我客户端的 IPv6 地址,它给出了无法访问地址。

我不知道这种方法是否有效,或者我应该怎么做才能使其有效。如果不行,还有哪些其他可能的解决方案?

答案1

好吧 - 由于某些我无法理解的原因,隧道中隧道方法不起作用,但我通过另一种方式使 IPv6 正常工作。

首先,不要使用 IP 隧道,而是使用以太网 (tap) 隧道。然后,在运行 OpenVPN 的隧道服务器上,建立到隧道代理的隧道,并要求它们提供 /48 区域。

之后,选择 /48 区域中的任意地址,通过以太网隧道端点(客户端)的链路本地地址进行路由。即:

ip -6 route add <your /64 zone>::/64 via fe80::...

返回客户端,通过隧道服务器的链路本地地址路由 IPv6 流量。这是我在 MikroTik 上执行的操作:

/ipv6 route add dst-address=2000::/3 gateway=fe80::...4%ovpn-tunnel

然后,使用刚刚路由到路由器的 /64 区域在 LAN 桥上设置 IPv6 地址:

/ipv6 address add address=<your /64 zone> interface=bridge advertise=yes

就是这样。

相关内容