Linux路由分析基础
Linux内核通过强大的路由子系统实现网络数据包的高效转发,这一机制是网络通信的核心,理解Linux路由分析不仅有助于系统优化,还能排查网络故障,本文将从路由表结构、路由查找流程、常用工具及高级配置四个方面展开分析。

Linux路由表结构
Linux的路由功能由路由表(Routing Table)和策略路由(Policy Routing)共同支撑,路由表是存储路由条目的数据库,每条条目包含目标网络、下一跳、出接口等信息,Linux默认支持多张路由表,可通过ip route show table命令查看。
主要路由表类型包括:
- main表:默认路由表,存储系统核心路由规则,适用于大多数常规流量。
- local表:维护本地接口地址和广播路由,用于本地通信,不可修改。
- default表:空表,通常用于策略路由的默认行为。
- 自定义表:用户可根据需求创建,例如为特定应用或流量路径配置独立路由。
路由条目关键字段(如下表所示)决定了数据包的转发路径:
| 字段名 | 说明 | 示例值 |
|---|---|---|
| destination | 目标网络IP地址或IP段 | 168.1.0/24 |
| gateway | 下一跳路由器IP地址,若为0.0.0表示直连 |
168.1.1 |
| dev | 出接口名称 | eth0 |
| src | 源IP地址(可选) | 0.0.2 |
| metric | 路由优先级,值越小优先级越高 | 100 |
| scope | 路由作用范围,如global(全局)、link(链路本地)、host(本地主机) |
global |
路由查找流程
当数据包需要转发时,Linux内核按以下顺序进行路由查找:
-
检查本地路由:首先查询
local表,判断目标IP是否为本机地址或广播地址,若是则直接交付上层协议,不转发。
-
匹配最长前缀:在
main表中,内核通过最长前缀匹配(Longest Prefix Match)原则查找最具体的路由条目,目标IP为168.1.5时,/24段的优先级高于/16段。 -
默认路由兜底:若未找到匹配条目,则使用默认路由(
0.0.0/0),通过指定的网关转发数据包。 -
策略路由扩展:若启用策略路由(通过
ip rule配置),内核会先查询策略规则,决定使用哪张路由表进行查找,而非默认的main表,可设置“来自特定源IP的流量走自定义表”。 -
递归查找:若下一跳网关不在直连网络,内核会递归查找网关的路由,直到找到直连接口或默认路由。
路由分析工具
Linux提供了多种命令行工具用于查看和管理路由,以下是常用工具及使用场景:

ip route:查看和修改路由表
- 查看路由:
ip route show或ip r,默认显示main表;ip route show table custom查看自定义表。 - 添加临时路由:
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0,重启后失效。 - 添加永久路由:编辑
/etc/network/interfaces(Debian/Ubuntu)或/etc/sysconfig/network-scripts/route-eth0(CentOS/RedHat)。
route:传统工具(逐渐被ip取代)
route -n以数字形式显示路由,避免DNS解析延迟。
netstat -rn:快速查看路由表
-r显示路由,-n以数字形式输出,适合快速排查。
traceroute:跟踪数据包路径
- 通过发送TTL递增的UDP包,定位路由路径中的中间节点,例如
traceroute -I 8.8.8.8使用ICMP协议。
ss/netstat:结合路由分析连接状态
- 查看某IP的连接及路由:
ss -tp 'dst 192.168.1.100'。
高级路由配置
多路径路由(ECMP)
Linux支持等价多路径路由,实现负载均衡和冗余。
ip route add 203.0.113.0/24 nexthop via 192.168.1.1 dev eth0 weight 1 \
nexthop via 192.168.1.2 dev eth1 weight 1
weight参数可设置不同路径的流量比例。
基于策略的路由(Policy Routing)
通过ip rule和ip route结合,实现灵活的路由控制,为SSH流量指定专用路由:
ip route add 10.0.0.0/24 via 192.168.100.1 dev eth1 table ssh_table ip rule add from 192.168.1.10 table ssh_table
路由故障排查
- 路由未生效:检查
metric值是否冲突、接口状态(ip link show)、网关可达性(ping)。 - 流量未按预期转发:使用
tcpdump抓包分析数据包是否匹配路由规则,例如tcpdump -i eth0 src 10.0.0.2。 - 策略路由失效:确认
ip rule列表顺序(规则按优先级匹配)及路由表是否存在。
Linux路由分析是网络管理的基础技能,通过理解路由表结构、查找流程及工具使用,可高效解决网络转发问题,无论是企业环境的多路径配置,还是个人服务器的路由优化,均需以扎实的路由知识为支撑,结合ip、traceroute等工具进行实践,能进一步提升网络运维能力。


















