linux路由配置错误表现为网络不通、跨网段失败或默认网关失效,主因是路由表混乱、重复路由、错误下一跳或缺失条目;修复需用ip route命令定位并修改异常项,无需重启服务。

Linux路由配置出错,通常表现为网络不通、跨网段访问失败或默认网关失效。核心问题往往出在路由表混乱、重复路由、错误的下一跳地址或缺失必要路由条目。修复关键是准确定位异常条目并用标准命令修正,无需重启网络服务。
快速诊断:查看当前路由表
运行 ip route show 或简写 ip r 查看完整路由表。重点关注三类问题:
- 存在多条默认路由(0.0.0.0/0),但只应有一条指向正确网关
- 目标网段重复出现(如192.168.10.0/24有两条不同via或dev),易导致流量误发
- 关键路由缺失,例如内网互通需手动添加的静态路由未配置
- 某条路由的 dev 接口不存在(如显示 eth1 但实际只有 enp0s3)
临时修复:用 ip route 增删改路由
所有操作无需重启,立即生效(但重启后丢失)。常用操作示例:
- 删除错误默认路由:ip route del default via 192.168.1.254 dev eth0
- 添加正确默认网关:ip route add default via 192.168.1.1 dev eth0
- 添加到内网网段的静态路由:ip route add 10.20.0.0/16 via 192.168.1.100 dev eth0
- 替换某条路由(先删后加,或用 replace):ip route replace 172.16.0.0/12 via 192.168.5.1
永久生效:写入网络配置文件
临时命令重启即失效。要持久化,需按发行版修改对应配置:
- CentOS/RHEL 7+:编辑 /etc/sysconfig/network-scripts/route-接口名(如 route-eth0),每行一条路由,格式:
10.30.0.0/16 via 192.168.2.1 dev eth0 - Ubuntu/Debian(netplan):修改 /etc/netplan/*.yaml,在对应 interface 下添加 routes: 块,指定 to/from/via/on-link 等字段
- 通用方案(兼容性强):将 ip route 命令加入 /etc/rc.local(需确保 rc-local 服务启用)
验证与排错技巧
修复后务必验证,避免“看似正常实则绕路”:
- 用 ip route get 查看系统实际选择哪条路由(如 ip route get 10.10.5.20)
- 配合 tcpdump -i icmp 抓包,确认数据是否从预期接口发出
- 检查反向路径过滤(rp_filter)是否拦截回程包:sysctl net.ipv4.conf.all.rp_filter,值为1可能丢弃非对称路由流量,临时关闭用 sysctl -w net.ipv4.conf.all.rp_filter=0
- 若涉及多网卡,确认没有因 metric 值冲突导致优先级错乱(metric 越小越优先)











