route -n和ip route show需结合使用:前者快速识别默认网关、直连状态与网关可达性,后者明确路由来源、优先级及真实路径,并必须用ip route get验证实际转发行为。

直接用 route -n 和 ip route show 查看路由表,关键不在“能不能看到”,而在“看得懂、判得准、验得实”。两者输出结构和语义逻辑不同,混着看容易误读。下面分三块讲清楚怎么用、怎么看、怎么交叉验证。
route -n:快速定位默认网关与直连状态
它输出是固定五列(Destination、Gateway、Genmask、Flags、Iface),适合人工一眼扫出基础问题:
当代理已经知道网站路由或内容URL,并且在启动前需要有效的sitemap XML、sitemap索引或robots.txt引用时,请使用sitemap。这是一个发布构件技能,而不是爬虫或SEO平台。
- 找默认网关:只看 Destination 是
0.0.0.0的那一行,对应Gateway列的 IP 就是下一跳地址;若该列为0.0.0.0,说明是直连路由,不经过网关 - 识别主机路由:
Flags列含UH(U=up,H=host)表示目标是单个 IP,比如10.0.5.8,不是网段 - 检查网关可达性:若
Gateway是一个 IP(如192.168.100.1),但本机所有网卡都不在192.168.100.0/24网段内,这个网关根本无法 ARP 解析,所有发往外网的包都会丢 - 注意 Genmask 匹配:例如
Destination是172.16.20.0,Genmask却是255.255.0.0,实际匹配的是172.16.0.0/16,可能覆盖更精确的子网路由
ip route show:看清路由来源、优先级与真实路径
它的输出是自然语言风格,字段丰富,能反映内核真实决策逻辑:
- 默认路由明确标为
default via <ip> dev <iface> proto <source> metric <value></value></source></iface></ip>,其中proto告诉你这条路由是 DHCP 自动获取、静态配置还是内核自建;metric决定多条默认路由谁生效 - 直连网段带
scope link,并常附src字段,比如192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100,说明从该网段发出的包默认用192.168.1.100当源地址 - 查特定目标:运行
ip route show 10.0.5.0/24,有结果就说明这条路由存在;没输出不代表没通,可能是被更长前缀(如主机路由)或策略路由接管 - IPv4/IPv6 分开查:
ip -4 route show和ip -6 route show,避免混淆
必须配合 ip route get 验证实际转发行为
光看表不等于数据真按那走。策略路由、源地址选择、rp_filter 等都可能中途改写路径:
- 执行
ip route get 8.8.8.8,返回类似8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100 uid 1000—— 这才是内核此刻真正选的路 - 强制指定源地址测试:比如本机有两个 IP(
192.168.1.100和10.0.5.20),想确认访问某服务是否走特定出口,用ip route get 10.0.5.100 from 192.168.1.100 - 对比
route -n和ip route get结果不一致?说明有策略路由、多表或 conntrack 影响了选路,不能只盯着主表










