三种模式改变的是出站决策
Clash Meta,也就是当前常见的 mihomo 内核,会先接收进入本地代理端口或 TUN 虚拟网卡的连接,再为连接确定出口。规则、全局、直连三种模式改变的是这一步的决策方式,不会改变订阅中的节点数量,也不会把没有进入内核的流量自动纳入处理。
以浏览器访问一个 HTTPS 网站为例,连接可能先进入本机的 HTTP 或 mixed 端口,例如配置中常见的 7890,也可能由 TUN 模式从系统网络栈接管。内核识别目标域名、目标 IP、端口和网络类型后,才根据当前模式选择代理节点或本地网络。系统代理未开启、应用没有单独设置代理且 TUN 未接管时,该应用的连接会绕过 Clash;此时切换模式通常不会影响它。
| 模式 | 进入内核后的决策 | 典型用途 | 主要检查点 |
|---|---|---|---|
| 规则 | 从上到下匹配规则,交给对应策略组或 DIRECT | 日常浏览、长期运行、按站点分流 | 规则顺序、规则集状态、末尾规则 |
| 全局 | 通常交给 GLOBAL 策略组中当前选定的出口 | 临时排除规则影响、单节点连通性测试 | GLOBAL 当前选择、局域网绕行设置 |
| 直连 | 使用 DIRECT 从本地网络建立连接 | 本地网络基线、内网调试、暂停代理出口 | DNS 是否仍由内核处理、连接是否重新建立 |
规则模式:按命中顺序选择出口
规则模式适合长期使用。它会依据配置文件的 rules 列表逐条检查连接,第一条匹配成功的规则立即生效,后续规则不再参与。域名规则、IP 规则、进程规则和规则集合可以同时存在,因此顺序比规则数量更重要。
mode: rule
mixed-port: 7890
external-controller: 127.0.0.1:9090
rules:
- DOMAIN-SUFFIX,example.cn,DIRECT
- DOMAIN,api.example.net,Proxy
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- MATCH,Proxy
这段示例先让指定国内域名直连,再让一个 API 域名进入名为 Proxy 的策略组。两个私有地址段用于局域网直连,最后的 MATCH 接住之前没有命中的连接。若把 MATCH,Proxy 放到第一行,其余规则将没有机会生效。
规则模式中的三个实际判断
- 规则命中了哪个策略。客户端连接页面通常会显示规则名称或链路,例如
DOMAIN-SUFFIX → DIRECT、MATCH → Proxy。只看节点名称不足以判断规则是否正确。 - 策略组当前选了什么。规则写入
Proxy后,最终出口仍取决于该策略组。若它是手动选择组,使用当前节点;若它是url-test或fallback组,则由组内检测结果决定。 - 域名是否已转成 IP。某些连接只能看到目标 IP,域名规则可能无法参与。启用 DNS 劫持、嗅探或合适的 TUN 配置后,内核可获得更多域名信息,但具体行为取决于配置与协议。
规则模式也适合处理局域网和开发环境。例如将 localhost、127.0.0.0/8、192.168.0.0/16 与公司内网域名放在靠前位置,可以减少内网请求被送到远端节点的情况。调试前仍应确认企业 VPN、虚拟机网段或容器网段是否与这些地址重叠。
日常上网为什么优先选择规则模式
- 本地服务、打印机、NAS 和路由器管理页可保持直连。
- 不同站点可交给不同策略组,而不是固定使用同一个节点。
- 更新规则集后,不需要逐个应用修改代理设置。
- 连接记录会保留命中规则,便于定位某个域名走错出口的问题。
全局模式:跳过常规规则进行单出口测试
全局模式常被理解为“所有设备流量都强制代理”,这个描述并不准确。它只处理已经进入 Clash 内核的连接,并通常把这些连接交给 GLOBAL 策略组。未进入代理端口、未被 TUN 接管或被路由排除的连接,依然不会因为模式名称发生变化。
全局模式的价值主要在故障隔离。某个网站在规则模式下打不开,而切到全局后立即恢复,说明节点本身具备访问能力,问题更可能位于规则命中、策略组选择或直连网络。如果全局模式下仍然失败,则应继续检查节点连通性、DNS、TLS 时间、网络防火墙和目标服务状态。
适合使用全局模式的场景
- 验证单个节点。在 GLOBAL 组中固定选择一个节点,分别测试网页加载、TCP 建连和 UDP 需求,避免自动选择组在测试期间切换出口。
- 临时排除规则问题。同一网址在规则与全局之间结果不同,可回到连接记录检查规则命中链。
- 执行可重复的代理测速。固定服务器、固定节点、固定测试时段,减少规则将不同测试域名送往不同出口造成的偏差。
一次可复现的测速记录
实验可先在直连模式建立本地网络基线,再切到全局模式测试同一节点。某次千兆有线网络记录中,直连下载为 742 Mbps、上传为 93 Mbps、空载延迟为 8 ms;固定同一代理节点后下载为 186 Mbps、上传为 61 Mbps、空载延迟为 48 ms。这些数字只说明该网络、该节点和该时段的链路,不应作为其他设备的速度预期。
- 关闭正在同步文件、下载更新或播放视频的应用。
- 在直连模式下对同一测速服务器运行三次,记录中位数。
- 切到全局模式,在 GLOBAL 组固定一个节点。
- 关闭测速页面并重新打开,确保创建新连接,再运行三次。
- 同时记录下载、上传、空载延迟、负载延迟和丢包率。
客户端节点列表里的延迟测试通常只是向指定测试 URL 发起较短的 HTTP 请求,用于判断可达性和往返时间。显示 52 ms 不等于节点能稳定跑满带宽,也不代表 UDP、长连接或大文件传输一定正常。
直连模式:保留接管,出口改为本地网络
直连模式会让进入内核的连接使用 DIRECT 出站。它适合测量不经过代理节点时的网络基线,也适合访问局域网设备、调试本地服务或判断故障是否来自远端节点。直连不等于退出客户端:本地监听端口、TUN 虚拟网卡、连接日志以及 DNS 模块可能仍在工作。
直连模式与完全关闭 Clash 的区别
| 操作 | 本地代理端口 | TUN 接管 | Clash DNS |
|---|---|---|---|
| 切换直连模式 | 通常继续监听 | 通常保持原状态 | 可能继续解析 |
| 关闭系统代理 | 端口仍可能监听 | 不一定关闭 | 取决于 TUN 与系统 DNS 设置 |
| 退出客户端 | 停止监听 | 应撤销虚拟网卡与路由 | 内核 DNS 停止 |
因此,排查 DNS 问题时,仅切换直连模式不一定能得到“完全不经 Clash”的结果。若配置启用了 dns.enable、TUN 的 DNS 劫持或 fake-ip,查询仍可能由内核处理。要建立操作系统原始网络基线,应记录并逐项恢复系统代理、TUN、DNS 与路由状态。
内网调试的建议顺序
- 先在规则模式查看目标地址命中了哪条规则。
- 确认目标属于真实内网段,例如
192.168.1.0/24,并检查是否存在同名公网域名。 - 切换直连模式,关闭旧连接后重新访问服务。
- 若仍失败,检查本机路由表、企业 VPN、容器网络和服务监听地址。
- 直连可用而规则模式失败时,为该域名或网段增加靠前的 DIRECT 规则。
本地开发中还要区分监听地址。服务只监听 127.0.0.1:3000 时,其他设备不能通过局域网 IP 访问;这不是 Clash 模式导致的问题。若服务监听 0.0.0.0:3000,再检查系统防火墙、局域网隔离和对应网段的 DIRECT 规则。
切换模式后,旧连接不会自动改道
Clash 通常在连接建立时决定出站。已经存在的 TCP 连接不会因为从规则切到全局就迁移到另一个节点,WebSocket、SSH、视频流、网盘同步和 HTTP/2 长连接尤其明显。界面显示的新模式只保证后续新建连接按新逻辑处理。
让测试结果反映新模式
- 刷新网页前先关闭对应标签页,必要时完全退出并重启浏览器。
- 在客户端连接页面终止旧连接;测试 SSH 时重新建立会话。
- 等待应用连接池释放,或重启持续驻留后台的应用。
- 切换节点后重新发起 DNS 查询,避免把旧解析结果与新出口混在一起判断。
- 测试 UDP 应用时重新启动会话,因为部分应用会长期复用映射。
在常见图形客户端中,模式入口通常位于「代理」→「模式」,可选择「规则」「全局」或「直连」;部分客户端把它放在「设置」→「Clash 设置」→「运行模式」,托盘菜单也可能提供同名选项。菜单名称会随客户端版本变化,但内核对应值仍是 rule、global 与 direct。
若启用了 mihomo 的外部控制器,例如 127.0.0.1:9090,控制面板会通过控制接口修改模式。请求体中的值同样使用小写英文:
PUT /configs
Content-Type: application/json
{"mode":"rule"}
外部控制器应只监听受信任接口并配置访问凭据。修改后可重新读取运行配置,并在连接记录中创建一个新请求,确认实际模式与命中链一致。手工编辑配置文件时还要执行重新加载;只改磁盘文件,不会保证正在运行的内核立即采用新值。
按使用场景选择模式
日常浏览与长期后台运行
选择规则模式。先保证局域网、常用直连服务和代理服务分别命中预期规则,再让策略组处理节点切换。规则模式提供更清晰的流量记录,也能避免所有连接集中到同一个远端出口。
某个网站突然打不开
保持规则模式查看连接记录,记下命中规则与策略组;随后切到全局模式,用同一节点重新建立连接。全局可用时回查规则,全局仍不可用时检查节点、DNS 和目标服务。测试结束后恢复规则模式。
比较本地网络与节点性能
先用直连模式测三次本地基线,再以全局模式固定节点测三次。测试服务器、设备连接方式和时间段应保持一致。不要在规则模式下直接比较多个测速域名,因为它们可能命中不同规则或不同策略组。
访问 NAS、路由器与开发服务
先尝试规则模式中的局域网 DIRECT 规则。临时切换直连可用于确认代理出口是否参与故障,但长期处理方式应是补全内网域名和网段规则。若 TUN 路由与企业 VPN 冲突,还需要调整路由排除项,单纯设置直连模式不能修复路由表。
暂停远端代理但保留客户端观察
选择直连模式可以保留连接日志和本地接管结构,便于对比请求行为。若目标是恢复操作系统原始网络状态,则还应关闭系统代理和 TUN,并确认 DNS、默认路由与虚拟网卡已经恢复。
一份可执行的模式排查清单
- 确认应用流量通过系统代理、手动代理或 TUN 进入 Clash。
- 记录当前运行模式,不把模式与策略组名称混为一谈。
- 在连接页面查看目标域名、目标 IP、命中规则与实际链路。
- 规则模式异常时,用全局模式固定同一节点进行对照。
- 需要本地基线时切到直连,并注意 DNS 可能仍由内核处理。
- 每次切换后关闭旧连接,重新打开页面或重启测试应用。
- 问题定位完成后回到规则模式,修正规则顺序、规则集或策略组选择。
三种模式没有统一的速度排序。规则模式的结果取决于命中规则与策略组,全局模式取决于 GLOBAL 选中的节点,直连模式取决于本地运营商链路。选择模式时应先明确测试对象:是规则决策、远端节点,还是本地网络。把三者拆开记录,才能从连接日志中得到可复现的结论。