ip route 是当前最可靠、最通用的查看方式,因其预装于几乎所有现代发行版,直接通过 netlink 与内核通信,支持 ipv4/ipv6 统一语法、多路由表及策略路由,而 route -n 依赖过时接口、字段语义模糊且信息不全。

ip route 是当前最可靠、最通用的查看方式,几乎所有现代发行版都预装且默认启用;route -n 仅在安装了 net-tools 的系统上可用,且输出字段含义与旧内核行为强绑定,不推荐作为首选。
为什么优先用 ip route 而不是 route
内核自 2.6.39 起已移除路由缓存机制,route 依赖的底层接口逐渐过时;ip route 直接通过 netlink 与内核通信,支持 IPv4/IPv6 统一语法、多路由表、策略路由等现代特性。route 输出中 Genmask 字段容易误导(例如把 /32 主机路由显示为 255.255.255.255,但实际匹配逻辑由内核 FIB 决定),而 ip route 明确用 CIDR 表示前缀长度,语义更准确。
ip route 查看路由表的常用组合
- 查看全部 IPv4 路由:
ip route show(或简写为ip r) - 只提取默认网关:
ip route | grep 'default via',输出形如default via 192.168.1.1 dev eth0 proto dhcp metric 100 - 查 IPv6 路由:
ip -6 route show,不要漏掉-6,否则默认只查 IPv4 - 查特定目标网络的路径:
ip route show 10.20.30.0/24,若无匹配项会静默退出,不报错 - 查多路由表(如策略路由):
ip route show table 100或ip route show table mytable,需先确认表名存在(cat /etc/iproute2/rt_tables)
route -n 还能用吗?怎么避免踩坑
能用,但有明显限制:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 必须加
-n,否则遇到 DNS 延迟或配置错误的/etc/hosts会导致命令卡住几秒——这不是 bug,是设计行为 - 输出中
Gateway列为0.0.0.0表示直连路由,不是“没有网关”,别误判为异常 - 若提示
command not found,Debian/Ubuntu 系统执行sudo apt install net-tools,RHEL/CentOS 8+ 需用dnf install net-tools(yum已废弃) -
route -n不显示路由协议(proto)、度量值(metric)、作用域(scope)等关键字段,排查多网关冲突时信息严重不足
别忽略 ip route get 这个验证动作
光看路由表不等于数据包真会按那条路走。比如你刚配了一条静态路由,但没生效,ip route show 里能看到,ip route get 8.8.8.8 却可能返回完全不同的结果——它模拟真实查找过程,受策略路由、源地址选择、FIB 规则影响。
- 测试某 IP 的实际出路径:
ip route get 10.0.5.100 - 强制指定源地址测试:
ip route get 10.0.5.100 from 192.168.2.50 - 注意:该命令不修改路由表,只做一次性查询,无副作用
rp_filter)、甚至 iptables 的 mangle 表都可能中途改写路由行为。ip route 看到的是“静态快照”,不是“最终路径”。










