规则模式、全局模式、直连模式怎么选:Clash 三种代理模式对比

用实际场景对比 Clash 的 rule、global、direct 三种模式:各自如何匹配流量、适合什么情况、切换后应怎样确认生效。

三种模式决定出口,不决定流量是否进入内核

Clash 的代理模式是流量进入内核之后的处理方式。rule 按规则选择策略,global 交给内置全局策略 GLOBAL,direct 使用直连出口。Clash Meta 延续到 mihomo 后,这三个基础模式仍然采用相同的配置值。

这里要分清两件事:系统代理、应用代理和 TUN 负责把连接送进内核;代理模式负责决定收到的连接往哪里走。因此,“全局模式”不等于“电脑上的所有程序都已经被接管”。一个忽略系统代理、又没有被 TUN 接管的程序,不会因为切换到全局模式就自动经过节点。

配置值常见界面名称新连接如何选择出口常见用途
rule规则、Rule按规则顺序匹配,再执行对应策略日常分流、保留局域网直连
global全局、Global使用 GLOBAL 当前选中的出口临时统一出口、对照排查规则
direct直连、Direct不经代理节点,直接连接目标测试本地网络、暂时停止代理转发

规则模式:按顺序匹配,命中后停止

mode: rule 是按配置分流的入口。常见规则包含域名后缀、目标 IP 网段以及最终兜底策略。规则通常从上到下检查,先匹配的规则决定这条连接的策略;后面的规则不会再替它重新选择出口。

一个可读的最小分流示例

以下是配置片段。它只使用内置 DIRECT 策略,便于单独理解语法,不会凭空生成代理节点。

mode: rule
log-level: info

rules:
  - DOMAIN-SUFFIX,example.com,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - MATCH,DIRECT

在真实订阅中,如果已经存在名称为 Proxy 的代理组,可以将末行改为 MATCH,Proxy。名称必须与配置中的代理组完全一致,包括大小写。不要只添加规则却遗漏对应组,否则可能在加载配置时出现策略不存在的错误。

命中代理组,不代表已经选中代理节点

规则指向的是策略,策略可能是节点、选择组、自动测速组,也可能是 DIRECT。例如规则命中 Proxy,而这个选择组当前选中了 DIRECT,实际连接仍然直连。排查时要同时查看“命中哪条规则”和“策略组最终选了什么”,不能只看规则名称。

全局模式:使用 GLOBAL,但仍受接管范围限制

mode: global 会让进入内核的普通连接使用内置 GLOBAL 选择策略,而不是沿常规 rules 列表分流。切换后,还需要在客户端的代理选择界面找到 GLOBAL,确认它当前选中的是预期节点或策略。

客户端可能把这个入口显示为“全局”或“全局选择”。具体菜单名称随客户端变化,可靠的识别依据是当前模式为 global,且全局策略的实际选择已经明确。如果 GLOBAL 仍指向 DIRECT,全局模式也不会产生代理出口。

适合用来做短时对照测试

  1. 规则模式下,某个站点连接异常,先记录它命中的规则和策略。
  2. 切换到全局模式,并选中一个已确认可用的节点。
  3. 关闭目标站点的旧连接,重新发起请求。
  4. 如果新连接恢复,再回查规则顺序、域名覆盖和原策略组的选择。

这个结果只能说明两次测试采用了不同的处理路径,不能直接证明“规则文件损坏”。两次使用了不同节点、DNS 结果变化、旧连接未断开,都可能影响观察结果。对照时尽量保持节点、目标地址和接管方式一致,只改变模式。

直连模式:不使用节点,不等于关闭客户端

mode: direct 表示进入内核的连接直接访问目标,不使用代理节点。系统代理设置、TUN 虚拟网卡以及内核的 DNS 服务可能仍然处于启用状态,所以“直连模式”和“退出客户端、关闭接管”并不是同一个测试条件。

例如浏览器仍把请求发往本机 127.0.0.1:7890,内核收到后再直连目标,这仍然经过了本地代理入口。这里的 7890 只是常用配置示例;真实端口应以当前运行配置的 mixed-port 或 port 为准。

哪些问题适合用直连模式比较

直连并不保证所有网站都能访问,也不会自动把 DNS 改成运营商服务器。解析仍可能按当前配置使用加密 DNS、指定解析器或其他 DNS 规则。需要排查解析问题时,应单独核对 dns 配置,而不是把模式开关当成 DNS 重置按钮。

