路由中怎么通过创建多路由表配合 iptables 的 MARK 标记在同一台服务器上实现“游戏流量走电信、网页流量走联通”的高级分流

大萱姑娘_5879

大萱姑娘_5879

2026-08-25

1054人浏览

原创

要实现按应用类型分流,需iptables打标、connmark同步连接标记、策略路由选表三者协同;关键在于用connmark确保双向流量标记一致,再通过ip rule绑定fwmark与路由表,并关闭rp_filter避免回程丢包。

路由中怎么通过创建多路由表配合 iptables 的 mark 标记在同一台服务器上实现“游戏流量走电信、网页流量走联通”的高级分流

要实现“游戏流量走电信、网页流量走联通”这种按应用类型分流的效果,核心不是靠 iptables 单独决定路径,而是让 iptables 打标 + 策略路由选表 + 路由表绑定网关 三者协同工作。关键在于:标记必须稳定作用于整条连接(尤其是双向),否则回程包会走错出口,连接直接中断。


一、先定义业务流量并打初始标记

用 mangle 表在 PREROUTING 或 OUTPUT 链中识别特征,并打上唯一 fwmark(如 0x100 表示游戏,0x200 表示网页):

# 游戏流量:常见端口(如 3000–4000、7000–8000、UDP 居多)
iptables -t mangle -A PREROUTING -p udp --dport 3000:4000 -j MARK --set-mark 0x100
iptables -t mangle -A PREROUTING -p tcp --dport 7777 -j MARK --set-mark 0x100

# 网页流量:HTTP/HTTPS 目标端口(注意:仅限目标地址为公网 Web 服务时有效)
iptables -t mangle -A PREROUTING -p tcp -m multiport --dports 80,443 -j MARK --set-mark 0x200

⚠️ 注意:

  • PREROUTING 适用于转发场景(如软路由);若本机发起访问(如浏览器),需改用 OUTPUT 链。
  • 若需更精准识别(如区分游戏登录 vs 游戏对战),可结合 string 模块匹配协议特征,但性能略低。

二、用 CONNMARK 实现连接级标记同步(必须!)

只打 MARK 不够——TCP/UDP 连接有请求和响应两个方向。回程包若没标记,策略路由就查不到表,必然走默认路由(通常只有一条出口)。所以必须用 CONNMARK 把标记“绑到连接上”:

# 对刚打标的包,存入 conntrack 连接记录
iptables -t mangle -A PREROUTING -m mark --mark 0x100 -j CONNMARK --save-mark
iptables -t mangle -A PREROUTING -m mark --mark 0x200 -j CONNMARK --save-mark

# 后续所有同连接包(含回程)恢复标记
iptables -t mangle -A PREROUTING -m connmark --ctmark 0x100 -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m connmark --ctmark 0x200 -j CONNMARK --restore-mark

# 本机作为服务端响应时,OUTPUT 包也要恢复(避免响应走错网卡)
iptables -t mangle -A OUTPUT -m connmark --ctmark 0x100 -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -m connmark --ctmark 0x200 -j CONNMARK --restore-mark

✅ 效果:每个连接从首包开始就被打上持久标记,后续所有进出包都携带该 fwmark,策略路由全程可控。

Skill Weave Chains — 技能链路由引擎
Skill Weave Chains — 技能链路由引擎

开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。

下载

三、创建独立路由表并绑定网关

  1. 编辑 /etc/iproute2/rt_tables,添加自定义表名:
echo "100 telecom" >> /etc/iproute2/rt_tables
echo "200 unicom"  >> /etc/iproute2/rt_tables
  1. 为每张表配置对应网关和源地址(假设):
  • eth0 接电信:IP 192.168.1.100/24,网关 192.168.1.1
  • eth1 接联通:IP 192.168.2.100/24,网关 192.168.2.1
# 电信表:所有流量发往 192.168.1.1,源地址强制为 192.168.1.100
ip route add default via 192.168.1.1 dev eth0 src 192.168.1.100 table telecom

# 联通表:所有流量发往 192.168.2.1,源地址强制为 192.168.2.100
ip route add default via 192.168.2.1 dev eth1 src 192.168.2.100 table unicom
  1. 绑定 fwmark 与路由表:
ip rule add fwmark 0x100 table telecom
ip rule add fwmark 0x200 table unicom

✅ 此时,带 0x100 标记的连接,无论请求还是响应,都会查 telecom 表,走电信出口;同理网页走联通。


四、补充关键细节,避免连接失败

  • 关闭反向路径校验(rp_filter):
    多出口场景下,若回程包从非原路返回(比如请求走 eth0、响应误走 eth1),内核可能丢包。临时关闭:

    echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
    echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
    echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter

    永久生效可写入 /etc/sysctl.conf。

  • 确保源地址已配置在对应网卡:
    如 192.168.1.100 必须 ip addr show eth0 中可见,否则路由无法命中。

  • 规则顺序很重要:
    restore-mark 规则建议放在 save-mark 之前(尤其在 PREROUTING 开头),防止新连接尚未保存就尝试恢复导致跳过。

  • 测试验证命令:

    # 查看策略规则
    ip rule show
    
    # 模拟某标记下的路由路径(例如游戏目的 IP 1.1.1.1)
    ip route get 1.1.1.1 oif eth0 mark 0x100
    
    # 查看连接标记状态
    conntrack -L | grep "mark=0x100"

不复杂但容易忽略。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2772

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

936

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

829

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2516

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4672

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

747

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Linux开发篇视频教程
Linux开发篇视频教程

共18课时 | 4.6万人学习

Linux开发视频教程
Linux开发视频教程

共18课时 | 4.6万人学习

Buffalo框架路由开发手册
Buffalo框架路由开发手册

共0课时 | 0人学习