登录
首页 >  文章 >  linux

Linux多路径路由配置详解

时间:2026-03-08 10:10:33 132浏览 收藏

本文详细讲解了在Linux系统中通过策略路由与多路径路由(ECMP)协同实现精细化流量分发的完整实战方案——从启用IP转发、禁用反向路径过滤,到创建自定义路由表并绑定源地址/目的地址/应用层标记(iptables fwmark)等多维度策略规则,再到利用nexthop语法配置负载均衡式多路径出口,最后通过systemd服务确保配置永久生效;无论您需要按业务类型分流至不同网络出口、构建高可用双线上网环境,还是为特定应用(如HTTP流量)指定专用链路,这套可落地、可扩展、生产就绪的配置方法都能为您提供清晰、可靠且高效的解决方案。

Linux如何配置多路径路由_Linux策略路由与多出口设置【网络】

如果您在Linux系统中需要为不同目的地址或源地址配置多条路由路径,以实现流量按策略分发到多个网络出口,则需通过策略路由与多路径路由机制完成。以下是具体配置步骤:

一、启用IP转发与禁用反向路径过滤

策略路由依赖内核开启IPv4转发功能,并需关闭严格的反向路径验证(rp_filter),否则部分策略路由包可能被丢弃。

1、临时启用IPv4转发:
执行命令 echo 1 > /proc/sys/net/ipv4/ip_forward

2、临时关闭所有接口的rp_filter:
执行命令 for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $i; done

3、永久生效需编辑 /etc/sysctl.conf,添加以下两行:
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter = 0

二、创建自定义路由表并添加规则

Linux策略路由通过将路由表与选择规则绑定实现分流,需先在/etc/iproute2/rt_tables中注册新表名,再使用ip ruleip route配置对应关系。

1、向 /etc/iproute2/rt_tables 追加两行:
200 table_a
201 table_b

2、为接口eth0(主出口)配置默认路由至table_a:
执行命令 ip route add default via 192.168.1.1 dev eth0 table table_a

3、为接口eth1(备用出口)配置默认路由至table_b:
执行命令 ip route add default via 10.0.2.1 dev eth1 table table_b

4、添加基于源地址的策略规则:
执行命令 ip rule add from 192.168.1.100/32 table table_a
执行命令 ip rule add from 10.0.2.100/32 table table_b

三、基于目的地址的多路径路由配置

当同一目标网络存在多条可达路径时,可使用等价多路径(ECMP)或非等价多路径(UCMP)方式负载分担流量,需通过ip routenexthop语法实现。

1、删除原有单路径默认路由(如存在):
执行命令 ip route del default

2、添加两条等价下一跳的默认路由:
执行命令 ip route add default nexthop via 192.168.1.1 dev eth0 weight 1 nexthop via 10.0.2.1 dev eth1 weight 1

3、验证多路径状态:
执行命令 ip route show default,输出应包含nexthop字段及两个via条目。

四、基于应用层标识的策略路由(使用iptables + fwmark)

对于无法按源/目的IP区分但需按协议或端口分流的场景,可通过iptables标记数据包,再结合fwmark匹配策略路由规则。

1、标记所有TCP 80端口出站包:
执行命令 iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 1

2、添加fwmark规则指向table_a:
执行命令 ip rule add fwmark 1 table table_a

3、确保table_a中存在对应路由(如已配置,默认路由即可);若需专用路径,可添加:
ip route add 0.0.0.0/0 via 192.168.1.1 dev eth0 table table_a

五、持久化策略路由配置

重启后策略路由配置会丢失,需将命令写入系统启动脚本或使用专用服务管理,避免手动重复执行。

1、新建脚本文件 /usr/local/bin/setup-policy-routes.sh,写入全部ip rule/ip route命令。

2、添加执行权限:
执行命令 chmod +x /usr/local/bin/setup-policy-routes.sh

3、在systemd服务中调用该脚本:
创建 /etc/systemd/system/policy-routes.service,内容包含Type=oneshotExecStart=/usr/local/bin/setup-policy-routes.sh,并启用服务:
systemctl enable policy-routes.service

到这里,我们也就讲完了《Linux多路径路由配置详解》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>