Clash 规则、全局、直连三种代理模式怎么选:场景对照与切换要点

解释 rule、global、direct 三种模式的转发逻辑差异,给出日常上网、临时排错、全流量测试等典型场景下的选择建议,并说明切换模式后需要注意的连接状态变化。

先分清两个开关:流量接管与代理模式

Clash 客户端里的「系统代理」「TUN 模式」和「规则、全局、直连」不是同一层设置。系统代理或 TUN 负责把流量送入 Clash 内核,代理模式负责决定这些已进入内核的连接接下来走代理节点、DIRECT 直连还是 REJECT 拒绝。只切换代理模式,不会自动开启系统代理;只开启 TUN,也不代表所有连接一定走远端节点。

以常见配置为例,HTTP 与 SOCKS 共用的 mixed-port 可能设为 7890,控制接口 external-controller 可能设为 127.0.0.1:9090。浏览器显式使用 127.0.0.1:7890,或者操作系统代理指向该端口后,请求才会进入内核。启用 TUN 后,更多未读取系统代理的应用、UDP 流量和部分命令行程序也能被接管。端口是配置值,不同客户端生成的实际数字可能不同,应以「设置」→「端口设置」或当前配置文件为准。

三种模式处理的是同一批已接管连接

这里的「跳过规则」需要注意边界。内核仍要完成连接接收、目标识别和 DNS 等基础工作,客户端自身也可能保留局域网绕过、进程排除或防回环逻辑。direct 因而不等于退出 Clash;若想彻底停止接管,应另外关闭系统代理和 TUN,必要时再停止内核。

规则模式:日常使用的默认选择

规则模式适合长期运行。它会从上到下检查规则,第一条命中的规则立即生效,后面的规则不再参与判断。一个典型目标是让局域网与国内站点直连,让指定域名或国外流量进入代理策略组,最后用 MATCH 接住未分类连接。

mode: rule
mixed-port: 7890

rules:
  - DOMAIN-SUFFIX,example.com,Proxy
  - DOMAIN-SUFFIX,cn,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,Proxy

这段示例中,访问 example.com 会先命中第一条并交给 Proxy;其他以 .cn 结尾的域名直接连接;仍未命中的中国大陆 IP 会由 GEOIP,CN 处理;最后剩余请求进入 Proxy。规则顺序不能随意交换。例如把 MATCH 放在最前面,下面的 DOMAIN-SUFFIX 与 GEOIP 就永远没有机会执行。

规则模式适用的具体场景

  1. 日常浏览:国内服务保持直连,外部服务按规则走代理,减少不必要的远端绕行。
  2. 视频与下载分流:为流媒体、游戏平台或大文件下载单独设置策略组,按业务选择节点。
  3. 局域网设备访问:让 192.168.0.0/16、10.0.0.0/8 等私有地址保持直连,避免访问路由器或 NAS 时被送往代理。
  4. 长期 TUN 接管:系统流量种类较多时,通过规则精确决定 TCP、UDP、域名与 IP 请求的出口。

使用订阅配置时,规则模式的效果取决于订阅提供的规则集与策略组。名称相似的两个配置,可能分别使用 GEOIP、GEOSITE、rule-providers 或大量 DOMAIN-SUFFIX,最终分流结果并不相同。遇到某个网站走错出口,应先在连接详情中查看命中的规则与策略,而不是直接认定 rule 模式失效。

规则命中异常的检查顺序

全局模式:全流量验证与临时绕过规则

全局模式适合测试,不一定适合长期保持。切换到 global 后,常规业务规则不再决定出口,连接统一进入 GLOBAL 策略入口。用户还需要在 GLOBAL 中明确选中可用节点;如果该入口当前选中了 DIRECT,界面虽然显示全局模式,实际连接仍可能直连。

使用场景 推荐模式 观察重点
判断规则是否导致网站打不开 临时切到 global 同一节点下能否立即恢复访问
检查指定节点的完整出口 global GLOBAL 是否选中目标节点
日常国内外混合访问 rule 域名、GEOIP 与兜底规则
判断代理节点是否引发异常 direct 直连网络能否访问目标

例如某网站在规则模式下超时,可以先记录当前节点,然后将模式切到 global,并在 GLOBAL 中选择同一个节点。如果全局模式恢复,通常说明节点本身可用,问题更可能来自规则命中、策略组指向或 DNS 分流。如果全局模式仍失败,再检查节点连通性、握手日志、UDP 支持和目标服务限制。

全局模式并不等于所有程序一定被代理

只有进入 Clash 的流量才受 global 控制。浏览器使用系统代理时会进入内核,但某些游戏、虚拟机、容器或自行建立网络栈的程序可能绕过系统代理。需要覆盖这些程序时,应检查 TUN 是否启动、操作系统是否授予管理员权限,以及客户端的进程排除列表。Android 上则要确认 VpnService 授权仍有效,且目标应用没有被「分应用代理」排除。

直连模式:定位代理影响,不是退出按钮

direct 模式让已进入 Clash 的新连接尝试从本地网络直接访问目标。它最适合做对照测试:同一设备、同一 DNS 环境下,切到直连后是否恢复;如果恢复,问题可能位于代理节点、策略组或远端链路;如果仍失败,则应继续检查本地网络、目标服务、DNS 和应用自身。

