梯子实验室tizilab.net

梯子全局模式和规则模式的区别:一条请求怎么被分流

简短回答

梯子全局模式和规则模式的区别在于内核查不查规则表。规则模式把每条连接从上往下对照规则,第一条命中的规则决定它走节点、直连还是被拦下;全局模式跳过规则,进入客户端的连接一律交给 GLOBAL 组选中的出口。直连模式让全部连接绕开节点,这三种模式在 mihomo 里对应配置项 mode 的 rule、global、direct 三个取值。

背景:这个问题从哪来

打开 Clash Verge Rev 的“代理”页,右上角并排三个按钮,写着规则、全局、直连。Stash 的出站模式面板和 OpenClash 运行状态页上的 Rule、Global、Direct 也是这三项,Clash Meta for Android 的模式菜单另外多出“不修改”和“脚本模式”,前者表示沿用订阅配置里写好的模式。

读者一般在三种情况下开始追问它们的区别。某个境外网站只有切到全局才打得开;开着客户端之后国内网站变慢;规则模式下用国内的 IP 查询页,看到的还是本地运营商地址。三件事都落在同一个问题上,连接进了客户端以后被送去了哪里。

Clash Verge Rev、Clash Party、FlClash 这些客户端用的都是 mihomo 内核,面板上的三个按钮改的是内核里的同一个配置项 mode。官方文档列出 rule、global、direct 三个取值,并注明默认值是规则模式。sing-box 内核没有这个配置项,放在后面单独讲。梯子客户端和 VPN App 在分流能力上的差异,另见 梯子和 VPN 的区别。

规则模式、全局模式、直连模式各把连接送到哪

模式 mode 取值 内核怎样处理一条连接 适合的场合 常见现象
规则模式 rule 从规则表第一行往下比对,交给第一条命中规则写的出口 日常使用 国内网站按规则直连,国内 IP 查询页显示本地地址
全局模式 global 不看规则表,统统交给 GLOBAL 组当前选中的出口 临时对照,判断某个网站是否被规则分错 国内网站也绕到节点;规则表里的 REJECT 拦截条目失效
直连模式 direct 不看规则表,统统从本机网络直接出去 判断问题出在本机网络还是节点 依赖节点才能访问的网站打不开

表里“不看规则表”的依据是 mihomo 源码 tunnel.go 里的模式分支。direct 分支直接取 DIRECT 出口,global 分支直接取 GLOBAL 组,只有 rule 分支会调用规则匹配函数,订阅里拦截广告域名的 REJECT 条目因此在全局模式下失效。

全局模式有个容易漏掉的前提。文档在 global 一项后面注明,要在 GLOBAL 策略组里选好代理。按 config.go 的写法,配置文件没有定义 GLOBAL 组时,内核会自己生成一个,列表前两项是 DIRECT 和 REJECT;selector.go 里的选择组在没被选过时,取列表第一项。我们的判断是,从来没在 GLOBAL 组里点过节点的话,切到全局之后连接可能照旧直连。客户端会不会记住上一次的选择,各家做法不一样,本站没有逐个核对。

规则模式下,一条请求怎么走完分流规则

规则表是配置文件 rules 下面的一列条目,每条由规则类型、匹配内容、出口三段组成,用逗号隔开。文档写明匹配顺序从上到下,排在上面的优先。源码里的做法是找到第一条命中的就返回,后面的条目不再比对。

下面是一张示意规则表。组名 AI 和 Proxy 是随手起的,和任何机场的订阅无关。

rules:
  - DOMAIN-SUFFIX,ads.example,REJECT
  - GEOSITE,cn,DIRECT
  - DOMAIN-SUFFIX,openai.com,AI
  - GEOIP,CN,DIRECT
  - MATCH,Proxy

拿四个请求依次走一遍。

  1. 访问 api.openai.com。第 1 条后缀对不上;第 2 条去查 GEOSITE 的 cn 列表,里面没有它;第 3 条后缀相符,交给 AI 组,到此结束。示意表把 openai.com 单独分给一个组,是因为这类服务公布了支持的国家和地区,出口地区怎么查见 梯子上 ChatGPT 和 Claude 的地区指南。
  2. 访问一个收在 cn 列表里的国内域名。第 2 条命中,直连出去,第 3 条以后一概不看。
  3. 访问一个哪张列表都没收的境外域名。前三条都按域名判断,全部落空。第 4 条 GEOIP 按 IP 判断,内核先在本机做一次 DNS 解析拿到 IP,再查它的国家代码,不属于 CN 就继续往下,最后被 MATCH 接住,交给 Proxy 组。
  4. 某个程序直接拿 IP 发起连接,没有域名。按域名判断的条目全部跳过,只剩 GEOIP 和 MATCH 起作用。开了域名嗅探的话,内核会尝试从 HTTP、TLS、QUIC 流量里读出域名,读到了就还能按域名匹配。

