在多账号运营、数据采集、批量任务执行这类业务里,"所有设备共用一个出口"往往会带来不少麻烦:账号之间容易被关联、任务量一大就容易触发风控、不同业务对出口的要求也不一样。OpenWrt作为一款高度开放的路由系统,最大的价值之一就是可以做分流——按规则把不同流量引导到不同出口,该走代理的走代理,该直连的直连。本文围绕两种最常用的分流方式展开:按目标域名分流和按设备出口分流,讲清楚原理、配置思路和适用场景。
先搞懂:OpenWrt分流到底在分什么
一台OpenWrt路由器在网络里扮演的是"总闸"的角色:家里或工作室所有设备的流量,都要先经过它再发往互联网。所谓分流,就是在流量经过路由器时,按预先设定的规则做一次"调度":
命中规则的流量,被送往指定的出口——比如路由器上运行的代理通道,最终以代理IP的身份访问目标网站;没有命中规则的流量,照常从宽带直连出去,速度和体验都不受影响。
常见的分流维度有两个:一个是流量去哪儿(目标域名),一个是流量从哪儿来(哪台设备)。前者适合"只有访问某些网站才需要换出口"的场景,后者适合"某几台设备整体需要独立出口"的场景。
按目标域名分流:访问指定网站才走代理
按域名分流的核心思路是三步走:DNS解析 → 域名匹配 → 转发出口。
OpenWrt默认用dnsmasq处理DNS解析。我们可以让dnsmasq把指定域名的解析结果自动写进一个ipset地址集合,再在防火墙里加一条规则:凡是目标地址落在这个集合里的流量,统一转发到路由器本地的代理端口。这样,只有访问这些域名的流量会走代理出口,其他流量完全不受影响。
下面是一个简化的配置示例(不同固件版本命令略有差异,建议先在测试环境验证):
# 1. 创建一个名为 proxy_dst 的地址集合
ipset create proxy_dst hash:ip
# 2. 让 dnsmasq 把指定域名的解析结果写入集合
# 写在 /etc/dnsmasq.d/split.conf 中
ipset=/example.com/proxy_dst
ipset=/cdn.example.com/proxy_dst
# 3. 防火墙规则:命中集合的 TCP 流量转发到本地代理端口
iptables -t nat -A PREROUTING -p tcp \
-m set --match-set proxy_dst dst \
-j REDIRECT --to-ports 7890
这种方式的优点是粒度细、影响面小:比如采集任务只需要目标站点走代理,办公、视频这些流量照常直连,出口资源不会被浪费。需要注意的点也很明确:域名列表要自己维护,遇到APP内嵌页面、多域名CDN的情况容易漏配,漏掉的域名就会直连出去。
按设备出口分流:一台设备一个出口
按设备分流的逻辑更直观:以设备的内网IP为条件做策略路由。谁的流量,就从谁指定的出口出去。
配置分两步:第一步,在DHCP设置里把设备的MAC地址和内网IP绑定,保证这台设备每次拿到的IP都一样;第二步,通过策略路由(可以安装PBR这类策略路由插件,也可以直接写防火墙规则),把"来自这个源地址的流量"指向代理通道或另一个出口。
# 1. 在 DHCP 设置中绑定设备(示例)
# MAC: AA:BB:CC:DD:EE:01 → 192.168.2.101
# 2. 安装策略路由插件
opkg update
opkg install pbr
# 3. 在 PBR 中新增一条策略:
# 源地址 192.168.2.101 → 出口接口选择代理通道
# 保存后重启服务生效
/etc/init.d/pbr restart
这种方式特别适合多账号矩阵类的业务:每台手机、每台工作机绑定一个固定出口,账号与账号之间的网络环境天然隔离开。缺点是粒度停在"设备级"——同一台设备上的所有流量都走同一个出口,没法做到"这台设备只有某个网站走代理"这种混合效果。
两种方式怎么选?一张表看懂
| 对比维度 | 按目标域名分流 | 按设备出口分流 |
|---|---|---|
| 分流粒度 | 网站/服务级 | 设备级 |
| 配置难度 | 中等,需维护域名列表 | 简单,绑定IP即可 |
| 流量影响 | 仅命中域名走代理 | 设备全部流量走指定出口 |
| 典型场景 | 采集任务只代理目标站点 | 多设备多账号隔离运营 |
| 维护成本 | 域名变动需及时更新 | 新增设备加一条绑定 |
两者并不冲突,实际项目里经常组合使用:先按设备划出"哪些机器走代理",再在这些机器内部按域名细分"访问什么才走"。规则从上到下依次匹配,把更精确的规则放在前面即可。
配置分流时最容易踩的五个坑
1. DNS没走路由器。按域名分流完全依赖DNS解析路径,如果设备自己指定了公共DNS,解析结果不经过dnsmasq,ipset集合就是空的,规则自然不生效。建议在DHCP下发的DNS里统一指向路由器本身。
2. IPv6绕过了规则。很多分流规则只处理IPv4,设备走IPv6直连就等于绕开了代理。测试时记得把IPv6流量也纳入规则,或暂时关闭设备的IPv6。
3. 手动静态IP不受DHCP绑定控制。设备自己填了固定IP,DHCP里的绑定就对它无效,按设备分流前先确认每台设备的IP来源。
4. 规则顺序不对。防火墙和策略路由都是从上到下匹配,宽泛的规则放在前面会把本该精确处理的流量"截胡"。调整规则后务必用实际访问验证。
5. 出口频繁变动导致掉登录。不少平台会校验登录IP的稳定性,出口IP频繁变化容易触发验证甚至掉线。这类业务要给账号绑定固定出口,而不是每次随机切换。
分流出口怎么选:天启HTTP的配合思路
分流规则解决的是"哪些流量走代理",而出口本身的质量,取决于代理服务商。在国内业务场景下,可以搭配天启HTTP这类国内IP代理服务商使用:它支持HTTP、HTTPS、SOCKS5三种主流协议,代理可通过API提取,接入路由器上的代理转发组件后,就能作为分流规则里的一个出口来使用。
实际配合方式很简单:在OpenWrt上部署代理转发组件,把天启HTTP提供的代理接入为上游出口,再按本文的域名规则或设备规则把流量调度过去。需要说明的是,天启HTTP是国内IP代理服务商,适用于国内业务场景,如果你的业务需要海外出口,则不适合选择它。
常见问题
Q: OpenWrt分流会影响其他设备的网速吗?
不会。分流是按规则匹配的,只有命中规则的流量才改变走向,其余流量照常直连。命中代理的流量体验则取决于出口代理的质量。
Q: 按域名分流和按设备分流能同时用吗?
可以,而且很常见。注意规则匹配顺序,一般把范围小、更精确的规则放在前面,避免被宽泛规则提前匹配。
Q: 配置完规则不生效,怎么排查?
按顺序检查四件事:设备DNS是否指向路由器、ipset集合里有没有解析记录、防火墙规则顺序是否正确、IPv6是否绕开了规则。逐项排查基本都能定位问题。
Q: 天启HTTP支持哪些接入协议?
支持HTTP、HTTPS、SOCKS5三种主流协议,可通过API提取代理,具体接入参数以官网文档为准。
Q: 没有技术基础能玩转OpenWrt分流吗?
按设备分流门槛较低,装好策略路由插件后在图形界面点选即可;按域名分流涉及DNS和防火墙知识,建议先在测试环境练手,再应用到正式业务。




