使用 openvpn“tun”和子网划分的 IPv6 隧道

使用 openvpn“tun”和子网划分的 IPv6 隧道

我有一个带有 /64 IPv6 前缀的 vps,我正在尝试使用它为使用 openvpn 的主机带来 IPv6 连接。

我首先使用了第 2 层“tap”方法,我创建了一个永久的 tap 隧道并在该接口上配置了 radvd。

客户端可以获取 ipv6 地址,并且数据包到达服务器,但我认为我没有正确配置路由或其他内容,因此在服务器的 eth0 接口上我会看到

2a01:7f00::f03c:91ff:fedb:6541 > ff02::1:ff86:a71: ICMP6, neighbor solicitation, who has 2a01:7f00::2daa:ad77:2286:a71, length 32

我决定和 tun 一起尝试。

这是我的配置文件(对 ipv6 前缀做了一些小修改)

dev tun0
tun-ipv6
server-ipv6 2a01:7f00::/112
server 10.0.0.0 255.255.255.0
push "route-ipv6 2a01:7f00::/64"
comp-lzo
status openvpn-status.log
log-append /var/log/openvpn.log
verb 3 
tls-server
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem

客户端获取到了IPv6地址,但是可以看到有些不对劲:

2a01:7f00::1000/64

当我想要一个 /112 子网时,它获取了一个 /64 地址。当我尝试“ping6 google.com”时,我得到“网络无法访问”

我是 IPv6 新手,我做错了什么?我看到的所有示例都是服务器具有 /48 前缀,并将 /64 前缀委托给客户端。

答案1

IPv6 的一部分规定是,您不能使用大于 64 位的前缀来划分子网。部分原因是 SLAAC 和隐私扩展等机制会生成地址的低 64 位。

根据RFC 4862 第 5.5.3 节,自动配置应该失败了,所以你可能遇到了错误(这并不奇怪,因为你做了不该做的事情)。但是,无论如何,这不是一个可以合理预期会起作用的配置。

的常见解释RFC 2373 第 2.4 节是,对于非多播地址,前缀长度超过 64 位基本上是被禁止的,尽管它以一种复杂的方式表达了这一点。

相关内容