几条容易被忽略的细节,都能在文档或源码里对上。

  • MATCH 不带任何条件,所有请求都算命中,所以一般放在表的最后一行。源码显示,整张表走完仍然没有命中时,连接直接交给 DIRECT,日志里记一句 doesn’t match any rule。也就是说,漏写 MATCH 的配置会让所有没分到类的流量直连。
  • GEOIP 这类按目标 IP 判断的条目会触发 DNS 解析。条目末尾加上 no-resolve 可以跳过解析;但前面的条目已经解析过的话,带 no-resolve 的条目照样会拿那次的结果去比。由此推测,按域名判断的条目排在按 IP 判断的条目前面,能少做一些本机解析。
  • 请求走 UDP,而命中的节点不支持 UDP 时,文档写明会继续往下找下一条。
  • GEOSITE 的域名列表参考了 v2fly/domain-list-community,GEOIP 查的是 IP 所属的国家代码,两者都读本地的 GEO 数据文件。数据文件换了版本,同一个域名的归类可能跟着变。
  • RULE-SET 引用外部的规则集合,要先在 rule-providers 里声明。

sing-box 内核的分流有哪些不同

本站客户端页记录的 Hiddify、Karing、NekoBox 用的是 sing-box 内核。它的规则写在 route.rules 里,思路和 mihomo 相近,下表列出四处差别,sing-box 一栏按 1.14.2 版的文档和源码核对。

对比项 mihomo sing-box
匹配顺序 从上到下,第一条命中即停 从上到下;route、reject、hijack-dns 这类最终动作命中即停,sniff、resolve 这类非最终动作执行后继续往下
一条都没命中 交给 DIRECT 交给 route.final 指定的出站,final 留空时用第一个出站
按国家、按域名分类 GEOIP、GEOSITE 条目 1.12.0 起移除 geoip、geosite 字段,改用 rule_set
全局、规则、直连 内核配置项 mode 没有同名配置项,要靠路由规则里的 clash_mode 条件

第二行意味着同一句“漏写兜底”,在两个内核里后果相反。mihomo 会把剩下的流量直连,sing-box 会把它们交给第一个出站,第一个出站是节点还是直连,取决于配置的写法。

第四行对日常使用影响更直接。sing-box 文档写明 Clash API 的 default_mode 本身不起作用,只能通过 clash_mode 规则项在路由和 DNS 规则里生效。同样是面板上的全局按钮,在 sing-box 系客户端里管不管用,要看配置里有没有写 clash_mode 为 global 的规则。配置是客户端自动生成还是由订阅提供,各家不同,本站没有逐个核对。各内核对应的客户端列表见 梯子下载页。

自己怎么验证

下面四项检查不依赖本站数据,装好客户端就能做。

  1. 看连接页。 在 mihomo 系客户端里打开一个网站,再切到“连接”页找到这个域名,这一行或它的详情里会写出命中的规则和经过的组、节点。Clash Verge Rev 的连接页在左栏,位置可以对照 Clash Verge Rev 的 Windows 教程。
  2. 看日志。 把日志级别设成 info 或 debug,每条连接会留下一行记录。按 tunnel.go 里的格式,大致是下面这样(地址和节点名是示例)。
[TCP] 127.0.0.1:52011(chrome.exe) --> api.openai.com:443 match DomainSuffix(openai.com) using AI[示例节点]
[TCP] 127.0.0.1:52034 --> www.example.cn:443 match GeoIP(CN) using DIRECT
[TCP] 127.0.0.1:52040 --> www.example.com:443 using GLOBAL
[UDP] 127.0.0.1:53120 --> 198.51.100.9:3478 doesn't match any rule using DIRECT

match 后面是规则类型和括号里的匹配内容,using 后面是出口,方括号里是组里实际用上的节点。全局模式的行只写 using GLOBAL,直连模式只写 using DIRECT,整张表没命中的会写 doesn’t match any rule。

  1. 直接问内核。 客户端开放了外部控制时,可以用命令行查询。地址和密钥以客户端设置里显示的为准,文档里的示例地址是 127.0.0.1:9090。
curl -H "Authorization: Bearer 你的密钥" http://127.0.0.1:9090/configs
curl -H "Authorization: Bearer 你的密钥" http://127.0.0.1:9090/rules
curl -H "Authorization: Bearer 你的密钥" http://127.0.0.1:9090/connections

