OVH系独服配置OpenWrt的DHCPv6

OVH系独服标配/64的IPv6地址。然而根据官方文档需要手动配置,甚至官方都知道自己的RA(Router Advertisement)是有问题的,需要配置服务器不接受RA。最让人无法理解的是不仅需要配置静态地址,甚至连网关路由都得静态配置。如果只是给一台机器用,纯静态问题不是很大。但是如果需要给虚拟机继续分配,简直就是灾难。虽然理论上可以把外网网卡桥接到所有VM并手动配置,但这样做终究还是不方便。有个老哥甚至写了篇文章吐槽OVH的IPv6:IPv6 setup in two hosting providers compared: awful (OVH) and awesome (Online.net)。这篇文章虽然讲了需要配置NDP代理,并没有什么实际的可操作性。经过一大番折腾我才终于彻底解决OpenWrt给其他VM分配地址的问题。

配置WAN6

WAN6没什么特别的,配置静态地址+前缀就完事了。

配置路由

路由也没什么特别的,按道理IPv6应该用来自RA的Link-local地址自动配置路由,然而OVH家并没有能正常使用的RA,只能用静态路由。

配置LAN

首先当然是配置好IPv6分配的长度:

接下来重点来了。如果只配置到这一步,你会发现其他VM可以获取到正常的stateful和stateless地址,但是如果尝试ping外网地址:ping6 google.com

你会发现根本不通!这是因为像前面提到的那篇文章所说的,外面的路由器并不知道这个地址的存在,所以需要配置NDP代理为relay,让软路由帮其他VM通告它们的地址:

再尝试ping外网地址,通了!Hooray!

到这就结束了吗?那你就想多了。

过大约30分钟后,你会发现,从OpenWrt依旧可以ping通外网v6,VM里面的v6地址还在,VM的v6路由表也正常,然而又ping不通了!

这就是更大的坑了,DHCPv6的地址默认是无限期的,看起来NDP代理的地址通告只会在获取地址的时候进行一次,过了半个小时由于没有继续通告,外面的路由器就忘记还有这个VM的存在了。为了解决这个问题,我们需要降低DHCP的租期,比如15分钟:

然后你会发现DHCPv6的租期还是无限期。这时需要登录OpenWrt的命令行(比如SSH),编辑/etc/config/dhcp,在LAN配置下方加入option ra_useleasetime '1'

然后重启dnsmasq或者直接重启OpenWrt。

接着DHCPv6就works as intended了。所有VM都能获取并保持IPv6地址,即使过一天也不会失去公网访问,从外面也可以ping通VM的v6地址。

文章目录
  1. 1. 配置WAN6
  2. 2. 配置路由
  3. 3. 配置LAN
|