Linux如何配置静态IPv6路由
Linux配置静态IPv6路由时命令无报错但未生效,常见原因为接口未启用IPv6或网关不可达。永久配置需写入NetplanYAML或/etc/network/interfaces的route6文件。删除路由需参数完全一致,并同步更新配置文件以避免冲突。
在 Linux 系统中配置静态 IPv6 路由时,许多用户会遇到一个令人困惑的情况:命令执行后没有任何报错,但 ping6 始终不通,ip -6 route show 也看不到新增的路由。究竟是什么原因?本文将详细解析这一常见问题,并提供完整的解决方案。
ip -6 route add 添加静态路由未生效,根本原因是目标接口未启用 IPv6 或网关不可达;需确认接口有 scope global 地址、网关在直连子网且能响应邻居发现,且永久配置须按系统规范写入 Netplan YAML 或 route6-文件。

ip -6 route add 添加静态路由时为什么没生效
命令执行零报错,但路由没有出现?不要急于怀疑操作错误,首先检查目标接口是否已启用 IPv6,以及网关是否可达。这两个是底层硬条件,缺一不可。
具体需要确认以下三点:
- 接口状态:使用
ip -6 addr show dev eth0查看,确保存在一个scope global的地址(例如2001:db8::100/64)。如果只显示link地址,说明 IPv6 网络层尚未就绪。 - 网关连通性:执行
ping6 -c 2 2001:db8::ff,若对方无响应,路由无法找到下一跳,自然无法生效。 - 前缀格式正确:添加默认路由时,应使用
default via 2001:db8::ff dev eth0,切勿写成0.0.0.0/0——这是 IPv4 的写法。
一句话总结:路由能否成功加入,取决于接口的 IPv6 地址是否生效,以及网关是否在同一链路内且能正常通信。
永久保存 IPv6 静态路由(Netplan 系统)
对于 Ubuntu 等使用 Netplan 的系统,ip -6 route 命令添加的路由不会自动持久化——重启后即丢失。必须将配置写入 YAML 文件。
关键点在于:路由条目需要绑定到具体接口,如果网关不在直连子网中,必须显式添加 on-link: true 标志(大部分场景下网关都在直连子网,此参数可省略)。
例如,为 eth0 添加去往 2001:db8:100::/64 的静态路由,下一跳为 2001:db8::1:
network:
version: 2
ethernets:
eth0:
routes:
- to: 2001:db8:100::/64
via: 2001:db8::1
on-link: true # 仅当网关非直连时必须设为 true
addresses: [2001:db8::100/64]
保存后执行 sudo netplan apply,路由即自动加载,重启系统后依然有效。
永久保存 IPv6 静态路由(RHEL/CentOS 系统)
Red Hat 系的做法有所不同,使用 /etc/sysconfig/network-scripts/route6- 文件。格式与 IPv4 的 route- 类似,每行仅写一条路由。
例如,在 /etc/sysconfig/network-scripts/route6-eth0 中写入:
2001:db8:200::/64 via 2001:db8::2 dev eth0 default via 2001:db8::ff dev eth0
这里有几点容易踩坑:
- 文件名必须严格命名为
route6-eth0,接口名写错则系统不会加载。 via后面只能写 IPv6 地址,不能使用主机名。- 修改文件后,执行
sudo systemctl restart network方可生效。
删除或修改已有 IPv6 路由的常见陷阱
使用 ip -6 route del 删除路由时,参数必须与添加时完全一致,否则会报 RTNETLINK answers: No such process。
举例说明,如果最初添加时执行了:
sudo ip -6 route add 2001:db8:300::/64 via 2001:db8::3 dev eth0
删除时必须原样照抄:
sudo ip -6 route del 2001:db8:300::/64 via 2001:db8::3 dev eth0
漏掉 dev eth0 或写成 dev ens33(接口名不一致)都会导致失败。更令人困扰的是,如果之前已写入持久配置(如 Netplan 或 route6 文件),即使临时用命令删除了路由,下次重启网络服务或系统时,旧路由会重新添加。因此修改时必须“双向操作”:既要在运行态删除,又要同步更新配置文件,才能彻底解决问题。
