如何配置Linux多网卡路由 策略路由配置实例解析

发布时间 - 2025-08-04 00:00:00    点击率:

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

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

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


1. 理解多网卡环境下的路由问题

假设你有一台服务器有两个网卡:

  • eth0
    接入内网,IP为
    192.168.1.100/24
    ,默认网关是
    192.168.1.1
  • eth1
    接入外网,IP为
    203.0.113.100/24
    ,默认网关是
    203.0.113.1

默认情况下,系统只有一个主路由表,所有流量都按目标地址决定走哪个网卡。比如你从

eth1
的 IP 发出的请求,如果响应回来时被主路由表判断应该走
eth0
,就可能造成“回程不对称”,从而导致连接失败。

这就是为什么我们需要策略路由——让源IP不同,走不同的路由表


2. 配置自定义路由表

Linux允许我们创建多个路由表,每个表可以独立设置规则。

步骤如下:

  • 编辑
    /etc/iproute2/rt_tables
    文件,添加一个自定义表名:
echo "1 rt_eth1" >> /etc/iproute2/rt_tables

这表示创建了一个名为

rt_eth1
的路由表,编号为1(编号不能重复)。

  • 给这个表添加路由规则:
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
的流量了。


3. 添加策略路由规则

接下来要告诉系统:来自某个源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 指定优先级数值。

4. 测试与持久化保存

测试方法:

可以用

traceroute
mtr
命令测试是否走对了网关。也可以用
tcpdump
在两个网卡上监听流量,确认来回路径一致。

例如:

tcpdump -i eth1 host 8.8.8.8

持久化配置:

上面的命令重启后会失效。为了持久生效,可以把这些命令写进启动脚本,或者使用网络管理工具如

NetworkManager
systemd-networkd
来配置。

以脚本方式为例,可以创建一个脚本放在

/etc/network/if-up.d/
下,让它在网络接口起来之后自动执行相关命令。


基本上就这些。策略路由看似复杂,但只要搞清楚三步:建表 → 加路由 → 定规则,就可以灵活控制不同来源的流量走向。不复杂,但容易忽略细节,特别是规则顺序和表名编号的问题。


# linux  # 工具  # 为什么  # if  # 接口  # tcpdump  # 路由表  # 自定义  # 可以用  # 你有  # 重启  # 数据包  # 不对称  # 放在  # 你可以  # 是有 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 油猴 教程,油猴搜脚本为什么会网页无法显示?  如何用虚拟主机快速搭建网站?详细步骤解析  高性能网站服务器部署指南:稳定运行与安全配置优化方案  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  创业网站制作流程,创业网站可靠吗?  公司门户网站制作流程,华为官网怎么做?  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  Laravel怎么在Blade中安全地输出原始HTML内容  利用vue写todolist单页应用  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何快速搭建高效WAP手机网站?  使用C语言编写圣诞表白程序  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何在IIS中配置站点IP、端口及主机头?  Laravel如何使用Vite进行前端资源打包?(配置示例)  移动端脚本框架Hammer.js  JavaScript如何实现倒计时_时间函数如何精确控制  活动邀请函制作网站有哪些,活动邀请函文案?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  网站图片在线制作软件,怎么在图片上做链接?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  浅析上传头像示例及其注意事项  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  如何在景安服务器上快速搭建个人网站?  WordPress 子目录安装中正确处理脚本路径的完整指南  公司网站制作价格怎么算,公司办个官网需要多少钱?  JavaScript如何操作视频_媒体API怎么控制播放  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  详解Huffman编码算法之Java实现  如何在IIS中新建站点并配置端口与IP地址?  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  重庆市网站制作公司,重庆招聘网站哪个好?  奇安信“盘古石”团队突破 iOS 26.1 提权  微信公众帐号开发教程之图文消息全攻略  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  如何在万网利用已有域名快速建站?  详解Android中Activity的四大启动模式实验简述  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  做企业网站制作流程,企业网站制作基本流程有哪些?  🚀拖拽式CMS建站能否实现高效与个性化并存?  javascript中闭包概念与用法深入理解  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Android自定义控件实现温度旋转按钮效果  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Laravel如何实现一对一模型关联?(Eloquent示例)  香港服务器WordPress建站指南:SEO优化与高效部署策略