ip route是查看Linux路由表最准、最稳的命令,直连内核netlink接口,输出清晰,IPv4/IPv6统一支持,无需安装;route -n和netstat -rn可能缺失、过时或解析不准。

直接用 `ip route` 查看最准、最稳,它是现代 Linux 默认集成的路由查看工具,不依赖额外安装,输出清晰,IPv4 和 IPv6 都支持,且数据来自内核 netlink 接口,实时性强。
用 ip route 查主路由表和默认网关
运行 ip route show 就能列出主路由表(table main)全部条目。其中带 default via 的行就是默认网关,例如:
default via 192.168.1.1 dev eth0
说明所有非本地流量都发往 192.168.1.1,走 eth0 接口。
- 只提取默认网关地址:用 ip route | grep 'default via'
- 查某段网络是否有路由:如 ip route show 10.0.2.0/24,无输出即无匹配项
- 分开查 IPv4 和 IPv6:分别执行 ip -4 route 和 ip -6 route
- 注意区分两种默认路由:
• default via X.X.X.X:需下一跳可达
• default dev eth0 scope link:直连宣告,不经过网关
route -n 是传统方式,但可能不存在
该命令属于 net-tools 包,在 Alpine、Ubuntu Server Minimal、Fedora Silverblue 等精简系统中默认不装。若提示 command not found,需手动安装:
- 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 参数,否则会卡在 DNS 反查上几秒——这是设计行为,不是故障。
netstat -rn 已逐步淘汰,慎用
执行 netstat -rn 也能显示路由,但它的解析逻辑老旧,在 NetworkManager 或 systemd-networkd 动态管理环境下容易滞后或漏掉默认路由。典型表现是:
- netstat -rn 显示 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 eth0(空网关)
- 而 ip route 明确写出 default via 192.168.1.1
此时应以 ip route 为准。如需验证真实网关,可补查:
nmcli device show | grep IP4.GATEWAY 或 networkctl status
其他方法仅限特定场景
/proc/net/route 是内核原始输出,全是十六进制,人眼难读,适合脚本解析;cat /proc/net/route 中找第二列为 00000000、第四列非零的行,对应默认网关(需字节序转换)。
- 多路由表环境(如策略路由):用 ip route show table 100 指定查某张表
- 想看某目标实际走哪条路径:用 ip route get 8.8.8.8 模拟查询
- NetworkManager 管理的接口:用 nmcli device show eth0 routing











