规则模式、全局模式、直连模式怎么选: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
DOMAIN-SUFFIX,example.com,DIRECT匹配example.com及其子域名,不匹配notexample.com。192.168.0.0/16和10.0.0.0/8是私有地址网段。这里让访问对应地址的连接直连,适合解释局域网访问逻辑,但不代表已经覆盖所有本地网络情形。no-resolve表示不为了匹配这条 IP 规则而主动解析域名。目标本身是 IP 地址时,仍可进行地址匹配。MATCH是兜底规则,应放在最后。它前面的条目没有命中时,连接使用这里指定的策略。
在真实订阅中,如果已经存在名称为 Proxy 的代理组,可以将末行改为 MATCH,Proxy。名称必须与配置中的代理组完全一致,包括大小写。不要只添加规则却遗漏对应组,否则可能在加载配置时出现策略不存在的错误。
命中代理组,不代表已经选中代理节点
规则指向的是策略,策略可能是节点、选择组、自动测速组,也可能是 DIRECT。例如规则命中 Proxy,而这个选择组当前选中了 DIRECT,实际连接仍然直连。排查时要同时查看“命中哪条规则”和“策略组最终选了什么”,不能只看规则名称。
全局模式:使用 GLOBAL,但仍受接管范围限制
mode: global 会让进入内核的普通连接使用内置 GLOBAL 选择策略,而不是沿常规 rules 列表分流。切换后,还需要在客户端的代理选择界面找到 GLOBAL,确认它当前选中的是预期节点或策略。
客户端可能把这个入口显示为“全局”或“全局选择”。具体菜单名称随客户端变化,可靠的识别依据是当前模式为 global,且全局策略的实际选择已经明确。如果 GLOBAL 仍指向 DIRECT,全局模式也不会产生代理出口。
适合用来做短时对照测试
- 规则模式下,某个站点连接异常,先记录它命中的规则和策略。
- 切换到全局模式,并选中一个已确认可用的节点。
- 关闭目标站点的旧连接,重新发起请求。
- 如果新连接恢复,再回查规则顺序、域名覆盖和原策略组的选择。
这个结果只能说明两次测试采用了不同的处理路径,不能直接证明“规则文件损坏”。两次使用了不同节点、DNS 结果变化、旧连接未断开,都可能影响观察结果。对照时尽量保持节点、目标地址和接管方式一致,只改变模式。
直连模式:不使用节点,不等于关闭客户端
mode: direct 表示进入内核的连接直接访问目标,不使用代理节点。系统代理设置、TUN 虚拟网卡以及内核的 DNS 服务可能仍然处于启用状态,所以“直连模式”和“退出客户端、关闭接管”并不是同一个测试条件。
例如浏览器仍把请求发往本机 127.0.0.1:7890,内核收到后再直连目标,这仍然经过了本地代理入口。这里的 7890 只是常用配置示例;真实端口应以当前运行配置的 mixed-port 或 port 为准。
哪些问题适合用直连模式比较
- 检查节点路径:同一目标在直连可用、代理不可用时,应检查节点连通性、出口限制和策略选择。
- 检查本地网络:直连也失败时,再检查 Wi-Fi、网关、DNS 和目标服务本身。
- 区分接管故障:直连模式失败,但关闭系统代理与 TUN 后成功,说明还需要检查本地接管链路或内核 DNS。
直连并不保证所有网站都能访问,也不会自动把 DNS 改成运营商服务器。解析仍可能按当前配置使用加密 DNS、指定解析器或其他 DNS 规则。需要排查解析问题时,应单独核对 dns 配置,而不是把模式开关当成 DNS 重置按钮。
切换后怎样确认生效:配置、连接与出口分开看
编辑 YAML 里的 mode,不代表当前运行内核已经采用了新值。部分客户端会用界面状态或覆写设置覆盖订阅字段;订阅更新也可能替换手工修改。应以客户端当前显示的运行模式和新连接记录为准。
用固定步骤检查,避免只看网页能否打开
- 记录原状态。记下模式、当前节点、系统代理或 TUN 的开关状态,保留可恢复的配置。
- 修改一个变量。只切换模式,先不要同时修改 DNS、节点和规则。需要在全局模式中选择出口时,记录选中的对象。
- 建立新连接。关闭测试程序的旧连接;必要时在客户端连接面板中结束相关连接。已有 TCP 连接通常不会自动迁移到新出口。
- 检查连接详情。在“连接”或“Connections”页面查找目标域名、目标 IP、命中规则与策略链。不同客户端显示字段可能不同。
- 核对出口。通过可信的出口 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 字段时,可查阅配置参考。处理顺序保持一致:先确认流量进入内核,再确认策略选择,最后检查实际出口。