
在给飞牛系统配置 IPv6 时,很多朋友会遇到这样的问题:
- 能够获取到 IPv6 地址,但是没有默认网关(
default via fe80::xxxx)。 手动执行命令:
sudo ip -6 route add default via fe80::1 dev enp1s0后可以正常上网。
- 但是当 IPv6 地址租期到期或网卡重连时,路由会消失,需要再次手动添加,非常麻烦。
本文将介绍一种简单有效的解决方案:通过 NetworkManager 的 dispatcher 脚本,让系统在网卡地址更新时自动补上默认路由。
问题分析
IPv6 默认网关通常通过 RA(Router Advertisement) 下发,但部分光猫设备(尤其是运营商定制版)可能只下发前缀,不提供默认路由,导致系统没有默认 IPv6 路由。
解决思路是:
- 手动指定光猫的链路本地地址(通常为
fe80::1)作为默认网关。 - 写一个钩子脚本,确保每次网卡重新获取 IPv6 地址时自动补上路由。
解决步骤
1. 新建 dispatcher 脚本
编辑 /etc/NetworkManager/dispatcher.d/90-ipv6-route:
#!/bin/bash
IFACE=$1
STATUS=$2
if [ "$IFACE" = "enp1s0" ] && [ "$STATUS" = "up" ]; then
/sbin/ip -6 route replace default via fe80::1 dev enp1s0
fi2. 赋予执行权限
sudo chmod +x /etc/NetworkManager/dispatcher.d/90-ipv6-route3. 重启 NetworkManager
sudo systemctl restart NetworkManager验证效果
断开并重新启用 enp1s0 网卡,或者等待 IPv6 地址续租。然后执行:
ip -6 route show应该能看到:
default via fe80::1 dev enp1s0 proto static metric 100测试:
ping6 -c 4 ipv6.baidu.com能够正常响应,即表示脚本生效。
总结
通过 NetworkManager dispatcher 脚本,我们解决了飞牛系统下 IPv6 默认路由缺失的问题。其优点是:
- 简单稳定,不依赖额外的服务或定时任务。
- 能在每次地址变动时自动修复路由,避免手动操作。
这样,即使 IPv6 地址是动态的,也能保证系统始终具备可用的默认 IPv6 路由。
评论0
暂时没有评论