在Linux服务器上执行 ip -6 route show 或在Windows服务器上运行 netsh interface ipv6 show route,即可直接查看完整的IPv6路由表,这是排查网络连通性最基础的操作。
为什么服务器需要关注IPv6路由表
IPv6路由表决定了数据包如何从服务器出发到达目标网络,当服务器无法访问IPv6站点、内部IPv6通信异常,或者新接入IPv6网络时,查看路由表能帮你快速定位问题。路由表里每一条记录都代表一个已知的网络路径,包括默认网关、直连网段、静态路由和动态路由协议学习到的路径。
多数情况下,服务器IPv6不通并不是地址配置错误,而是路由表缺少默认路由或路由优先级错乱,行业共识认为,运维人员掌握路由表查看技巧,是IPv6排障的基本功。
服务器IPv6路由表查询命令对比
不同操作系统查看路由表的命令差异很大,但核心思路一致:列出所有IPv6路由条目,包含目标网络、下一跳、接口、优先级等信息,下表对比了主流系统的命令和输出特征:
| 操作系统 | 查询命令 | 输出特点 |
|---|---|---|
| Linux | ip -6 route show |
简洁,每行一条路由,带metric值和dev接口 |
| Linux(传统) | route -A inet6 |
类似IPv4的route输出,已逐渐被ip命令取代 |
| Windows | netsh interface ipv6 show route |
列表形式,显示前缀、接口、网关、metric |
| Windows(旧版) | route print -6 |
兼容命令,但信息不如netsh详细 |
| macOS / FreeBSD | netstat -r -f inet6 |
显示路由表,但默认不包含本地链路地址 |
推荐优先使用 ip -6 route show 和 netsh interface ipv6 show route,这两个命令的输出最直观,且支持参数过滤。
Linux查看IPv6路由表的方法详解
使用ip命令查看所有IPv6路由
执行 ip -6 route show 后会列出服务器的全部IPv6路由,每条记录的结构大致如下:
2001:db8:1::/64 dev eth0 proto kernel metric 256 pref medium
default via 2001:db8:1::1 dev eth0 metric 1024 pref medium
2001:db8:1::/64是目标网络,dev eth0表示从eth0接口发出。proto kernel表示该路由由内核自动生成(通常是直连网段)。default就是默认路由,via 2001:db8:1::1指向网关IPv6地址。metric值越小优先级越高,直连路由的metric通常为256,默认路由为1024。
如果需要只看默认路由,可加参数:ip -6 route show default,这在排查默认网关是否生效时非常有用。
使用route命令查看IPv6路由(备选)
部分旧版本Linux仍支持 route -A inet6,输出风格类似IPv4的route命令:
Kernel IPv6 routing table
Destination Next Hop Flag Met Ref Use If
2001:db8:1::/64 :: U 256 0 0 eth0
default fe80::1 UG 1024 0 0 eth0
Flag列中 U 表示路由可用,G 表示使用网关。注意route命令输出的下一跳如果是 ,代表直连网络,无需网关。
理解IPv6路由表的Metric和优先级
Linux中IPv6路由的metric值影响路由选择,当有多条路由到达同一目标时,metric值最小的路由被选中,你可以通过 ip -6 route change 或 ip -6 route replace 修改metric值来调整优先级。
ip -6 route replace default via 2001:db8:1::1 dev eth0 metric 512
这一操作常被用于调整多线接入场景下的默认路由优先级,比如在国内服务器机房双线接入时,通过修改metric控制流量主备切换。
Windows服务器查看IPv6路由表的方法
使用netsh命令查看路由表
在Windows Server 2012及以上版本,执行 netsh interface ipv6 show route 会输出类似下面的内容:
发布 类型 活动 前缀 接口 网关 ------ ------ -------- ------------------------ ------------ ------------------------ 否 2 是 2001:db8:1::/64 eth0 on-link 否 3 是 ::/0 eth0 fe80::1
- 前缀列显示目标网络,
:/0代表默认路由。 - 接口列是网络接口名称,网关列如果是
on-link表示直连。 - 活动列显示
是说明该路由当前有效。
Windows默认路由的metric由系统自动计算,但你可以通过 netsh interface ipv6 set route 命令手动修改,修改默认路由的metric为256:
netsh interface ipv6 set route ::/0 interface="eth0" metric=256
通过图形界面查看IPv6路由
在Windows Server上,打开“网络和共享中心”→更改适配器设置→右键网卡→状态→详细信息,可以看到IPv6默认网关,但图形界面无法显示完整路由表,排查路由问题时仍建议使用netsh命令。
从服务器IPv6路由表排查常见问题
默认路由缺失导致无法上网
当服务器无法访问IPv6互联网时,第一步查路由表,确认是否存在 default 或 :/0 条目,如果缺少,需要手动添加默认路由:
- Linux:
ip -6 route add default via <网关地址> dev <接口> - Windows:
netsh interface ipv6 add route ::/0 "接口名称" <网关地址>
注意事项:网关地址必须在同一链路可直达,且接口需要正确绑定IPv6地址,业内专家指出,大部分IPv6连通故障都是默认路由配置错误,而非地址分配问题。
路由表条目过多导致性能下降
当启用动态路由协议(如OSPFv3、BGP)时,IPv6路由表可能膨胀到数千条。过多的路由条目会消耗CPU和内存资源,影响转发性能,此时需要过滤或聚合路由,例如使用 ip -6 route flush 清除特定路由,或通过路由策略控制路由表大小。
直连路由消失的排查思路
如果服务器配置了IPv6地址,但路由表中没有对应的直连网段路由,通常是因为接口未启用或IPv6协议栈异常,检查方法:
- Linux:
ip -6 addr show dev <接口>确认地址是否生效。 - Windows:
netsh interface ipv6 show addresses查看地址状态。 - 如果接口状态为down,先启用网卡,再重新获取IPv6地址。
服务器IPv6路由表维护建议
- 定期备份路由表:在变更前执行
ip -6 route show > route_backup.txt,方便回滚。 - 使用监控工具:结合
ip monitor route或netsh interface ipv6 show route轮询,实时感知路由变化。 - 区分静态与动态路由:静态路由要写清楚metric和接口,动态路由需确认协议邻居状态,避免路由黑洞。
- 注意IPv6链路本地地址:默认路由的下一跳通常是链路本地地址(fe80::开头),直连路由的下一跳是 或
on-link,不要误以为网关地址必须是全局单播地址。
无论是云服务器还是物理机,掌握服务器IPv6路由表的查看方法,都能让你在IPv6排障时更高效。记住核心命令,理解路由条目含义,遇到问题先查路由表。 这是最直接、最可靠的解决路径。
Q&A:服务器ipv6路由表查询常见问题
问:Linux下 ip -6 route show 和 route -A inet6 输出结果不一样,以哪个为准?
以 ip -6 route show 为准。route -A inet6 是传统命令,输出格式较老,且在某些发行版中已不再维护。ip 命令是net-tools的现代替代品,支持更多功能和更详细的属性。
问:Windows服务器上 route print -6 无法显示IPv6路由怎么办?
确认系统是否已安装IPv6协议栈,在Windows Server上,默认安装IPv6,但可能被组策略禁用,执行 netsh interface ipv6 show global 查看IPv6是否启用,如果未启用,先执行 netsh interface ipv6 install 激活协议,再使用 netsh interface ipv6 show route 查看路由表。
问:服务器新增IPv6地址后,路由表没有自动更新直连路由,是什么原因?
直连路由由内核自动生成,前提是接口状态为up且IPv6地址已生效,如果接口配置了地址但路由表无直连条目,检查接口是否处于active状态,以及是否启用了IPv6转发,Linux下可通过 sysctl net.ipv6.conf.all.forwarding 查看是否开启转发,转发模式可能影响直连路由的显示。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/565857.html




