试图了解 IPv6 如何与 OpenVPN 一起工作,所以我想设置以下方案。
我有一个 VPS 服务器 (Ubuntu),它被分配了一个 /48 子网。
ISP ipv6 gateway is XXXX:XXXX:XXXX::1
Server ipv6 address is XXXX:XXXX:XXXX:39::1
这个想法是任何连接到服务器的客户端都在 XXXX:XXXX:XXXX:39:2::/64 子网上获得一个 IP 地址。
服务器配置文件基于 OpenVPN 的示例配置,并添加了以下内容:
dev tun
tun-ipv6
server-ipv6 XXXX:XXXX:XXXX:39:2::/64
push "route-ipv6 XXXX:XXXX:XXXX:39::/48"
重新启动 OpenVPN 服务器没有问题。
服务器分配了以下 ip 地址:
eth0: XXXX:XXXX:XXXX:39::1/48
tun0: XXXX:XXXX:XXXX:39::2/64
客户被分配:
OpenVPN 点击:XXXX:XXXX:XXXX:39:2:0:1:0,我可以 ping XXXX:XXXX:XXXX:39::1 就好了。但是,从客户端 ping ISP 网关会使连接超时。
我可以从服务器 ping ISP ipv6 网关。
我在 Ubuntu 防火墙中允许来自 XXXX:XXXX:XXXX:39:2::/64 的流量。
我错过了什么?
我应该提到服务器正在运行 OpenVPN 版本 2.2.1 - 这是抱怨的原因吗?
事实证明,将我的托管服务器用作 IPv6 网关并不是那么容易。尽管它是一个多步骤过程,但它是可行的。
我最终在这里问了一点,所以下面是我在这个过程中学到的东西的总结。
为了获得可路由的子网,我去了 Hurricane Electric,并从 Hurricane Electric 获得了一个路由 /48 子网。访问https://tunnelbroker.net了解有关如何获取您自己的子网的更多信息。
他们会提供一个通过 IPv4 隧道路由的 IPv6,还会告诉你应该给你添加什么
/etc/interfaces
。我在隧道链路上的 IPv6 地址的格式为:
2001:470:xxxx:xxx::/64
。因此,应将以下行添加到/etc/interfaces
:但是由于我的服务器已经有一个公共 IPv6 地址,它会导致一些问题,在我可以从 Tunnelbroker 子网 ping 任何东西之前我们必须缓解这些问题。
#Enter基于策略的路由。
这个想法是服务器根据源 IPv6 地址决定它应该用于 IPv6 流量的出站链接。
规则很简单。
这意味着您需要两个路由表。默认路由表(称为:)
main
和您自己的表(我称为我的mynet6
)。首先为自定义路由表添加一个条目:
为了 agument 的缘故,可以说我被分配了子网
2001:db8:cafe::/48
。我制作了一个脚本,当 VPN 链接打开时由 OpenVPN 调用,因为我的 /48 子网仅驻留在我的 VPN 链接上。脚本有点像这样:
#验证配置
您可以使用以下命令验证您的路由设置:
ip -6 rule show
它应该包含如下内容:
可以在以下位置找到 Tunnelbroker 链接的路由表:
ip -6 route show table mynet6
它应该输出如下内容:
您可以在此处找到默认路由表:
ip -6 route show table main
它应该有以下几行:
这应该考虑服务器在从 /48 子网接收到流量时必须做的事情。如何将 /48 子网分配给自己的网络是一个完全不同的章节,我不会在这里介绍。:-)