Linux断网常因路由表冲突,需先用ip rule show和ip route show table检查多表策略,再用ip route get模拟报文路径,识别重复默认路由、主机路由劫持、策略规则顺序错乱三类问题,最后逐条清理并验证ARP状态。

路由表冲突是 Linux 断网的常见原因,尤其在多网卡、手动加过静态路由或反复修改网络配置后。排查关键不是“加新路由”,而是先看清当前真实生效路径,再精准清理冗余条目。
看全路由表和策略规则
只运行 ip route 不够——它只显示主表(table main),而多网卡环境常启用策略路由。必须同步检查:
- 执行 ip rule show,看是否有多个 from 或 to 规则;特别注意 from all lookup main 是否排在具体规则前面;
- 对每个非默认表(如 table 100、200),运行 ip route show table 100 查其内容;
- 用 ip route get 8.8.8.8 和 ip route get 10.20.5.10 from 192.168.1.10 iif enp0s3 模拟真实报文,确认实际走哪条路径。
识别三类高频冲突模式
多数断网问题可归为以下一种或多种:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 重复默认路由:多个 default via X.X.X.X 条目且 metric 相同,内核按字典序选第一条,导致部分流量发错网关;
- 主机路由劫持:例如同时存在 192.168.1.0/24 dev eth0 和 192.168.1.100/32 via 10.0.0.1,后者会强制所有发往该 IP 的包绕过子网路由;
- 策略规则顺序错乱:比如一条通用规则 pref 32766 from all lookup main 排在 pref 100 from 10.0.2.100 lookup 101 前面,结果本该进自定义表的流量被吞进主表。
安全清理与重建
别盲目 flush,route -f 或 ip route flush table main 会清空所有网关入口,可能瞬间断网。更稳妥的做法是:
- 逐条删除冲突路由:ip route del default via 192.168.1.2 dev eth1(保留你真正要用的那条);
- 删除错误策略规则:ip rule del pref 32766,再按需重建,确保高优先级规则(小 pref 值)在前;
- 为每张网卡配独立路由表(如 eth1 → table 101),并绑定源 IP:ip rule add from 10.0.2.100 table 101,避免跨表干扰。
联动验证 ARP 状态
即使路由正确,若网关 MAC 学不到,照样不通:
- 执行 ip neigh show 查网关 IP 对应条目:状态为 FAILED 或缺失,说明 ARP 失败;
- 用 tcpdump -i enp0s3 arp 抓包,确认是否发出 ARP 请求、是否有 reply 返回;
- 手动刷新:ip neigh del 192.168.1.1 dev enp0s3,再 ping 一次触发重学习。










