要确认ipv6默认网关,需执行ip -6 route show default;若无输出则无默认路由;有效默认路由格式为“default via dev proto ”;可用awk '/^default via/ {print $3; exit}'提取网关地址;链路本地网关需指定接口如ping6 fe80::1%eth0。

要快速确认当前系统 IPv6 流量发往哪个网关、走哪块网卡,必须直接读取内核维护的 IPv6 路由表,不能依赖 DNS 解析或旧工具缓存。
用 ip -6 route 查默认路由
打开终端,执行:
ip -6 route show default
这条命令只输出默认路由行,不混入直连子网或本地地址,避免误读。如果返回空,说明当前没有配置 IPv6 默认网关——不是命令失效,而是路由表里真没这一条。
若需同时看到网关地址、出接口和协议来源,去掉 show default,运行完整命令:
ip -6 route
输出中形如 default via fe80::1 dev eth0 proto ra metric 1024 的行才是有效默认路由:【via 后的地址是下一跳网关,dev 后的接口是实际出口,proto ra 表示来自路由器通告,proto static 才是手动配置】。注意:default dev eth0 scope link 这类无 via 的条目不是网关,它只是宣告本机在该链路上“自称默认”,不转发流量。
提取纯网关 IP 地址(脚本可用)
方法一:用 awk 精准截取第三字段
ip -6 route | awk '/^default via/ {print $3; exit}'
这一步会立即打印网关 IPv6 地址,比如 fe80::1,末尾加 exit 是防止匹配到多条时重复输出。
方法二:用 grep + cut 组合(兼容性更强)
ip -6 route | grep '^default via' | cut -d' ' -f3
cut 按空格切分,取第 3 段,和 awk 效果一致,但对字段错位更敏感——如果某行 via 和地址之间多了一个空格,cut 就会切偏。所以优先用 awk 方案。
验证网关是否可达
第一步:确认该网关地址属于链路本地(fe80::/10)还是全局单播(2000::/3),因为 ping 行为不同。
第二步:如果是 fe80:: 开头的地址,必须指定出接口才能通:
ping6 -c 3 fe80::1%eth0
【%eth0 不可省略,否则 ping6 无法确定走哪个链路,会报 “Network is unreachable”】
第三步:如果是全局地址(如 2001:db8::1),直接 ping 即可:
ping6 -c 3 2001:db8::1
只要收到 reply,就证明网关在线且三层可达。收不到不一定是网关宕机,也可能是防火墙屏蔽了 ICMPv6 类型 129(echo reply)。











