ip route show 是查看 Linux IPv4 主路由表最可靠方式,输出含目标网络、下一跳、出接口、协议来源及 metric;IPv6 需用 ip -6 route show;route 命令属 net-tools 包,精简系统需手动安装。

直接执行 ip route show 就能看到全部 IPv4 路由条目
这是目前最稳妥、也最通用的一种做法。现在的 Linux 发行版基本都会默认带上 iproute2,所以通常不用额外安装。它的输出也很直观:一行就是一条路由,里面会把目标网络、下一跳、出接口、协议来源(比如 proto kernel 或 proto dhcp)以及优先级(metric)交代清楚。还有一点很关键:ip route 在不带参数时,默认只展示 IPv4 的主路由表(table main),不会把 IPv6 或其他策略路由表的内容混在一起。
查 IPv6 路由必须用 ip -6 route show
ip route 这个命令本来就不会显示 IPv6 路由,想看这部分内容,正确做法只有一个:显式加上 -6 参数。要是只执行 ip route,却总觉得“好像少了几条路由”,问题往往不在系统本身,而是在 IPv6 路由被直接漏看了。很常见的一种情况是:通过 DHCPv6 或 SLAAC 自动下发的默认网关,只会出现在 ip -6 route 的输出中,ip route 里则完全不会体现。
遇到 command not found: route 别慌,这不是故障
该命令属于 net-tools 包,在 Alpine、Ubuntu Server Minimal、Fedora Silverblue 等精简系统中默认未安装。它不是“失效”,而是压根没装。解决方法取决于发行版:
- Debian/Ubuntu:
sudo apt install net-tools - RHEL/CentOS 7/8:
sudo yum install net-tools或sudo dnf install net-tools - Alpine:
apk add net-tools
装完后务必加 -n 参数(即 route -n),否则会卡在 DNS 反查上——这不是 bug,是设计如此。
别信 netstat -rn 显示的默认网关,尤其在 NetworkManager 环境下
它和 ip route 数据源相同,但解析逻辑老旧,对动态管理的路由(比如 NetworkManager 或 systemd-networkd 注入的 default via)识别不全。典型不一致现象:
netstat -rn显示0.0.0.0 0.0.0.0 0.0.0.0 U 000 eth0(无 gateway)ip route明确显示default via 192.168.1.1 dev eth0
此时应以 ip route 为准。验证 NetworkManager 管理的网关可用:nmcli device show | grep IP4.GATEWAY。
多路由表(如 local、main、自定义表)不会自动合并到 ip route show 输出里,要查特定表得显式指定 table 参数,比如 ip route show table local。这点容易漏,尤其排查本地广播或链路地址转发问题时。