Clash 规则模式、进程分流和全局模式有什么区别?
电脑上的 Clash Verge Rev 和手机上的 Clash Mi 有什么区别?本文用实际场景讲清规则模式、进程分流、全局模式、TUN 与系统代理之间的关系。
很多人已经会使用 Clash 类客户端:电脑上安装 Clash Verge Rev,手机上安装 Clash Mi,复制订阅链接、选择一个节点,再点击连接。国外网站能打开,就觉得配置已经完成了。
可是一旦遇到下面这些情况,问题就来了:
- 浏览器能访问,手机 App 却一直提示网络错误;
- ChatGPT 可以正常使用,Claude 却怎么都连不上;
- 切换到“全局”以后,国内网站也开始变慢;
- 明明选了同一个节点,不同应用显示的出口地区却不一样;
- Clash 显示已经连接,但某个程序的流量根本没有进入 Clash。
我以前在 iPhone 上使用 Clash Mi 排查 Claude 时,就遇到过类似情况:ChatGPT 可以正常使用,Claude 却无法登录。换节点、切全局都不一定能解决。过程中我还发现,只有在 ChatGPT 真正发送和接收内容时,Clash Mi 里对应的连接才会出现并命中“专线”策略。
也正是在这次手机端排查中,我才意识到,真正需要理解的不是“哪个节点更快”,而是这个 App 的流量访问了哪些域名、匹配了哪条规则,最后又被交给了哪个策略组。
这里先把软件名称区分清楚:
- Clash Verge Rev:主要用于 Windows、macOS 和 Linux 的桌面客户端;
- Clash Mi:提供 iOS、Android 及桌面平台版本,但在本文场景中主要指手机端;
- Mihomo:两类客户端背后负责规则匹配、策略选择和流量转发的核心之一。
因此,Rule、Global、Direct 等底层概念基本相通,但系统代理、TUN、进程匹配和具体设置入口会因客户端与操作系统而不同。
这篇文章不讨论如何购买订阅,只讲清楚 Clash 最基础、也最容易被混淆的几个概念。
先说结论:它们其实不是同一层级
Clash/Mihomo 官方定义的核心连接模式主要有三个:
Rule:规则模式;Global:全局模式;Direct:直连模式。
所谓“进程模式”通常不是第四种核心连接模式,而是识别发起连接的程序,并把进程名称或进程路径作为一条分流条件。某些客户端把相关功能单独放在设置中,因此很容易让人误以为它和 Rule、Global 是三个并列选项。
更准确的理解应该是:
Rule、Global、Direct 决定 Clash 接管流量以后如何选择出口;进程匹配则是 Rule 模式可以使用的一种判断条件。
一条网络请求大致会经历三个步骤:
- 应用发出请求;
- 系统代理或 TUN 把请求交给 Clash;
- Clash 根据当前模式,决定让它直连、走某个代理节点,还是拒绝连接。
很多“开了 Clash 还是不能用”的问题,其实发生在第二步,而不是节点本身。
一、规则模式:日常使用的默认选择
规则模式会读取配置文件中的 rules,按照规则判断每一条连接应该走哪个出口。
规则可以根据很多条件匹配,例如:
- 域名:
DOMAIN、DOMAIN-SUFFIX; - IP 地址或地区:
IP-CIDR、GEOIP; - 进程名称或路径:
PROCESS-NAME、PROCESS-PATH; - 目标端口、网络类型和规则集;
- 最后一条兜底规则:
MATCH。
例如,一份常见配置可能会让国内网站直接连接,让海外服务走代理,让广告域名被拒绝:
mode: rule
rules:
- DOMAIN-SUFFIX,example-overseas.com,PROXY
- GEOIP,CN,DIRECT
- MATCH,PROXY这里的 PROXY 只是示例策略组名称,实际使用时要替换成订阅配置里真实存在的策略组。
规则模式最大的优点,是不同流量可以使用不同出口:
- 国内网站直接连接,速度通常更自然;
- 需要代理的服务自动走节点;
- 局域网、打印机和本地服务可以保持直连;
- 不必每次打开不同网站都手动切换模式。
它也是我最推荐的日常模式。
规则模式的问题不在于模式本身,而在于规则质量。规则过旧、顺序错误、缺少某个新域名,或者最后的 MATCH 指向了不合适的策略,都可能导致某个应用突然无法连接。
所以,同一个节点下出现“ChatGPT 能用、Claude 不能用”,并不奇怪。两个 App 可能访问了完全不同的登录、接口和静态资源域名,也可能命中了不同规则或策略组。
二、进程分流:指定某个程序怎么走
进程分流适合解决这样的问题:
我不想研究一个应用到底访问了多少域名,只想让这个程序产生的连接全部走某个策略。
Mihomo 支持使用进程名称、进程路径及其通配符或正则形式进行匹配。例如:
mode: rule
find-process-mode: strict
rules:
- PROCESS-NAME,example.exe,PROXY
- PROCESS-PATH,C:\Apps\Example\example.exe,PROXY
- GEOIP,CN,DIRECT
- MATCH,PROXYfind-process-mode 控制内核是否查找连接对应的进程:
always:强制尝试匹配所有进程;strict:由内核判断是否需要匹配,也是默认选择;off:不进行进程匹配,路由器等环境通常会使用这一项。
进程分流特别适合:
- 让某个桌面客户端固定走代理;
- 让下载工具、游戏平台或开发工具单独选择节点;
- 让公司软件、网银或本地服务固定直连;
- 排查“只有一个应用不能联网”的问题。
但它有几个限制。
1. 进程分流仍然依赖 Rule 模式
PROCESS-NAME 本质上是一条规则。如果切到 Global,Clash 会按全局策略处理已接管的流量,而不会再按照这条进程规则进行普通的逐条分流。
2. 程序可能不只使用一个进程
有些桌面应用会启动辅助进程、更新程序或内置浏览器。只匹配主程序名称,未必能覆盖它的全部连接。
实际配置时,最好同时观察 Clash 的连接记录,并在必要时补充域名规则,而不是只写一条进程规则就认为万事大吉。
3. 不同系统和客户端的支持范围不同
在 Windows 上使用 Clash Verge Rev 时,可以通过 Mihomo 的 PROCESS-NAME、PROCESS-PATH 等规则进行桌面进程分流。Clash Mi 的规则文档目前也把这两种进程规则标注为 macOS、Linux、FreeBSD 和 Windows 支持。
因此,iPhone 上的 Clash Mi 不要直接照搬 Windows 的进程名称和进程路径规则。移动端更适合使用域名、IP、规则集以及客户端提供的 VPN/TUN 设置;具体能力应以所用系统、客户端和内核版本为准。
4. 流量必须先进入 Clash
如果一个应用绕过了系统代理,它的流量根本没有交给 Clash,那么进程规则写得再准确也没用。这时应该检查流量接管方式,尤其是系统代理与 TUN 的区别。
三、全局模式:适合临时排查,不适合一直开启
全局模式的含义不是“打开以后世界上所有网络请求都会自动被代理”。更准确地说,它表示:
已经被 Clash 接管的流量,统一交给 GLOBAL 策略组选择的出口。这句话里的“已经被 Clash 接管”非常重要。
如果电脑只开启了系统代理,而某个程序完全不读取系统代理设置,那么即使 Clash 已经切换到 Global,这个程序仍然可能绕过 Clash。TUN 模式通过虚拟网卡接管流量,通常能覆盖更多不遵守系统代理设置的程序。
全局模式适合两个场景:
临时确认是不是规则造成的问题
如果某个网站在 Rule 模式下打不开,切到 Global 后立刻恢复,通常可以判断:节点大概率可用,问题更可能出在规则匹配、DNS 或策略组选择上。
这时不应该长期停留在 Global,而应该查看连接记录,找出该请求命中的规则,再修正规则。
临时要求所有已接管流量使用同一出口
例如测试某个地区的网页、检查服务的出口 IP,或者短时间排除分流干扰。
长期使用全局模式可能带来这些问题:
- 国内网站和应用也绕到海外,延迟增加;
- 消耗更多代理套餐流量;
- 本地服务、局域网设备或部分支付应用可能异常;
- 所有请求集中到同一个节点,反而不如合理分流稳定。
还有一个 Clash Mi 用户很容易遇到的问题:**切换到全局模式后仍然无法访问,并不一定是节点坏了。**Clash Mi 官方 FAQ 提到,GLOBAL 策略组可能仍然选择了直连,需要进入“代理 → GLOBAL”,手动选择节点、节点选择或自动选择。
四、直连模式:不是关闭 Clash,而是统一不走代理
Direct 模式表示被 Clash 接管的流量全部从本地网络直接访问,不经过代理节点。
它适合临时测试本地网络,或者确认某个问题是不是代理造成的。但 Direct 不完全等于退出 Clash:内核、TUN 或系统代理可能仍在运行,只是出口统一变成了本地直连。
如果只是暂时不需要代理,可以使用 Direct;如果希望完全恢复原始网络状态,还应该断开 Clash,并确认系统代理或 TUN 已经关闭。
五、Rule、进程分流和 Global 怎么选?
| 使用场景 | 推荐方式 | 原因 |
|---|---|---|
| 日常浏览、聊天、开发 | Rule | 国内外流量自动分开,兼顾速度与稳定性 |
| 只有某个桌面应用不能联网 | Rule+进程/域名规则 | 单独控制该应用,不影响其他程序 |
| 怀疑规则写错或漏掉域名 | 临时切换 Global | 快速判断问题是否来自分流规则 |
| 测试某个节点的统一出口 | Global | 已接管流量统一使用指定策略 |
| 临时不使用代理节点 | Direct | 所有已接管流量从本地网络直连 |
| 应用完全不理会系统代理 | TUN+Rule | 先让流量进入 Clash,再进行分流 |
最简单的选择逻辑是:
- 平时保持 Rule;
- 单个应用有问题,先查看 Clash 的连接和日志;
- 看不到该应用的连接,检查系统代理或 TUN;
- 能看到连接但走错出口,补充域名或进程规则;
- 临时切换 Global 做对照测试;
- 测试结束后回到 Rule,而不是把 Global 当成永久修复方案。
六、为什么“开着 Clash”仍然可能没有走代理?
这是新手最容易忽略的问题。
系统代理
系统代理本质上是操作系统提供的一套代理设置。愿意读取并遵守这套设置的应用,会主动把请求发给 Clash;不支持或故意绕过系统代理的应用,则可能直接联网。
因此,系统代理下常见的现象就是:浏览器能用,某些游戏、桌面客户端或命令行程序不能用。
TUN 模式
TUN 会创建虚拟网卡,在系统路由层面接管更多 TCP 和 UDP 流量,不要求每个应用主动支持代理设置。
不过,TUN 解决的是“流量能不能进入 Clash”,Rule/Global 解决的是“进入之后从哪里出去”。这两组概念不能混在一起:
系统代理/TUN 是入口;Rule/Global/Direct 是出口决策。
Clash Verge Rev 官方文档说明,系统代理可以处理大部分浏览器访问,而 TUN 会安装虚拟网卡,用来接管不支持系统代理的程序,例如部分游戏和命令行工具。在 Windows 上开启 TUN 时,还要确保服务模式、权限和虚拟网卡工作正常。
手机端的 Clash Mi 同样通过系统 VPN/TUN 能力接管流量,但它受 iOS、Android 平台机制限制,不能简单套用电脑端的进程路径和系统代理思路。
七、排查一个应用不走代理的实用顺序
以后再遇到 ChatGPT 能用、Claude 不能用,或者浏览器能打开、客户端却报错,可以按下面的顺序检查:
- 查看 Clash 的连接页面:操作目标应用时,有没有产生新连接?
- 没有连接记录:应用可能绕过了系统代理,检查 TUN、系统代理和应用自身代理设置。
- 有连接记录:查看它命中了哪条规则、使用了哪个策略组。
- 策略组不对:切换对应策略,或者增加域名/进程规则。
- 临时切到 Global:确认在同一节点下是否恢复。
- Global 也不工作:检查
GLOBAL组是否仍选择DIRECT,再排查节点、DNS 和应用登录地区限制。 - 修改后重试:关闭应用的旧连接,必要时退出应用后重新打开。
这个流程比不停换节点有效得多,因为它能先判断问题究竟发生在入口、规则还是出口。
最后总结
只记住下面三句话,就已经超过了大多数只会导入订阅的用户:
- Rule 是根据规则选择出口,也是最适合日常使用的模式。
- 进程分流是 Rule 模式中的一种匹配方法,不是独立于 Rule 的万能开关。
- Global 只统一处理已经进入 Clash 的流量,不能代替 TUN,也不适合长期当作默认模式。
Clash 真正有价值的地方,不只是“点一下连接”,而是你可以看清每条流量从哪里来、匹配了什么规则,最后又从哪里出去。
理解这一点以后,很多看起来玄学的网络问题,其实都能被一步一步定位。