使用教程 · Clash 技术博客

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

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

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

切到 Global 后,有的应用恢复了,有的却仍然没有反应,这并不矛盾。运行模式决定连接如何选路,系统代理或虚拟网卡决定哪些程序的请求能够进来。分清这两件事,才能用模式切换做对照,避免把临时测试留成长期设置。

Rule、Global、Direct 决定连接走哪条路

日常使用 Rule 按规则分流。需要临时切换出口或比较访问结果时,再用 Global 或 Direct;切换模式不会提高节点本身的速度。

模式怎样处理连接常见用途
Rule按顺序匹配规则,执行第一条命中规则的策略日常让不同服务使用不同出口
Global交给 GLOBAL 组,实际出口取决于该组选择临时统一出口,或指定节点做访问对照
Direct使用本地网络出口验证本地网络可达性,或暂时直连

这些模式只影响已经进入内核的连接。某个应用的流量没有进入内核时,切到 Global 也不会自动接管它。应用在 Connections 中完全没有记录,可以检查系统代理、应用代理或 TUN 是否生效。

在 Clash Verge Rev 等桌面客户端中,打开主界面的“代理模式”项,或右键托盘图标进入 Mode / 模式子菜单;在移动端则通常位于首页或 Proxies / 代理页的“模式”一行。

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

  1. 打开 Mode / 代理模式

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

  2. 选择 Rule

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

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

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

  4. 对照结束切回 Rule

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

系统代理、TUN、策略组和 DNS 的分工

系统代理、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域名解析结果怎样交给规则与连接流程

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

检查一条实际请求

  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 都失败
分别查看本地网络和代理日志,不要把结果归给模式名称。
三种模式都没有连接记录
重新发起请求后仍没有记录时,检查系统代理、应用自身代理或虚拟网卡设置是否生效,不要只靠切换模式判断接管。

Script 模式:旧客户端与当前 Mihomo 的差别

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

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

遇到 Script 时怎么判断

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

切换模式后,怎样判断连接结果?

Rule 失败,Global 成功

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

Global 页面仍显示 DIRECT

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

切到 Direct 后局域网恢复

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

模式切换后页面结果不变

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

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

参考资料