目录
分流是什么?为什么本地网站应该直连
连上加密通道后,并不是所有流量都该绕一圈。分流按目的地逐条比对规则,决定直连、走加密通道还是直接拒绝。本文用邮局分拣台打比方,讲清规则类型、首条命中的顺序,配时序图逐步说明。
网络原理系列:① 打开一个网页时发生了什么 → ② 网络分层模型 → ③ 常见网络协议 → ④ 代理是什么 → ⑤ 加密隧道是什么 → ⑥ 加密隧道与代理的区别 → ⑦ HTTPS 加密了什么 → ⑧ 系统代理与 TUN 模式 → ⑨ 分流是什么 → ⑩ DNS 污染与泄漏 → ⑪ 晚高峰为什么变慢 → ⑫ 延迟、丢包与带宽
分流(Split Tunneling)是指:连上加密通道之后,按每一次访问的目的地决定它的去向——直连、走加密通道,或者直接拒绝。它不是一个开关,而是一张从上往下比对的规则清单:本地网站直连,海外服务走加密通道,广告和追踪域名直接拦掉。
上一篇 系统代理与 TUN 模式 讲了怎么把流量「接管」过来;这一篇讲接管之后,每个数据包是怎么被分到不同道路上的。
- ① 所有信件先到分拣台TUN 模式接管全部流量
- ② 按清单从上往下核对命中第一条就照办
- ③ 海外信件装进密封管道,走加密通道
- ④ 本地信件自行车快递,直连
- ⑤ 广告传单进碎纸机,直接拒绝
- ⑥ 给邻居的信局域网直连,强制规则
先打个比方:邮局的分拣台
想象你家所有寄出去的信,都先被送到同一个分拣台:
- 所有信件先到分拣台。TUN 模式把设备上所有程序的流量都接管过来,就像所有信件都走同一条传送带。
- 分拣员拿着一张清单,从上往下看。清单上每一行写着「什么样的信 → 送去哪里」,看到第一条对得上的就照办,后面的不再看。
- 寄往海外的信,装进密封的管道,送到远方的中转站,再由中转站投递。这就是走加密通道。
- 寄往本地的信,交给骑自行车的本地快递,几分钟就送到。这就是直连。
- 广告传单,直接塞进碎纸机,根本不寄出去。这就是拒绝。
- 给隔壁邻居的信(家里的打印机、路由器)隔着篱笆直接递过去。这一条写死在清单最上面,谁也改不了。
如果没有分拣台,你只有两个选择:所有信都绕道海外中转(全局模式),或者所有信都不加密(不开加密通道)。分流让每封信都走最合适的路。
三种去向
| 去向 | 做法 | 典型用途 |
|---|---|---|
| 直连 | 从你自己的网络直接发往网站,不经过加密服务器 | 本地的购物、视频、银行、地图网站;局域网设备 |
| 走加密通道 | 加密后发往服务器,由服务器代为访问 | 本地网络访问不了或很慢的海外服务 |
| 拒绝 | 直接丢弃,不发出任何数据 | 广告、追踪、恶意域名 |
为什么本地网站应该直连
1. 更快:不绕远路
访问本地网站时,直连的数据只在附近跑一趟,往返通常只要 10–30 毫秒。如果走加密通道,数据要先到海外服务器,服务器再回头访问本地网站,结果原路返回,相当于多跑了两趟跨境线路,延迟往往增加 100 毫秒以上。网页上的每一张图片、每一个接口都要多等这么久,打开速度会明显变慢。
很多本地网站还用了 CDN(内容分发网络),会把内容放在离你最近的机房。走加密通道时,网站看到的是海外服务器的地址,会把你分到海外机房,甚至给出更慢的线路。
2. 不浪费流量
视频、下载、系统更新这些大流量,如果是本地网站,直连就够了。直连的流量不经过加密服务器,既不占用套餐的每日流量,也不和其他用户抢服务器带宽。
3. 避免被风控
银行、支付、购物等网站会检查登录地点。如果你一会儿在本地登录、一会儿又从海外 IP 访问,很容易触发「异地登录」验证,甚至被临时冻结。还有一些视频网站的版权内容只对本地 IP 开放,从海外访问会提示「所在地区无法播放」。直连让本地网站看到的始终是你自己的网络,这些问题都不会出现。
规则怎么匹配
分拣员看的那张清单,每一行由类型 + 值 + 去向组成。常见的规则类型有六种:
| 类型 | 匹配方式 | 例子 |
|---|---|---|
| 域名 | 只匹配完全相同的域名 | www.example.com |
| 域名后缀 | 匹配这个域名和它所有的子域名 | example.com 同时匹配 a.example.com |
| 域名关键字 | 域名里包含这段文字就匹配 | adservice |
| IP 段(CIDR) | 匹配一段 IP 地址 | 203.0.113.0/24 |
| GeoIP | 按 IP 地址的归属地区匹配,数据来自公开的 IP 地址库 | 「本地 IP 直连」 |
| GeoSite | 按网站分类匹配,是社区维护的域名清单 | 「本地常用网站直连」 |
前四种是你自己写的「精确规则」;后两种是现成的规则集,一条规则就包含成千上万个域名或 IP 段,「本地网站直连」通常就是靠这两条实现的。
为什么既要域名规则,又要 IP 规则
规则匹配发生在数据包经过客户端的那一刻。这时客户端手里一定有目的 IP,但不一定知道域名,比如有的 App 直接用 IP 连服务器,或者域名已经在别处解析过了。所以:
- IP 类规则(IP 段、GeoIP)总能用上,适合兜底;
- 域名类规则(域名、后缀、关键字、GeoSite)更直观,但需要客户端知道这次访问对应哪个域名。客户端一般有两种办法:一是自己接管 DNS 查询,记下「哪个 IP 是哪个域名解析出来的」;二是从 TLS 握手里读出明文的网站名(SNI,见 HTTPS 加密了什么)。
DNS 查询本身该怎么走,也是分流的一部分,下一篇 DNS 污染与 DNS 泄漏 会专门讲。
规则顺序:首条命中
清单是有顺序的,从上往下比对,命中第一条就停。所以同一个网站可能同时符合好几条规则,最后生效的是排在最前面的那条。
举个例子,你想让 docs.example.com 直连,但 example.com 的其他页面都走加密通道:
✅ 正确的顺序
- 域名
docs.example.com→ 直连 - 域名后缀
example.com→ 走加密通道
结果:docs.example.com 命中第 1 条,直连;其他子域名命中第 2 条,走加密通道。
❌ 错误的顺序
- 域名后缀
example.com→ 走加密通道 - 域名
docs.example.com→ 直连
结果:docs.example.com 先命中第 1 条,第 2 条永远用不上。
经验法则:越具体的规则越往上放,范围大的规则(规则集、IP 大段)放在下面,最后再用一条最终规则兜底:前面都没命中时,默认走加密通道还是直连。
时序图:三次访问,三种去向
| 步骤 | 发生了什么 |
|---|---|
| ①–② | 程序访问一个本地网站,数据包被虚拟网卡交给客户端,客户端逐条比对规则,命中「本地网站直连」 |
| ③–④ | 客户端从真实网卡直接发出,网站直接返回内容,全程不经过加密服务器 |
| ⑤–⑥ | 程序访问一个海外服务,前面的规则都没命中,落到最终规则:走加密通道 |
| ⑦–⑩ | 客户端加密后发给服务器,服务器访问网站,再把内容加密送回 |
| ⑪–⑫ | 程序请求一个广告域名,命中「拒绝」规则,客户端直接回绝,什么都不发出去 |
穿山甲的分流是怎么排的
穿山甲默认使用「智能分流」,清单从上往下分为四层:
- 系统强制规则:局域网和私有地址直连(路由器管理页、打印机、NAS),DNS 查询交给客户端处理。这一层始终在最上面,不能关闭;
- 我的规则:你自己添加的规则,按列表顺序比对;
- 本地直连:本地网站和本地 IP 直连(GeoSite + GeoIP 规则集),可以关闭;
- 最终规则:以上都没命中,走加密通道。
规则保存在账号里,换设备登录会自动同步;修改后如果正在连接,App 会自动重连一次,新规则立即生效。添加、排序、删除规则的具体操作见 分流规则详解。
相关阅读
常见问题
分流和全局模式该选哪个?
日常使用选分流(穿山甲里叫「智能分流」)。全局模式让所有流量都绕到海外服务器,本地网站会变慢、还可能触发风控,只适合临时排查问题。
直连的流量会被统计到套餐流量里吗?
不会。直连的流量从你的网络直接发往网站,不经过加密服务器,所以不计入每日流量。
我加的域名规则为什么没生效?
最常见的原因是上面已经有一条规则先命中了。规则从上往下比对,第一条匹配的生效,可以把更具体的规则拖到前面。另外确认代理模式是「智能分流」,全局和全部直连模式会忽略自定义规则。
分流会不会让本地网站看到我在用加密通道?
不会。直连的流量和没开加密通道时完全一样,本地网站看到的就是你自己的网络。这也是本地网站应该直连的原因之一。