Ubuntu 24.04中如何静态创建多条不同下一跳的IPv6默认路由
Ubuntu 24.04中如何静态创建多条不同下一跳的IPv6默认路由
嘿,这个问题我刚好折腾过,来给你唠唠怎么解决!
你手动添加第二条默认路由时碰到的「File exists」报错,是因为直接重复用ip -6 route add default命令的话,系统会把它判定为重复路由条目——哪怕下一跳地址不一样。但RA自动生成的两条默认路由能共存,是因为它们是通过等价多路径路由的方式实现的,系统会把它们当作同一条路由的多个下一跳来处理。
下面给你两种具体的解决办法,按需选择:
方法一:创建等价多路径默认路由(同优先级,负载均衡)
如果你想实现和RA生成的效果一样——两条下一跳同优先级,系统自动在它们之间做流负载均衡——可以用一条命令一次性把两个下一跳加进去:
sudo ip -6 route add default nexthop via fe80::200:10ff:fe10:1060 dev enp0s9 nexthop via fe80::200:10ff:fe10:1061 dev enp0s9
执行完后,用ip -6 route查看路由表,你会看到一条默认路由条目,里面包含两个下一跳,还会显示默认的权重(weight=1),代表流量会在两条路径间均衡分配。
方法二:创建不同优先级的默认路由(主备模式)
要是你希望一条路由作为主路径,另一条作为备用(只有主路径不可用时才切换),可以给每条路由指定不同的metric值(数值越小,优先级越高),分别添加:
# 主路由,优先级更高 sudo ip -6 route add default via fe80::200:10ff:fe10:1060 dev enp0s9 metric 1000 # 备路由,优先级稍低 sudo ip -6 route add default via fe80::200:10ff:fe10:1061 dev enp0s9 metric 1001
这样平时所有流量都会走第一条路由,一旦第一条出现故障,系统会自动切换到第二条。
让路由重启后依然生效
上面的命令都是临时生效的,重启系统后就没了。如果想让配置永久生效,推荐用systemd-networkd来配置:
- 创建一个网络配置文件,比如
/etc/systemd/network/99-ipv6-default-routes.network - 写入以下内容(注意替换成你的网卡名称):
[Match] Name=enp0s9 [Network] IPv6AcceptRA=no # 如果你不想让RA自动生成路由,可以设为no;需要保留RA的话就改成yes [Route] Destination=::/0 NextHop=fe80::200:10ff:fe10:1060 NextHop=fe80::200:10ff:fe10:1061 # 要是想设置优先级,就加一行 Metric=1024
- 重启systemd-networkd服务让配置生效:
sudo systemctl restart systemd-networkd
备注:内容来源于stack exchange,提问作者Matt Muggeridge
相关产品推荐
相关产品推荐