/configs 返回的 mode 字段是当前模式。/rules 按序号列出每条规则的类型、内容和出口,文档说明序号从 0 开始。/connections 里每条连接带 rule 和 rulePayload 两个字段,记的就是它命中的规则。

  1. 做一次对照。 同一个网站在规则模式和全局模式下各开一次。全局能开、规则打不开,回到连接页看规则模式下它命中了哪一条,常见的是被分进了 DIRECT 或 REJECT。两种模式都打不开,问题在节点或本机网络,可以照 全部节点超时的对照排查 继续缩小范围。

sing-box 系客户端把日志级别设为 debug 后,源码会为每次命中打印一行“match[序号] 规则 => 动作”,序号从 0 开始,对应 route.rules 里的位置。

这些检查能说明一条连接按哪条规则去了哪个出口,说明不了那个出口是否连得通、速度怎样。

这篇没有覆盖的

  • 本站没有在每个客户端上逐一核对连接页、日志页的位置和字段名,按钮名称以手上的版本为准。
  • 规则模式和全局模式对延迟、下载速度的影响,本站尚未实测。
  • 自定义规则的写法、规则集合的订阅方式、Clash Meta for Android 的脚本模式,本文都没有展开。
  • Surge、Shadowrocket、Stash 用的是各自的自研内核,本文依据 mihomo 和 sing-box 源码得出的结论不能直接套到它们身上。
  • 连接经 TUN 进入内核的过程,以及 fake-ip、域名嗅探的细节,放在 TUN 模式指南 里讲。
  • 文中文档和源码于 2026 年 9 月 25 日核验,mihomo 规则页显示的更新日期是 2026 年 7 月 8 日,sing-box 对照的是 1.14.2 版。内核后续版本可能改变这些行为。

本文引用的来源12 条 · 在新窗口打开

  1. mihomo 文档:路由规则wiki.metacubex.one
  2. mihomo 文档:全局配置(运行模式、日志级别)wiki.metacubex.one
  3. mihomo 文档:API(/configs、/rules、/connections)wiki.metacubex.one
  4. mihomo 文档:域名嗅探wiki.metacubex.one
  5. mihomo 源码 tunnel.go(模式分支、规则匹配、连接日志格式)github.com
  6. mihomo 源码 config.go(自动生成 GLOBAL 组)github.com
  7. mihomo 源码 selector.go(选择组的默认选项)github.com
  8. sing-box 文档:Route(final 字段)sing-box.sagernet.org
  9. sing-box 文档:Route Rule(clash_mode 等匹配字段)sing-box.sagernet.org
  10. sing-box 文档:Rule Action(最终动作与非最终动作)sing-box.sagernet.org
  11. sing-box 文档:Clash API(default_mode)sing-box.sagernet.org
  12. sing-box 源码 route.go(v1.14.2,规则匹配循环)github.com

常见问题5 题

梯子开全局模式会多用流量吗

会多用一些。规则模式下被分到直连的国内网站、系统更新和国内视频,切到全局后也要经过机场节点,这部分数据一般会算进套餐的已用流量。多用多少取决于开全局这段时间里访问了什么,本站没有做过对比测量。

规则模式和 TUN 模式有什么关系

两者管的是两段路。系统代理和 TUN 决定哪些程序的连接能进入内核,规则、全局、直连决定连接进来以后从哪个出口出去。开着 TUN 照样可以用规则模式,两组开关可以任意搭配。

更新订阅以后分流结果会变吗

可能会变。Clash 格式的订阅通常是一整份配置文件,规则表也在里面,更新订阅等于把整张表换掉。原来走节点的域名可能改成直连,反过来也有可能。更新后某个网站打不开,先到连接页看它这次命中了哪条规则。

规则模式下 IP 查询网站显示本地地址正常吗

可能正常。规则表里常有 GEOSITE cn、GEOIP CN 这类直连条目,国内的 IP 查询站多半会命中,看到本地运营商的地址说明这次访问没经过节点。要确认节点是否生效,改用境外的 IP 查询页,或者到连接页看这条访问的出口。

直连模式有什么用

直连模式下客户端还在运行,所有连接却都从本机网络直接出去,不经过任何节点。开着客户端时某个国内网站打不开,切到直连再试,仍然打不开,问题就出在本机网络或客户端设置,和节点没有关系。

本文最后一次核对来源是 。软件界面、服务政策和法规会变,发现和现在不一致的地方,请按更正与反馈里的方法告诉我们。

梯子和VPN的区别:六个能自己观察到的不同

梯子和 VPN 的区别,本文拆成六个能在自己设备上看到的项目,包括装什么、要不要订阅链接、怎么分流、状态栏图标、协议名和服务器归谁。

新手入门更新约 7 分钟