使用教程 · Clash 技术博客

Clash 代理模式怎么选?Rule、Global、Direct 的区别与切换方法

Rule、Global 和 Direct 决定已进入 Clash 的连接按规则分流、统一代理或本地直连。本文说明三种模式的适用场景、与系统代理和 TUN 的区别、旧版 Script 边界及排查方法。

  • 代理模式
  • Rule
  • Global
  • Direct
  • Script
本文目录

先分清:运行模式、系统代理与 TUN 不是一回事

Mihomo 当前文档列出的运行模式是 Rule、Global 和 Direct,默认使用 Rule。它们处理的是已经进入内核的连接,并决定这条连接接下来按规则分流、统一交给 GLOBAL 策略组,还是直接使用本地网络。

系统代理、TUN 和移动端 VPN 解决的是流量怎样进入内核;select、url-test、fallback 解决的是策略组怎样选出口;fake-ip 与 redir-host 则属于 DNS 增强模式。把这些不同层级都叫“代理模式”,很容易在排障时改错开关。

这些名称分别属于哪一层

层级常见选项实际决定
运行模式Rule / Global / Direct已进入内核的连接最终使用哪个出口
接管方式System Proxy / TUN / 移动端 VPN哪些应用或系统流量能够进入内核
策略组类型select / url-test / fallback一个策略组内部怎样选择节点或其他策略
DNS 增强模式fake-ip / redir-host域名解析结果怎样交给规则与连接流程

三种运行模式改变出口决定,不改变节点速度

在 Clash Verge Rev 等桌面客户端中,打开主界面的“代理模式”项,或右键托盘图标进入 Mode / 模式子菜单;在移动端则通常位于首页或 Proxies / 代理页的“模式”一行。日常使用先点 Rule,需要判断是不是规则导致某个网站走错时,再短暂切到 Global 或 Direct。

三个模式接收的是同一批进入 Clash 的连接,区别在于接下来怎么选出口。Rule 按规则从上到下匹配,Global 把连接交给全局策略组,Direct 则直接使用本地网络。它们不会改变一个节点本身的带宽和延迟。

在客户端里完成一次真实切换

  1. 打开 Mode / 代理模式

    从主界面模式项或托盘菜单进入,不要去改远程 YAML 的 mode 字段。

  2. 选择 Rule

    打开目标网页,到 Connections 记下当前命中规则和出口。

  3. 需要对照时选择 Global 或 Direct

    保持同一节点和目标,只更改模式并重新建立连接。

  4. 对照结束切回 Rule

    再次请求目标,确认新的连接已经恢复按规则分流。

模式与实际用途

模式连接怎么走适合什么时候用
Rule命中第一条适用规则后执行对应策略日常使用,让不同服务走不同出口
Global所有进入 Clash 的连接交给全局组短时间对照规则是否造成问题
Direct所有进入 Clash 的连接直接访问验证本地网络,或暂时不使用代理

模式只影响已经进入 Clash 的流量。应用完全不读取系统代理、Connections 里没有记录时,从 Rule 切到 Global 不会让它突然出现;应先处理系统代理、应用代理或 TUN。

Rule(规则模式):按第一条命中规则决定出口

Rule 是 Mihomo 的默认运行模式,适合需要直连、代理、拒绝和不同策略组并存的日常场景。它并不天然等于“国内直连、国外代理”,实际结果完全取决于当前配置里的 rules、rule-providers 及其顺序。

Mihomo 从 rules 顶部向下检查,请求命中第一条就停止。一个域名本来应该走代理,却先命中了更宽的 DIRECT 规则,后面再写多少条都不会执行。列表末尾常见的 MATCH 用来接住前面没有匹配的连接。

打开 Connections,找到刚才的请求,查看规则类型和策略组。界面显示 DOMAIN-SUFFIX、RULE-SET 或 MATCH,能直接告诉你是哪里做了决定;凭感觉把模式来回切换,反而看不到规则顺序的问题。

自包含的顺序示例,只使用 Mihomo 内置动作
rules:
  - DOMAIN,api.example.com,DIRECT
  - DOMAIN-SUFFIX,example.com,REJECT
  - MATCH,DIRECT

日常使用 Rule,要能回答“这条连接命中了什么”

