ZeZe

Clash 规则冲突导致无法连接怎么办?按命中规则逐步修复

更新于 2026-10-26 · allzezecloud.xyz

简答:先切换全局或直连模式做对照,再在连接记录查看实际命中规则、策略组和报错;确认是规则冲突后,把具体域名规则移到 MATCH 前并逐条恢复,通常无需重装客户端即可定位。

定义:Clash 规则冲突,是指同一请求可能符合多条规则,但因从上到下优先匹配、策略组引用或规则集配置问题,最终被 DIRECT、REJECT 或错误节点处理。

先做这一步:用三种模式确认是不是规则问题

本文是第三方使用指南,Clash 客户端、内核和配置文件不是同一层,菜单名称也可能随版本变化。先不要同时修改 DNS、TUN、节点和规则,否则很难判断真正原因。

三种模式的快速对照
测试方式操作结果如何判断
规则模式保持当前配置,访问同一个打不开的域名记录实际命中的规则、策略组和错误信息
全局模式选择一个已知可用的代理策略组或节点全局可用而规则模式不可用,优先检查规则顺序和策略组
直连模式暂时不经过代理访问普通网站或局域网服务直连也失败,问题可能在本地网络、DNS、系统代理或节点之外

在 Clash Verge Rev 中,项目文档说明可以右键订阅配置文件并选择“编辑规则”,自定义规则应放在前置位置以获得更高优先级;具体入口请以你安装的版本为准。Clash Verge 自定义规则配置文档

看连接记录:先确定请求到底命中了什么

打开客户端的连接记录或 Connections 页面,找到刚刚复现的域名,重点记录四项:目标域名、命中规则、最终策略组或节点、错误类型。不要只看首页的“运行中”或“已连接”,这类状态不能单独证明某个请求已经成功。

  • 命中 DIRECT:请求被安排直连。如果该域名必须经代理访问,先检查是否有更宽泛的 GEOIP、GEOSITE 或 RULE-SET 提前匹配。
  • 命中 REJECT:请求被规则主动阻断。先临时禁用对应的广告、跟踪或自定义阻断规则,再重新发起一次新连接。
  • 命中错误策略组:检查策略组名称是否仍存在,规则里引用的名称是否与 proxy-groups 中的名称完全一致。
  • connection refused、timeout 或 dial error:规则可能已经匹配成功,但节点、端口、DNS、TUN 路由或本地网络仍可能有问题,不要继续盲目改规则。

如果需要查看本机日志,Clash Verge Rev 的项目说明列出了应用数据目录、logs 和 service-logs 目录;日志或配置可能包含域名、节点地址和订阅令牌,分享前应先删去敏感内容。Clash Verge Rev 本地数据与日志说明

规则顺序冲突:MATCH、GEOIP 和宽泛规则最容易挡住自定义规则

mihomo 的路由规则按从上到下匹配,顶部规则优先级更高;MATCH 会匹配所有没有被前面规则处理的请求,因此通常应放在最后。mihomo Route Rules 文档

常见顺序错误与修复方式
错误写法或现象为什么会冲突建议调整
自定义域名规则放在 MATCH 后MATCH 已经匹配全部请求,后面的规则不会再执行把自定义 DOMAIN、DOMAIN-SUFFIX 或 RULE-SET 移到 MATCH 前
GEOIP、GEOSITE 或大型 RULE-SET 放在具体域名前宽泛规则可能先把请求送到 DIRECT 或其他策略组具体域名规则放前面,宽泛分类规则放后面
同一域名同时出现在 DIRECT 和 REJECT 规则中最终结果取决于哪条规则更靠前,容易误以为规则随机保留一条明确规则,并在连接记录中复测
规则命中代理组,但代理组名称已改名规则引用与策略组配置不一致,可能导致配置加载失败或无法选择节点逐字核对规则末尾的策略名和 proxy-groups 的 name

可以先用一个最小化顺序做验证,确认具体规则确实能命中,再逐步加回其他规则:

  • DOMAIN-SUFFIX,example.com,PROXY
  • GEOSITE,cn,DIRECT
  • MATCH,PROXY

上面的 PROXY 只是示例策略组名称,必须替换为配置中真实存在的组名;不要直接照抄不存在的名称。

rule-providers 重复、为空或格式不兼容时怎么查

规则提供者不是规则本身,而是通过 RULE-SET 被主配置引用的外部或本地规则集合。mihomo 文档要求提供者名称不能重复,并区分 http、file、inline 类型,同时还要匹配 domain、ipcidr 或 classical 行为和对应格式。mihomo rule-providers 配置文档

  1. 打开规则提供者页面,确认更新状态不是失败、超时或文件为空。
  2. 核对 RULE-SET 使用的名称,例如 RULE-SET,work,PROXY 中的 work,必须与 rule-providers 下的名称一致。
  3. 检查提供者的 behavior 与文件内容:纯域名、IP 段和完整经典规则不能混用。
  4. 如果订阅更新后自定义规则消失,检查是否编辑了订阅覆写或前置规则,而不是直接修改每次更新都会被替换的原始内容。
  5. 保存后重新加载配置,再关闭旧连接并重新访问目标域名,避免把旧连接结果当作新规则结果。

