Linux ip route 命令实战:3种场景解析路由表输出与静态路由配置

Linux ip route 命令实战:3种场景解析路由表输出与静态路由配置
Linux ip route 命令实战3种场景解析路由表输出与静态路由配置1. 路由表基础与核心概念路由表是Linux系统中决定网络数据包传输路径的关键数据结构。想象一下城市交通导航系统——当你输入目的地后系统会计算出最优路线。路由表的工作原理与此类似只不过它处理的是网络数据包而非车辆。现代Linux系统主要使用ip route命令管理路由表相比传统的route命令它提供了更丰富的功能和更灵活的配置方式。让我们先看一个典型的路由表输出示例$ ip route show default via 192.168.1.1 dev eth0 proto dhcp metric 100 10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100路由表字段解析字段说明示例值分析Destination目标网络或主机default表示默认路由10.8.0.0/24表示特定子网via下一跳网关192.168.1.1表示数据包转发到这个网关dev出口接口eth0表示通过以太网卡发送proto路由来源kernel表示内核自动添加dhcp表示通过DHCP获取scope路由范围link表示直连网络global表示全局路由src源地址发送数据包时使用的源IP地址metric路由优先级数值越小优先级越高路由类型主要分为三类主机路由指向单个IP地址的路由网络路由指向整个子网的路由默认路由当没有更具体路由时使用的兜底路由提示使用ip -4 route show table all可以查看所有路由表内容包括系统维护的local、main等特殊路由表。2. 场景一双网卡分流配置实战在企业服务器环境中双网卡配置非常常见——一个网卡连接内网一个连接外网。通过合理配置路由表可以实现流量的智能分流。2.1 环境准备假设我们有以下网络环境网卡eth0IP 192.168.1.100/24网关192.168.1.1网卡eth1IP 10.0.0.100/24网关10.0.0.1目标让访问203.0.113.0/24的流量走eth1其他流量走eth02.2 配置步骤首先查看当前路由表ip route show添加特定网段路由sudo ip route add 203.0.113.0/24 via 10.0.0.1 dev eth1设置默认路由如果尚未设置sudo ip route add default via 192.168.1.1 dev eth0验证路由是否生效ip route get 203.0.113.50预期输出应显示该地址通过eth1转发203.0.113.50 via 10.0.0.1 dev eth1 src 10.0.0.1002.3 持久化配置临时添加的路由在重启后会丢失需要在网络配置文件中永久保存。不同发行版的配置方式Debian/Ubuntu 编辑/etc/network/interfaces在对应网卡配置后添加up ip route add 203.0.113.0/24 via 10.0.0.1 dev eth1RHEL/CentOS 创建/etc/sysconfig/network-scripts/route-eth1文件203.0.113.0/24 via 10.0.0.1 dev eth13. 场景二临时路由配置与测试在故障排查或网络测试时经常需要临时修改路由表。与永久配置不同临时路由不会在系统重启后保留。3.1 临时路由操作添加临时路由sudo ip route add 198.51.100.0/24 via 192.168.1.254 dev eth0删除临时路由sudo ip route del 198.51.100.0/24修改现有路由先删后加sudo ip route del 198.51.100.0/24 sudo ip route add 198.51.100.0/24 via 192.168.1.200 dev eth03.2 路由测试技巧使用ping和traceroute验证路由traceroute -n 198.51.100.1检查特定地址的路由路径ip route get 198.51.100.13.3 高级路由策略当需要更复杂的路由策略时可以结合ip rule命令# 创建新路由表 echo 200 custom /etc/iproute2/rt_tables # 添加路由到自定义表 ip route add default via 10.0.0.1 table custom # 添加规则使用该表 ip rule add from 192.168.1.100 table custom4. 场景三路由优先级与策略路由当存在多条可能的路由路径时系统会根据特定规则选择最优路由。理解这些规则对网络排错至关重要。4.1 路由选择规则Linux内核按以下顺序评估路由匹配最具体的网络前缀最长前缀匹配比较路由的metric值越小优先级越高选择最近添加的路由后添加的优先级高4.2 路由metric调整查看接口metric值ip link show eth0修改接口metric影响自动生成的路由sudo ip link set dev eth0 metric 200为特定路由设置metricsudo ip route add default via 192.168.1.1 dev eth0 metric 1004.3 多路由表管理Linux支持多达255个路由表默认使用main表254。查看所有路由表ip route show table all路由表管理常用操作# 查看特定表的路由 ip route show table custom # 清空路由表缓存 ip route flush cache # 删除整个路由表 ip route flush table custom5. 排错与最佳实践5.1 常见问题排查路由不生效检查清单确认路由已正确添加ip route show检查接口状态ip link show验证网关可达性ping 网关IP检查防火墙规则iptables -L -n -v查看内核日志dmesg | grep eth0典型错误处理错误RTNETLINK answers: Network is unreachable原因网关不在本地网络的直接广播域内 解决先确保能ping通网关地址错误RTNETLINK answers: File exists原因尝试添加已存在的路由 解决先删除旧路由再添加或使用replace选项5.2 性能优化建议减少路由表规模合并相似路由合理设置metric确保备用路由正确触发定期清理无效路由特别是动态学习的路由考虑使用路由缓存echo 1 /proc/sys/net/ipv4/route/gc_interval5.3 监控与维护实时监控路由变化ip monitor route记录路由变更历史sudo apt install sysstat sar -n DEV 1定期检查路由表健康状态netstat -rn ip route get 8.8.8.8