标签归档:失联

Online 独服IPv6失联的几种解决办法

上一篇文章记录了为Online独服开启额外IPv6的过程,几乎与此同时发现了一个问题,额外添加的IPv6总是在数小时(具体不详)后失联,查看路由又没有问题,但ping6是不通的。系统默认开启的IPv6是没有问题的。网络上抱怨Online IPv6不稳定的帖子很多,有建议使用Dibbler开启IPv6的,但是这种方法已不被官方推荐。

IPv6失联或者失效,总之就是不通,原因不详。以下方法仅供尝试,不一定有效:

1 修改内核参数

早在2015年有一篇文章描述了类似的情况,分析就不赘述了,记录下操作的过程。

sudo vi /etc/sysctl.conf

添加如下两行:

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.eth0.accept_ra=2

保存生效:

sudo sysctl -p

可惜的是,虽然看上去分析和处理都很有道理,但是实测后仍然会失联。

2 开启防火墙端口

Online官方教程有个提示:

You will need to allow in your firewall 546/UDP Incoming & 547/UDP Outgoing.

DHCPv6需要开放相应端口才能正常工作。

在Ubuntu下使用UFW防火墙的话,一般是允许出站,禁止进站,比如这样的默认设置:

sudo ufw default deny incoming
sudo ufw default allow outgoing

则运行如下命令:

sudo ufw allow 546/udp
sudo ufw allow 547/udp

看上去很有道理,但是观察后发现这种方法貌似也无效。

3 修改dhclient.service运行参数

有篇不起眼的文章提到,为dhclient.service添加ExecStartPost参数。

在上篇文章编写dhclient服务时:

sudo vi /etc/systemd/system/dhclient.service

添加两行参数,按如下修改:

[Unit]
Description=dhclient for sending DUID IPv6
Wants=network.target
Before=network.target

[Service]
Type=forking
ExecStart=/sbin/dhclient -cf /etc/dhcp/dhclient6.conf -6 -P -v enp1s0
ExecStartPost=/bin/sleep 5
ExecStartPost=/usr/sbin/netplan apply

[Install]
WantedBy=multi-user.target

观察一天,暂时有效,还需继续观察。