Linux路由详解
Linux系统的路由功能是网络通信的核心,它决定了数据包从源地址到目标地址的传输路径,理解Linux路由机制对于网络管理、系统调试和服务部署至关重要,本文将详细解析Linux路由的基本概念、命令工具、配置方法及常见应用场景。

路由表的基本结构
Linux路由表是内核维护的数据结构,用于存储路由规则,每条路由记录包含目标网络、子网掩码、网关、输出接口等关键信息,通过ip route show命令可以查看当前系统的路由表:
default via 192.168.1.1 dev eth0 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
- 目标网络(Destination):表示数据包的目的地地址范围,如
168.1.0/24或default(默认路由)。 - 网关(Gateway):下一跳设备的IP地址,用于跨网段通信。
- 输出接口(Dev):数据包发出的网络接口,如
eth0或wlan0。 - 路由类型(Proto):标识路由来源,如
kernel(内核动态生成)、static(静态配置)或dhcp(DHCP分配)。
常用路由管理命令
Linux提供了ip和route两套工具管理路由,其中ip命令是现代Linux系统的推荐工具。
查看路由表
ip route show # 显示所有路由规则 ip route get 8.8.8.8 # 查询访问特定IP的路由路径
添加静态路由
# 添加目标网络192.168.2.0/24,通过网关192.168.1.254转发 sudo ip route add 192.168.2.0/24 via 192.168.1.254 dev eth0 # 添加默认路由 sudo ip route add default via 192.168.1.1
删除路由
sudo ip route del 192.168.2.0/24
临时修改路由
sudo ip route replace default via 10.0.0.1 # 替换默认路由
路由优先级与策略路由
Linux系统中,路由的优先级由管理距离(Metric)决定,Metric值越小,路由优先级越高。
# 添加两条默认路由,优先级不同 ip route add default via 192.168.1.1 metric 100 ip route add default via 10.0.0.1 metric 50
系统会优先选择Metric为50的路由。
策略路由(Policy Routing)允许基于数据包的源地址、协议等条件选择不同的路由表,通过ip rule命令可以实现:
# 创建自定义路由表 echo "200 custom_table" >> /etc/iproute2/rt_tables # 添加策略规则:源IP为192.168.1.100的数据包使用custom_table ip rule add from 192.168.1.100 table custom_table # 为custom_table添加路由 ip route add default via 10.0.0.1 table custom_table
路由配置的持久化
临时路由配置在系统重启后会丢失,需通过配置文件实现持久化。
Debian/Ubuntu系统
编辑/etc/network/interfaces文件:

up ip route add 192.168.2.0/24 via 192.168.1.254 dev eth0
RHEL/CentOS系统
编辑/etc/sysconfig/network-scripts/route-eth0文件:
168.2.0/24 via 192.168.1.254 dev eth0
使用Netplan(Ubuntu 18.04+)
在/etc/netplan/01-netcfg.yaml中配置:
network:
version: 2
ethernets:
eth0:
routes:
- to: 192.168.2.0/24
via: 192.168.1.254
dhcp4: no
addresses: [192.168.1.100/24]
路由故障排查
当网络通信异常时,可通过以下步骤排查路由问题:
-
检查路由表:确认目标网络是否存在有效路由。
ip route get <目标IP>
-
测试网关连通性:
ping 192.168.1.1 # 测试默认网关是否可达
-
查看接口状态:确保网络接口已启用且IP配置正确。
ip addr show eth0
-
检查防火墙规则:
iptables或firewalld可能拦截数据包。
sudo iptables -L -n
-
启用IP转发(如需充当路由器):
sudo sysctl -w net.ipv4.ip_forward=1
高级路由应用
-
多线路负载均衡:通过多网卡绑定实现冗余和负载均衡。
ip route add default scope global nexthop dev eth0 weight 1 nexthop dev eth1 weight 1
-
隧道路由:配置GRE或IPsec隧道,实现跨网络通信。
ip tunnel add gre0 mode gre remote 203.0.113.2 local 192.168.1.100 ip link set gre0 up ip addr add 10.0.0.1/24 dev gre0
Linux路由功能是网络运维的基础,掌握路由表管理、策略路由和故障排查方法,能够有效提升网络服务的稳定性和性能,无论是简单的静态路由配置,还是复杂的策略路由实现,理解其底层原理都是解决实际问题的关键,通过合理规划和持续优化,Linux系统可以灵活应对各种网络场景需求。

















