通过 IPv4 隧道路由 IPv6 流量

通过 IPv4 隧道路由 IPv6 流量

我目前的情况是我想使用 IPv6,但目前没有分配任何 IPv6 地址。但我有一个带有双栈接口的服务器,其中包括一个公共 IPv4 和 IPv6 地址(只有一个 /128 子网)。所以我想:嘿,利用服务器的 IPv6 功能不是很好吗?

我第一次设置了一个 OpenVPN 服务器,它通过 IPv4 隧道路由我的所有 IPv4 流量。效果很好。之后,我搜索了很多次,试图找到一个解决方案,满足我通过这个隧道路由所有 IPv6 流量的需求。我找到了很多教程,展示了如何从自己的子网中为每个连接到 OpenVPN 服务器的用户分配一个新的 IPv6 地址。但不幸的是,我只有一个 IPv6 地址:我的服务器的地址,它不在我的 LAN 中(因为它们对我的服务器的托管者来说是宝贵的东西,你知道……)。我尝试对我唯一的 IPv6 地址应用 NAT,就像对我的 IPv4 地址一样,但失败了……


服务器.conf:

port 1194
proto tcp

dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem

server 10.8.0.0 255.255.255.0
server-ipv6 fe80::/64

ifconfig-pool-persist ipp.txt

push "route 192.168.0.0 255.255.255.0"
push "route-ipv6 2000::/3"

push "redirect-gateway def1 bypass-dhcp"
push "redirect-gateway ipv6"

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

keepalive 10 120

tls-auth ta.key 0
key-direction 0

cipher AES-128-CBC   # AES
auth SHA256

comp-lzo

user openvpn
group openvpn

persist-key
persist-tun

status openvpn-status.log

verb 3

iptables:

iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o ens3 -j MASQUERADE
ip6tables -t nat -A POSTROUTING -s fe80::/64 -o ens3 -j MASQUERADE

答案1

IPv6 地址并不宝贵,尽管托管服务不太可能希望成为隧道代理。尽管存在实验性实施,但 IPv6 不应该需要 NAT。

IPv6 相对于 IPv4 的主要优势在于无需 NAT。如果您尝试在 LAN 上获取 IPv6,请为 IPv6 配置 LAN。缺点是您需要适当设置防火墙,因为您的网络不再受 NAT 保护。

您可以使用 6to4 根据您的 LAN 的外部 IP 创建地址。这将为您的 LAN 提供 /64 块。然后您可以通过 VPN 路由此地址,以提供对服务器的 IPv6 访问。这不会是全局可路由的,因为外部主机将路由到您的 LAN。(您可以在您的服务器上尝试相同操作。)我记录了我的经验在 OpenWRT 上实现 IPv6 6to4,这主要适用于其他基于Linux的服务器(配置有所不同)。

不过,我建议使用隧道代理。他们将提供至少一个 /64 块,并会根据要求提供额外的块。不要使用 VPN 进行 IPv6 连接,而是使用防火墙适当地限制/允许访问。我切换到隧道代理,并在以下位置记录了额外的设置:实施 IPv6 第二部分

相关内容