之前用群晖时,用DDNS也会出现ipv6地址变更后无法使用的情况,主要是linux无法像windows那样进行刷新,导致系统存在2个以上ipv6地址所致。解决办法也很简单就是通过定时清除旧的ipv6地址。
现在从群晖迁移到飞牛系统后,发现也存在同样的问题,因群晖和飞牛系统不一样,群晖的代码不能用,但原理是一样的。经过多次测试,问题得以解决。

清除前

清除后
主要用到以下代码,通过添加cron定时任务(或1panel、宝塔面板、青龙面板等带有计划任务的第三方软件)设置每1分钟、每5分钟还是10分钟,自己设置检测频率,去检测ipv6地址的个数,超过2个执行down、up命令。
查看网口信息如下图所示

将下列代码中的NET_IF=”enp3s0-ovs”中的enp3s0-ovs修改为自己的网口名称
#!/bin/bash
# 必须使用 sudo
if [ "$EUID" -ne 0 ]; then
echo "[错误] 请使用 sudo 运行本脚本"
exit 1
fi
# enp3s0-ovs为NAS的网口名称,根据自己的修改即可
NET_IF="enp3s0-ovs"
ipv6_addr_count=`ip addr | grep -E -c "2408|2409|240a|240e"`
if [ $ipv6_addr_count -gt 1 ]; then
get_ipv6_list() {
ip -6 addr show dev "$NET_IF" | grep "global" | awk '{print $2}' | cut -d'/' -f1
}
OLD_IPV6=$(get_ipv6_list "$NET_IF")
echo "刷新前IPv6:"
echo "$OLD_IPV6"
echo "IPV6地址数量大于1 , 将进行刷新"
# 关闭、开启网络
if systemctl is-active --quiet NetworkManager 2>/dev/null; then
nmcli device disconnect "$NET_IF"
nmcli device connect "$NET_IF"
fi
else
echo "IPV6地址数量为1 , 不进行重置!"
echo "当前IPv6:"
ip -6 addr show dev "$NET_IF" | grep "global" | awk '{print $2}' | cut -d'/' -f1
fi
enp3s0为飞牛的网络接口,每个人的可能不一样,可以通过ip addr去查询

伊阳博客







最新评论