切换后怎样确认生效:配置、连接与出口分开看

编辑 YAML 里的 mode,不代表当前运行内核已经采用了新值。部分客户端会用界面状态或覆写设置覆盖订阅字段;订阅更新也可能替换手工修改。应以客户端当前显示的运行模式和新连接记录为准。

用固定步骤检查,避免只看网页能否打开

  1. 记录原状态。记下模式、当前节点、系统代理或 TUN 的开关状态,保留可恢复的配置。
  2. 修改一个变量。只切换模式,先不要同时修改 DNS、节点和规则。需要在全局模式中选择出口时,记录选中的对象。
  3. 建立新连接。关闭测试程序的旧连接;必要时在客户端连接面板中结束相关连接。已有 TCP 连接通常不会自动迁移到新出口。
  4. 检查连接详情。在“连接”或“Connections”页面查找目标域名、目标 IP、命中规则与策略链。不同客户端显示字段可能不同。
  5. 核对出口。通过可信的出口 IP 查询服务检查结果,再与直连基线比较。出口 IP 相同不一定代表配置无效,例如两条路径可能共享同一公网出口。

用 curl 固定测试入口

假设当前配置启用了 mixed-port: 7890,可以显式指定本地代理,减少浏览器扩展和系统代理设置带来的干扰:

curl --proxy http://127.0.0.1:7890 --connect-timeout 10 --max-time 20 -I https://example.com
curl --noproxy "*" --connect-timeout 10 --max-time 20 -I https://example.com

第一条命令经过指定的本地 HTTP 代理入口,再由当前模式决定出口;它不是“强制使用远程节点”。第二条跳过 curl 的显式代理,但如果 TUN 仍在接管流量,请求仍可能进入内核,因此不能把它直接认定为绕过客户端的基线。Windows PowerShell 中如遇到 curl 别名差异,可使用 curl.exe。

示例中的 10 秒连接超时和 20 秒总超时只是测试上限,不是速度标准。命令返回 HTTP 状态说明收到了响应,但不证明出口与预期一致。最终仍要结合内核连接记录判断;遇到目标站点不支持 HEAD 请求,也应换用普通 GET 请求复核。

按使用场景选择:日常分流、临时排查与直连基线

使用场景优先选择同时确认
日常访问,同时使用内网和外部服务规则模式本地网段、域名规则与兜底策略是否合适
怀疑某个域名被错误分流临时切换全局模式比较GLOBAL 的选择、旧连接是否结束
暂时不想使用代理节点直连模式DNS 与流量接管仍可能继续运行
某个程序完全不出现在连接面板先检查接管方式应用代理设置、系统代理支持和 TUN 路由
需要测试不经过客户端的本地网络关闭接管后测试系统代理、TUN 与应用手动代理均已恢复

日常使用通常从规则模式开始:明确哪些连接直连,哪些连接进入代理组。全局模式适合短时统一出口或做规则对照,直连模式适合暂时不使用节点及建立部分测试基线。三者没有固定的速度排名,最终表现取决于实际出口、节点质量、目标服务和本地网络。

常见误判:模式切换没有解决的几类问题

全局模式能上网,规则模式不能,是否必须一直开全局?

不必直接得出这个结论。先查看失败连接在规则模式下命中了什么,再检查对应组是否选中可用节点。也可能是一个域名有多个关联域名,只覆盖主域名不足以处理登录、静态资源或接口请求。根据连接记录补齐规则,比长期绕过全部分流更容易保留内网访问。

切到直连后,为什么日志还在增加?

直连模式并没有停止内核。只要系统代理或 TUN 继续把流量交给它,连接记录就仍然会出现。判断是否使用远程节点,应看最终策略与出口,而不是看客户端是否仍有流量计数。

全局模式是否意味着所有 UDP 都能代理?

不是。UDP 能否进入内核取决于接管方式,能否转发还取决于入口、所选节点协议及其配置。仅设置浏览器使用的 HTTP 系统代理,不能保证游戏或语音程序的 UDP 流量被接管;把模式改成 global 也不会补上这条缺失的路径。

进一步设置可查看使用指南;需要核对 mode、rules、端口与 DNS 字段时,可查阅配置参考。处理顺序保持一致:先确认流量进入内核,再确认策略选择,最后检查实际出口。

Clash下载