Linux路由表基础概念
Linux路由表是操作系统内核中用于决定数据包转发路径的核心数据结构,它记录了目标网络与下一跳(next-hop)的映射关系,当系统需要发送数据包时,会查询路由表以确定最佳传输路径:若目标地址在本地网络范围内,则直接发送;若目标地址在远程网络,则通过默认网关或特定路由进行转发,理解路由表的结构和工作原理是网络配置与管理的基础。

路由表主要由以下字段组成:
- 目标网络(Destination):目标IP地址或地址范围,表示数据包的最终目的地。
- 子网掩码(Genmask):用于确定目标网络的位数,与目标地址结合划分网络范围。
- 网关(Gateway):下一跳设备的IP地址,数据包将发送至该地址进行转发。
- 输出接口(Iface):发送数据包的网络接口,如eth0、ens33等。
- 跃点数(Metric):路由的成本值,数值越小表示路径优先级越高。
查看Linux路由表
在修改路由表前,需先掌握查看当前路由配置的方法,Linux提供了多种命令用于查询路由信息,其中最常用的是ip route和route命令。
使用ip route命令
ip route是iproute2工具包中的命令,功能更强大且推荐使用,执行以下命令可查看完整路由表:
ip route show
输出示例:
default via 192.168.1.1 dev eth0 proto dhcp metric 100
10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.101
default表示默认路由,即目标地址不在路由表中其他条目时的默认转发路径。
使用route命令
route是传统命令,逐渐被ip route替代,但在旧系统中仍可用:
route -n
参数-n表示以数字形式显示地址,避免DNS解析延迟,适合快速查看。
修改路由表的常用方法
Linux路由表的修改可通过临时命令或永久配置实现,临时修改会立即生效但重启后失效,适合临时调试;永久修改需通过配置文件或服务管理,确保重启后保留。
添加临时路由
使用ip route add命令可添加静态路由,基本语法为:

ip route add 目标网络/子网掩码 via 网关 dev 接口 [metric 跃点数]
示例1:添加默认路由
若系统未配置默认路由,可通过以下命令添加:
ip route add default via 192.168.1.254 dev eth0
示例2:添加特定网络路由
若需访问168.100.0/24网络,且网关为0.0.1,接口为eth1:
ip route add 192.168.100.0/24 via 10.0.0.1 dev eth1
示例3:添加直连路由
若目标网络与本地接口在同一网段,可直接指定接口而不需网关:
ip route add 172.16.0.0/16 dev eth2
删除临时路由
使用ip route del命令删除路由,语法与add类似:
ip route del 目标网络/子网掩码
示例:删除默认路由
ip route del default
修改现有路由
Linux不支持直接修改路由条目,需先删除再添加,将默认路由的网关从168.1.1改为168.1.254:
ip route del default ip route add default via 192.168.1.254 dev eth0
永久修改路由表
不同Linux发行版的永久配置方式有所不同,以下以主流系统为例说明。
Ubuntu/Debian系统
编辑/etc/network/interfaces文件,添加路由条目,在eth0接口配置下添加:
auto eth0
iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
gateway 192.168.1.1
up ip route add 192.168.100.0/24 via 10.0.0.1 dev eth1
up后的命令表示接口启动时执行。

CentOS/RHEL系统
编辑/etc/sysconfig/network-scripts/route-<接口名>文件,例如route-eth0:
default via 192.168.1.1 dev eth0 192.168.100.0/24 via 10.0.0.1 dev eth1
保存后重启网络服务:
systemctl restart network
使用Netplan(Ubuntu 18.04+)
在Netplan配置文件(如/etc/netplan/01-netcfg.yaml)中添加路由:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.101/24]
routes:
- to: default
via: 192.168.1.1
- to: 192.168.100.0/24
via: 10.0.0.1
gateway4: 192.168.1.1
应用配置:
netplan apply
路由表的高级应用
基于策略的路由(Policy-Based Routing, PBR)
默认路由表仅根据目标地址选择路径,而PBR可根据源地址、端口等策略选择不同路由,实现步骤如下:
- 创建路由表:在
/etc/iproute2/rt_tables中定义自定义路由表(例如添加100 custom_table)。 - 添加路由规则:使用
ip rule命令添加策略规则,将源地址为0.0.100的数据包导入自定义表:ip rule add from 10.0.0.100 table custom_table
- 配置自定义表路由:向
custom_table添加路由:ip route add default via 10.0.0.1 dev eth1 table custom_table
路由缓存与故障排查
Linux内核会缓存路由信息以提高性能,但有时可能导致路由变更不生效,可通过以下方式清理缓存:
ip route flush cache
若路由配置后仍无法通信,可排查以下问题:
- 网关可达性:使用
ping测试网关是否在线:ping 192.168.1.1
- 接口状态:确认接口是否启用:
ip link show eth0
- 防火墙规则:检查
iptables或firewalld是否拦截了数据包。
Linux路由表的修改是网络管理中的基础操作,需根据场景选择临时或永久配置方式,通过ip route命令可快速管理路由条目,而永久配置需结合发行版特性调整文件,在实际应用中,还需结合PBR等高级功能实现复杂的路由策略,并通过工具排查潜在问题,掌握路由表管理技能,有助于优化网络性能、保障系统通信稳定性。
















