跨网段访问不通的核心问题是路由决策错误;需先用route -n检查destination、gateway、genmask、iface四列是否正确,再通过ip route get验证实际转发路径,并结合arp -n确认网关mac可达性,最后用traceroute定位路径中断点。

跨网段访问不通,核心问题往往出在路由决策环节。直接看内核怎么选路,比反复 ping 更快定位根源。
先用 route -n 快速扫一眼路由表
执行 route -n,重点盯四列:
- Destination:0.0.0.0 是默认路由;192.168.20.0 这类是目标网段;带 255.255.255.255 掩码的是主机路由
- Gateway:为 0.0.0.0 表示直连;为真实 IP 时,该地址必须落在本机某个网卡的子网内,否则无法 ARP,必丢包
- Genmask:必须和 Destination 匹配。比如 Destination 是 10.5.0.0,Genmask 却是 255.0.0.0,那实际匹配的是 10.0.0.0/8,可能覆盖更细粒度的路由
- Iface:出接口是否符合预期。比如目标在 172.16.30.0/24,但路由条目指向 eth0,而该网段实际应走 eth1,流量就发错了地方
验证内核真实转发路径
route -n 只是静态配置,得看系统实际怎么走:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 运行 ip route get (例如 ip route get 172.16.30.5),它会模拟选路,返回最终走哪条路由、从哪个接口发出、用哪个源地址
- 如果返回结果里的 Gateway 是错的网关,或 Iface 不是你预期的网卡,说明路由表本身就有误
- 再配合 arp -n | grep 确认能否解析到 MAC 地址;若无记录且 ping 网关不通,大概率是网关不在同一子网
排查三类高频路由异常
多数跨网段丢包源于以下配置问题:
- 默认网关不在本地子网:比如本机 IP 是 10.1.1.100/24,route -n 显示 Gateway 是 192.168.100.1 —— 它根本没法 ARP,所有跨网段包都会超时
- 重叠网段路由冲突:同时存在 10.0.0.0/8 via 10.1.1.1 和 10.0.5.0/24 via 10.2.2.2,但后者因 metric 高或插入晚未被优先匹配,导致部分流量误发
- 直连路由缺失:本机配了 192.168.25.100/24,但 route -n 里找不到 192.168.25.0 * 255.255.255.0 U 这样的直连条目 —— 网卡可能没 UP 或地址未生效,该网段内通信全挂
结合 traceroute 定位路径中断点
如果路由看起来没问题,但还是不通,用路径追踪确认数据是否真能走出去:
- 执行 traceroute -n (加 -n 跳过 DNS 解析,更快)
- 观察在哪一跳开始出现 * * *:若卡在网关后第一跳,说明流量出了本机却没被网关转发,可能是网关未开启 IP 转发、NAT 未配,或上游策略拦截
- 若前几跳延迟正常,某跳突然飙升或后续全不可达,问题大概率在那个节点或之后的链路上










