策略路由通过自定义路由表和规则实现多网卡流量控制。1. 理解问题:默认路由表可能导致回程不对称,需根据源ip等条件选择路径。2. 配置自定义路由表:编辑rt_tables文件添加表名,使用ip route命令为表添加路由规则。3. 添加策略路由规则:用ip rule命令指定源ip匹配的路由表,并设置规则优先级。4. 测试与持久化:通过traceroute或tcpdump测试路径,将配置写入启动脚本或网络管理工具确保重启后生效。

在Linux系统中,如果你有多张网卡,并且需要根据不同的流量走不同的网络出口,这时候普通的路由表就不够用了。你需要配置策略路由(Policy Routing)来满足这种需求。

策略路由的核心在于:不只看目标IP地址,还能根据源IP、协议类型等条件选择路由路径。

假设你有一台服务器有两个网卡:
eth0
192.168.1.100/24
192.168.1.1
eth1
203.0.113.100/24
203.0.113.1
默认情况下,系统只有一个主路由表,所有流量都按目标地址决定走哪个网卡。比如你从
eth1
eth0

这就是为什么我们需要策略路由——让源IP不同,走不同的路由表。
Linux允许我们创建多个路由表,每个表可以独立设置规则。
/etc/iproute2/rt_tables
echo "1 rt_eth1" >> /etc/iproute2/rt_tables
这表示创建了一个名为
rt_eth1
ip route add 203.0.113.0/24 dev eth1 table rt_eth1 ip route add default via 203.0.113.1 dev eth1 table rt_eth1
这样,这张表就知道如何处理发往
eth1
接下来要告诉系统:来自某个源IP的数据包,使用哪张路由表。
执行以下命令:
ip rule add from 203.0.113.100 lookup rt_eth1
这条规则的意思是:只要是源IP为
203.0.113.100
rt_eth1
你可以用
ip rule show
注意:规则是有优先级的,排在前面的先匹配。你可以通过 ip rule add ... pref 1000 指定优先级数值。
可以用
traceroute
mtr
tcpdump
例如:
tcpdump -i eth1 host 8.8.8.8
上面的命令重启后会失效。为了持久生效,可以把这些命令写进启动脚本,或者使用网络管理工具如
NetworkManager
systemd-networkd
以脚本方式为例,可以创建一个脚本放在
/etc/network/if-up.d/
基本上就这些。策略路由看似复杂,但只要搞清楚三步:建表 → 加路由 → 定规则,就可以灵活控制不同来源的流量走向。不复杂,但容易忽略细节,特别是规则顺序和表名编号的问题。
以上就是如何配置Linux多网卡路由 策略路由配置实例解析的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号