直连并不能让本地网络获得原本不可达的目标。如果运营商网络无法直接连接某个地址,direct 下仍会超时。它也不等于关闭 DNS 处理:当 DNS 请求由 Clash 的 nameserver 模块接管时,即使代理模式是 direct,域名解析仍可能经过配置中的本地或加密 DNS 服务器。

适合切到直连的三个时机

不要把 direct 当作关闭客户端的替代方案。系统代理仍可能指向 127.0.0.1:7890,TUN 虚拟网卡也可能继续运行,连接记录与 DNS 缓存仍由内核管理。需要恢复原始网络路径时,应依次关闭「设置」→「系统代理」、关闭「设置」→「TUN 模式」,再确认操作系统代理设置已复原。

切换模式后,为什么旧连接没有立刻变化

模式切换主要影响新建连接。已经建立的 TCP 会话通常会继续使用原出口,直到应用关闭连接、服务器断开或内核主动终止。HTTP/2、WebSocket、QUIC 和长连接应用尤其明显:页面刷新后可能复用原连接,看起来像模式没有切换。

切换后建议等待 3 至 10 秒,再重新发起请求。若结果仍未变化,可在客户端「连接」页面关闭对应连接,或者完全退出并重新打开目标应用。浏览器测试时,新建隐私窗口不一定足够,因为浏览器进程仍可能共享连接池;彻底关闭浏览器进程后再打开,结果更可靠。

DNS 缓存也会干扰对照结果

应用、操作系统和 Clash 内核都可能保存 DNS 结果。Windows 可在终端执行 ipconfig /flushdns 清理系统 DNS 缓存;macOS 不同版本的刷新机制不同,通常先重启目标应用与 Clash 内核更稳妥。使用 fake-ip 时,198.18.0.0/16 范围内的地址是内核映射结果,不代表网站真实服务器位于该网段。

测试同一个网站时,应同时记录模式、策略组节点、命中规则、目标域名、连接协议和耗时。例如 rule 下命中 DIRECT 耗时 42 ms,global 下经目标节点耗时 186 ms,这样的对照才有意义。只看网页主观打开速度,容易受到缓存、连接复用和内容分发网络节点变化影响。

客户端中如何切换,以及配置文件如何保存

不同图形客户端的入口名称略有差异,常见路径是侧栏「代理」或「Proxies」页面顶部的「规则 / 全局 / 直连」,也有客户端把它放在「设置」→「运行模式」。切换后应回到连接页面发起一次新请求,确认 mode 与实际出站一致。若客户端支持托盘菜单,也可从托盘的「代理模式」子菜单快速调整。

在 mihomo 或兼容 Clash 配置中,可以用 mode 字段设置加载配置时的默认模式:

mode: rule

可选值通常为 ruleglobaldirect。部分客户端会将运行时选择保存在自己的设置数据库中,并在下次启动时覆盖配置文件的 mode;因此手工编辑 YAML 后,应观察客户端重新加载时是否保留修改。订阅更新也可能替换当前配置,不宜直接把长期自定义内容只写进订阅生成文件。

通过控制接口切换 mihomo 模式

启用了 external-controller 的环境可以通过 REST 接口修改运行配置。下面示例假设控制地址只监听本机 127.0.0.1:9090,并且未配置 secret:

curl -X PATCH http://127.0.0.1:9090/configs \
  -H "Content-Type: application/json" \
  -d '{"mode":"rule"}'

将 rule 改为 global 或 direct 即可切换。若配置了 secret,请使用 Authorization: Bearer 密钥内容 请求头。控制接口不应直接暴露到公网;需要局域网管理时,应同时限制监听地址、防火墙来源和认证密钥。

一套可重复的模式排错流程

模式切换最有价值的用法是做受控对照,而不是随机来回点击。保持同一网络、同一目标和同一节点,按以下顺序检查,可以较快定位问题所在。

  1. 确认系统代理或 TUN 已开启,并在连接列表中看到目标请求。
  2. 使用 rule 发起新连接,记录命中规则、策略组和具体节点。
  3. 切换到 global,在 GLOBAL 中选择刚才同一个节点,关闭旧连接后重试。
  4. 切换到 direct,再次关闭旧连接并测试本地网络直达结果。
  5. 比较三次日志中的 DNS 结果、连接协议、握手错误和耗时。
  6. 测试结束后恢复 rule,确认策略组选择与 TUN 状态符合日常设置。
Rule 结果 Global 结果 Direct 结果 优先检查
失败 成功 失败 规则命中与策略组指向
失败 失败 成功 代理节点、协议与远端链路
成功 成功 失败 属于正常的代理可达场景
全部失败 全部失败 全部失败 流量接管、DNS、本地网络或目标服务

最终选择可以保持简单:日常使用 rule;需要验证某个节点或绕开复杂规则时临时用 global;需要确认本地网络和代理链路谁在影响连接时用 direct。切换后始终检查 GLOBAL 的具体选择、关闭旧连接,并把系统代理与 TUN 当作独立开关处理,三种模式的判断就不会混在一起。

下载 Clash 客户端 按平台查看可选版本