检查一条实际请求

  1. 保持 Rule 模式

    在主要策略组里固定一条已知可用节点。

  2. 重做目标动作

    打开同一网页、刷新同一接口或启动同一应用。

  3. 到 Connections 找到它

    按域名、进程或时间定位刚产生的连接。

  4. 读取规则与出口

    确认它是 DIRECT、REJECT 还是某个代理策略组。

如果结果符合预期,Rule 就是正常状态。某个网站失败时,只改与它有关的规则或策略组,不要因为一条连接把全站切到 Global。

Global(全局模式):把已接管连接交给 GLOBAL 组

Global 只改变已经进入 Mihomo 的连接,不会自动接管设备上所有应用。进入该模式后,还要到 GLOBAL 策略组确认当前选中的是具体节点、其他策略组还是 DIRECT;只看顶部显示 Global,无法判断实际出口。

在 Global 模式下,先到 GLOBAL 策略组选择一条具体节点。若目标请求在 Rule 下命中 DIRECT 而失败,切到 Global 后通过该节点成功,说明网络和节点至少可用,重点回到 Rule 的匹配顺序。

Global 下仍然 timeout,规则就不是唯一原因;比较节点、DNS 和本地网络。测试结束后切回 Rule,因为系统更新、局域网和国内服务等原本的直连流量在 Global 下也可能被送到同一出口。

Direct(直连模式):经过内核后使用本地网络出口

Direct 模式会让进入 Clash 的请求直接访问。一个本地可达的网站在 Direct 成功、在代理策略失败,问题更可能出在节点或代理连接;Direct 也失败,则检查本地 DNS、网络或目标服务。

Direct 不是“关闭 Clash”的完全等价物。请求仍可能进入内核,只是出口选择 DIRECT。要判断应用有没有经过 Clash,仍然要看 Connections,而不是只看页面是否打开。

Direct 成功,Rule 失败且走代理
检查该代理策略的节点和规则是否应该这样安排。
Direct 与 Global 都失败
分别查看本地网络和代理日志,不要把结果归给模式名称。
三种模式都没有连接记录
应用绕过了 Clash,先修流量入口。

为什么旧客户端里还有 Script / 脚本模式

部分历史 Clash 客户端、旧内核或特定配置曾提供 Script / 脚本模式,用脚本处理比普通规则更复杂的判断。当前 Mihomo 通用配置文档只把 Rule、Global、Direct 列为运行模式,因此不能把 Script 写成所有现代客户端都具备的第四种通用模式。

旧客户端里能看到 Script,不代表迁移到新客户端后仍有同名开关;新客户端里找不到也不表示安装失败。迁移旧配置时,应先确认脚本实际判断了哪些域名、网络或进程,再按当前内核能力改写为 rules、rule-providers 或客户端支持的覆写。

遇到 Script 时怎么判断

看到的位置应怎样理解下一步
历史客户端的模式菜单该版本或内核提供的兼容能力保留旧环境记录并核对对应版本文档
旧配置中的脚本段可能包含自定义路由逻辑先读清判断条件,再决定是否迁移
新 Mihomo 客户端没有 Script符合当前三种通用运行模式的界面不要强行写入未经当前内核确认的 mode 值
Merge、覆写或 JavaScript 页面属于客户端配置处理能力不要和内核运行模式混为一谈

三种模式怎么选:只改变一个变量做对照

按场景选择运行模式

当前目的建议模式需要观察
日常按服务分流RuleConnections 中的命中规则、策略组和实际出口
判断是不是规则把请求送错短时间使用 GlobalGLOBAL 组选择与重建后的新连接
判断本地网络能否直达短时间使用 Direct本地 DNS、目标可达性和连接记录
应用没有任何连接记录先不切模式系统代理、应用代理、TUN 或移动端 VPN

Rule 失败,Global 成功

比较两次 Connections 的规则和出口,修正 Rule 匹配。

Global 页面仍显示 DIRECT

检查 GLOBAL 策略组的当前选择,而不是只看顶部模式。

切到 Direct 后局域网恢复

补充本地网段直连规则,避免长期靠切模式。

模式切换后页面结果不变

关闭复用连接并重新请求,再看新产生的记录。

一次对照结束后,把模式切回原计划,再重复同一动作。如果 Rule 中已经命中正确策略且结果正常,就不需要保留 Global 作为“修复”。

参考资料