在现代网络环境中,单一网络路径往往存在单点故障风险。一旦主链路中断,整个通信就可能瘫痪。为了解决这个问题,Linux网络多路径路由技术应运而生。它允许系统通过多条物理或逻辑路径传输数据,从而提升网络的可靠性和性能。

什么是多路径路由?
多路径路由(Multipath Routing)是指操作系统在发送网络数据包时,能够从多个可用的路由路径中选择一条进行传输。这种机制不仅可以实现网络冗余(当一条链路失效时自动切换到另一条),还能通过策略实现负载均衡(将流量分散到多条链路上)。
在Linux中,我们主要通过 ip route 命令配合策略路由(Policy-Based Routing)来实现这一功能。
准备工作
在开始配置前,请确保你有以下条件:
- 一台运行Linux的服务器(如Ubuntu、CentOS等)
- 至少两个网络接口(例如 eth0 和 eth2)
- 每个接口连接到不同的网关(如 192.168.1.1 和 192.168.2.1)
- 具备 root 或 sudo 权限
步骤一:查看当前网络接口
首先,使用以下命令确认你的网络接口状态:
ip addr show你应该能看到类似 eth0、eth2 或 enp0s3 等接口名称。
步骤二:配置静态IP(如果尚未配置)
假设你的两个接口分别连接到两个不同的子网:
eth0:IP 192.168.1.100/24,网关 192.168.1.1eth2:IP 192.168.2.100/24,网关 192.168.2.1
你可以临时设置IP(重启后失效):
sudo ip addr add 192.168.1.100/24 dev eth0sudo ip addr add 192.168.2.100/24 dev eth2步骤三:创建自定义路由表
Linux默认只有一个主路由表(main)。为了实现多路径,我们需要创建额外的路由表。
编辑 /etc/iproute2/rt_tables 文件:
sudo nano /etc/iproute2/rt_tables在文件末尾添加两行(数字必须唯一且小于256):
100 table_eth0101 table_eth2步骤四:为每个接口配置独立路由表
现在,为每个接口添加默认路由到对应的自定义表:
# 为 eth0 配置路由表echo "default via 192.168.1.1 dev eth0" | sudo tee /etc/iproute2/rt_tables.d/table_eth0.conf# 为 eth2 配置路由表echo "default via 192.168.2.1 dev eth2" | sudo tee /etc/iproute2/rt_tables.d/table_eth2.conf或者直接使用 ip route 命令(临时生效):
sudo ip route add default via 192.168.1.1 dev eth0 table table_eth0sudo ip route add default via 192.168.2.1 dev eth2 table table_eth2步骤五:配置策略路由规则
接下来,告诉系统:来自 eth0 的流量使用 table_eth0,来自 eth2 的流量使用 table_eth2。
sudo ip rule add from 192.168.1.100 table table_eth0sudo ip rule add from 192.168.2.100 table table_eth2步骤六:配置多路径默认路由(实现负载均衡)
如果你想让所有出站流量自动在两条链路之间做负载均衡(而非仅基于源IP),可以删除主路由表中的默认路由,并添加一个多路径路由:
# 先删除可能存在的默认路由sudo ip route del default# 添加多路径默认路由sudo ip route add default \ nexthop via 192.168.1.1 dev eth0 weight 1 \ nexthop via 192.168.2.1 dev eth2 weight 1这里的 weight 表示权重,数值越大,分配的流量越多。设为1表示均等分配。
验证配置
使用以下命令查看路由规则:
ip rule showip route show table table_eth0ip route show table table_eth2ip route show你也可以用 ping 或 traceroute 测试连通性,并断开某条链路观察是否自动切换。
持久化配置
上述命令在重启后会失效。要永久生效,需将命令写入启动脚本(如 /etc/rc.local)或使用网络管理工具(如 NetworkManager、systemd-networkd)进行配置。
总结
通过本文,你已经学会了如何在Linux中配置多路径路由,实现网络冗余和基本的负载均衡。这项技术是构建高可用网络基础设施的关键组成部分,尤其适用于对稳定性要求较高的生产环境。掌握Linux网络配置和静态路由策略,将大大提升你的系统运维能力。
希望这篇教程能帮助你轻松入门Linux多路径路由!