假如只要禁用某个规则提供者,连接就恢复,说明问题集中在该规则集、其引用关系或更新内容;先保留备份,再逐个启用其他提供者。

策略组、配置语法和节点问题:不要全部归因于规则冲突

根据现象决定下一步
现象优先检查暂时不要做
全局模式可用,规则模式失败规则顺序、DIRECT、REJECT、RULE-SET 和策略组引用先不要重装客户端或修改 DNS
全局模式也超时节点状态、节点端口、网络、DNS 和系统时间不要继续堆叠更多规则
只有 TUN 模式失败TUN 路由、系统权限、DNS 劫持和其他 VPN 或安全软件不要把所有 TUN 错误当成规则冲突
配置加载失败或策略组消失YAML 缩进、组名引用、字段拼写和客户端内核兼容性不要直接覆盖原配置

恢复时采用低风险顺序:先导出或复制当前配置;再关闭 TUN、其他代理工具和浏览器代理扩展;切换全局模式测试;禁用最近新增的自定义规则或规则提供者;重新加载配置;最后每次只恢复一组规则。这样能保留一个可回滚版本。

如果错误日志明确指向 YAML 解析、策略组不存在或字段不兼容,先修复配置语法;如果日志显示节点连接超时或拒绝,则应转向节点和网络排查。规则文档也说明,UDP 请求在节点不支持 UDP 时可能继续向下匹配,因此单个 UDP 应用失败不一定代表规则顺序冲突。mihomo 路由规则与 UDP 匹配说明

最后核对:用一份清单确认修复结果

  • 已备份原配置,且没有把订阅令牌、密码或完整节点信息发到公开页面。
  • 已关闭 TUN、其他 VPN、代理扩展或加速器做单变量测试。
  • 已分别测试规则、全局和直连模式。
  • 已在连接记录中确认目标域名、命中规则、策略组、节点和错误类型。
  • 具体域名规则位于宽泛规则和 MATCH 前方。
  • DIRECT、REJECT、RULE-SET 与代理组名称符合预期。
  • rule-providers 的名称、类型、行为、格式和更新状态正常。
  • 修改后已重新加载配置,并用新连接复测,而不是只刷新旧页面。

如果完成这些检查后,规则模式和全局模式仍然都失败,下一步应转向 DNS、监听端口、节点连通性、系统代理或 TUN 路由,而不是继续增加规则。

截至 2026 年 10 月 26 日,本文依据已检索到的客户端项目文档和 mihomo 配置文档整理;字段和菜单可能随客户端或内核版本变化,涉及具体版本时应以对应项目文档为准。

常见问题

Clash 显示已连接,但网站打不开,一定是规则冲突吗?

不一定。先切换全局模式和直连模式做对照,再查看连接记录。如果全局模式可用而规则模式失败,才优先检查规则顺序、DIRECT、REJECT、RULE-SET 和策略组;如果全局模式也超时,应检查节点、DNS、监听端口或本地网络。

Clash 规则应该放在 MATCH 前面吗?

应该。路由规则按从上到下匹配,MATCH 会匹配所有未被前面规则处理的请求,因此具体域名规则、需要优先处理的 RULE-SET 通常应放在 MATCH 前。

为什么我写了 DOMAIN 规则,却还是命中 DIRECT?

常见原因是更早的 GEOIP、GEOSITE、RULE-SET 或其他宽泛规则先匹配,也可能是自定义规则没有加载到当前配置。请在连接记录确认实际命中项,再把具体域名规则放到相关宽泛规则之前并重新加载。

规则命中 REJECT 后,怎么确认是不是它导致无法连接?

在连接记录中确认目标域名和命中规则,然后临时禁用对应的 REJECT 规则或规则提供者,重新建立连接测试。若恢复,保留备份后缩小阻断范围,不要直接删除全部规则。

改完规则后仍然打不开,需要清理 DNS 或 Fake-IP 吗?

不应一开始就清理。先确认新连接已命中预期规则,并测试全局模式;如果规则命中正确但仍出现解析、超时或 TUN 相关错误,再单独排查 DNS、Fake-IP、系统代理和 TUN 路由。

相关阅读

参考资料

  1. mihomo 路由规则文档
  2. mihomo rule-providers 配置文档
  3. Clash Verge 自定义规则配置文档
  4. Clash Verge Rev 本地数据与日志说明