Clash 规则不生效怎么办?按三步定位分流问题

更新于 2026-10-27 · proxytips.cc

简答:Clash 规则不生效,先确认当前为 Rule 模式且请求进入客户端,再查看命中的规则、策略组和连接日志,最后排查规则顺序、规则集、DNS、TUN 与旧连接缓存。

定义:Clash 规则不生效,指请求没有按配置文件中的域名、IP、进程或规则集条件匹配到预期策略,常见表现是误走 DIRECT、代理或 MATCH。

先看这张表:Clash 规则不生效通常卡在哪一步

本文为节点与客户端教程站整理的通用排查方法,规则字段以 Mihomo 与 Clash Verge Rev 公开文档为准;不同客户端的菜单名称可能不同,但判断思路基本一致。

Clash 规则不生效的三步定位表
检查层级你要观察什么典型现象下一步
请求入口连接列表、系统代理、TUN 或应用代理访问网页后没有任何连接记录确认客户端运行、配置已启用,并检查系统代理或 TUN 是否接管流量
规则匹配实际命中规则名称和规则类型命中 DIRECT、MATCH 或与预期不同的规则检查规则从上到下的顺序、规则类型和目标域名
策略执行策略组、节点、连接日志规则命中代理,但出现 timeout 或 connection refused确认策略组存在、节点可用,再区分节点故障与 DNS 问题
规则集与 DNSrule-provider 更新状态、解析结果、Fake-IP修改规则后仍使用旧结果,或域名被解析成异常地址更新规则集、重载配置、清空连接并复测

规则匹配通常是自上而下进行,命中第一条符合条件的规则后停止。Clash Verge Rev 的公开文档也将 DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、IP-CIDR 等规则分别用于不同匹配对象。查看 Clash Verge Rev 规则说明

第一步:确认当前模式和请求入口正确

  1. 确认配置文件已经启用。如果客户端中存在多个配置,先确认正在运行的配置就是你刚修改的那一份。订阅更新后,本地手动修改可能被覆盖,因此需要确认编辑的是当前生效文件。
  2. 确认模式是 Rule。Global 会让请求统一交给代理策略,Direct 会让请求直接连接目标地址;这两种模式下,单条分流规则可能不会按你预期体现。先切换到 Rule,再进行测试。
  3. 确认请求进入 Clash。打开连接、日志或请求记录页面,访问一个固定测试域名。若完全没有新连接,优先检查系统代理、浏览器独立代理、应用内代理和 TUN,而不是先改规则。
  4. 清理旧连接。修改规则后关闭浏览器目标页面,清空连接记录,重新打开新标签页测试。已有 TCP、QUIC 或 HTTP/2 连接可能继续沿用旧路径,导致你误以为新规则没有生效。

在 Windows 和 macOS 上,系统代理只影响遵循系统代理设置的应用;部分浏览器、终端、虚拟机和应用可能使用自己的代理设置。Android 应用是否被接管,还取决于 VPN/TUN 权限及应用绕过设置。Mihomo 文档说明,TUN 用于捕获系统流量,并可配合自动路由和 DNS 劫持;但 TUN 的权限、路由和防火墙条件需要单独满足。查看 Mihomo TUN 配置说明

按客户端寻找入口

第二步:从命中规则判断是顺序错,还是规则类型不匹配

规则不生效最常见的误区,是只看自己添加的那一行,却没有看它前面是否已经存在更宽泛的规则。规则按顺序匹配,越宽泛的规则越应该谨慎放置。

常用规则类型与适用条件
规则类型匹配对象示例常见误区
DOMAIN完整域名DOMAIN,example.com,Proxy不能直接覆盖所有子域名
DOMAIN-SUFFIX域名后缀及其子域名DOMAIN-SUFFIX,example.com,Proxy把完整域名误写成后缀,或后缀写得过短
DOMAIN-KEYWORD域名中包含关键词DOMAIN-KEYWORD,example,Proxy匹配范围过宽,可能影响无关域名
IP-CIDR目标 IPv4 地址段IP-CIDR,192.168.0.0/16,DIRECT,no-resolve目标请求只有域名时,不能简单假设已经匹配到 IP 规则
PROCESS-NAME应用进程名PROCESS-NAME,app.exe,Proxy不同系统的进程名、权限和 TUN 支持可能不同
MATCH前面所有规则都未命中的请求MATCH,Proxy放在前面会吞掉后续规则,通常应作为兜底

可以先用一个最小规则验证链路,不要一开始同时修改几十条规则。下面的示例只用于说明格式,策略组名称必须替换成当前配置中真实存在的名称:

rules:
  - DOMAIN,example.com,Proxy
  - DOMAIN-SUFFIX,example.org,DIRECT
  - MATCH,Proxy

如果你的客户端使用的是代理组名称,例如“自动选择”或“节点选择”,规则最后一列必须与配置中的策略组完全一致。名称拼写、大小写、空格或订阅更新后的改名,都可能让规则无法按预期执行。

建议按以下顺序检查:

  1. 把测试域名规则临时放到相关宽泛规则之前。
  2. 确认没有更早的 DOMAIN-KEYWORD、GEOSITE、RULE-SET 或 MATCH 已经命中。
  3. 确认目标请求到底是域名请求、IP 请求还是应用进程请求。
  4. 确认规则指向的策略组存在,并且组内已经选择了节点或有效的 DIRECT。
  5. 保存配置后重新载入内核,清空连接,再访问同一个测试域名。

第三步:检查 rule-provider 是否更新、为空或被订阅覆盖

如果规则写在 rule-providers 或远程规则集中,规则文件本身可能没有成功下载、格式不匹配或仍在使用缓存。Mihomo 官方文档显示,规则提供者通常需要配置类型、路径、URL、更新间隔和行为类型;其中 behavior 需要与规则内容的格式相匹配。查看 Mihomo rule-provider 文档

排查时依次看以下项目:

如果规则集更新失败,先暂时用一个本地最小规则验证。若本地规则可以命中,而远程规则集不能命中,问题集中在规则提供者的下载、格式或缓存;若本地规则也不能命中,则回到第一步检查请求是否进入客户端。

DNS、Fake-IP、IPv6 和 no-resolve 怎么影响规则判断

DNS 问题不一定会让域名规则失效,但可能让你看到的地址、连接目标和实际命中结果与预期不同。Mihomo DNS 文档列出了 fake-ip、redir-host 相关配置、Fake-IP 过滤、nameserver-policy、IPv6 以及 no-resolve 等选项。查看 Mihomo DNS 配置文档

DNS 相关现象与处理方法
现象可能原因检查方法建议
域名规则能命中,但打开网页失败命中后的节点、DNS 或 TLS 连接失败查看连接日志中的 timeout、connection refused 或 DNS 错误先换同策略组中的其他节点,再单独检查 DNS
IP 规则没有命中请求没有触发解析,或规则使用了不适合的匹配类型比较域名规则命中情况与目标 IP确认是否需要 no-resolve,不要把域名规则和 IP 规则混为一谈
Fake-IP 地址与真实地址不同启用了 Fake-IP 模式查看 DNS 返回地址和连接详情对局域网、内网域名及不兼容应用使用合适的 Fake-IP 过滤
IPv6 请求绕过预期规则系统、TUN 或内核启用了 IPv6,而规则只覆盖 IPv4分别测试 A 和 AAAA 解析,查看连接地址族明确是否需要 IPv6;不要只根据 IPv4 结果下结论
只有某个应用不走规则应用使用独立代理、QUIC 或未被 TUN 接管查看该应用是否出现在连接列表检查应用代理设置、TUN 权限和 UDP/QUIC 行为

不要为了验证规则而一次性修改多个 DNS 参数。更稳妥的顺序是:先确认请求进入客户端,再记录当前 DNS 模式和解析地址,最后只改一个参数并复测。修改后需要重新载入配置,并关闭已有连接。

按日志结果处理:DIRECT、MATCH、REJECT 和超时分别怎么办

Clash 连接日志速查
日志或命中结果说明处理动作
没有连接记录请求没有进入当前 Clash 内核检查 Rule 模式、系统代理、浏览器代理、TUN 和应用绕过设置
命中 DIRECT规则明确要求直连,或前面的规则已经抢先命中检查命中规则名称和顺序,不要只看最终策略
命中 MATCH前面的规则都没有匹配检查域名是否写错、规则类型是否适用,并将测试规则放到 MATCH 前
命中 REJECT规则要求阻断请求检查广告、隐私或自定义拦截规则是否误匹配
命中代理但 timeout规则可能已经生效,失败发生在节点、路由、DNS 或目标连接阶段换节点、查看 DNS 错误,并对比直连和代理结果
connection refused目标端口或中间服务主动拒绝连接确认目标地址、端口和节点状态,不要直接修改规则顺序

每次只做一项修改,并记录“原规则—命中结果—修改内容—复测结果”。这样可以避免把规则问题、节点问题和系统代理问题混在一起。

完整排查流程:编辑、保存、校验、重载、看日志、验证业务

完整排查流程:编辑、保存、校验、重载、看日志、验证业务
  1. 编辑配置:先备份当前配置,再只增加一条测试规则。示例中的域名和策略组必须替换为你实际使用的内容。
  2. 保存:确认 YAML 缩进、逗号和字段层级正确,规则通常位于 rules: 下。
  3. 校验:确认策略组名称真实存在,规则类型与目标请求匹配,远程规则集状态正常。
  4. 重新载入:使用客户端的“重新载入配置”“重启内核”或同义入口;仅保存文件不一定会让运行中的内核读取新内容。
  5. 查看日志:清空旧连接,访问固定测试域名,记录是否进入客户端、命中哪条规则、使用哪个策略组及最终错误。
  6. 验证业务:分别验证网页、终端或目标应用,不要只依据一个浏览器页面判断所有应用都已生效。

回滚方法也要保留:如果修改后问题扩大,恢复备份配置,重新载入内核,再确认系统代理和 TUN 状态恢复正常。不要删除原配置后直接重装客户端,因为这样可能丢失当前规则、节点和日志线索。

常见问题

Clash 规则不生效,第一步应该看哪里?

先看连接列表或日志中有没有请求记录。没有记录说明流量尚未进入当前 Clash 内核,应先检查 Rule 模式、系统代理、浏览器独立代理、TUN 和应用绕过设置;有记录后再看命中规则。

为什么我添加了规则,最后还是命中 MATCH?

MATCH 通常表示前面的规则都没有匹配。检查域名拼写、规则类型和缩进,并确认测试规则位于 MATCH 之前。若请求实际使用 IP、IPv6 或应用进程,单纯添加域名规则可能无法覆盖。

DOMAIN 和 DOMAIN-SUFFIX 有什么区别?

DOMAIN 用于匹配完整域名,DOMAIN-SUFFIX 用于匹配域名后缀及其子域名。若希望覆盖某个主域名下的多个子域名,通常需要评估 DOMAIN-SUFFIX;范围越宽,越要注意误匹配。

规则命中了代理,但网页还是打不开,算规则失效吗?

不一定。命中代理说明分流规则可能已经生效,网页打不开还可能来自节点超时、DNS、TLS、IPv6、QUIC 或目标服务连接失败。应查看连接日志,再分别测试其他节点和 DNS。

改完规则后为什么必须清空连接或重启内核?

已有连接可能继续使用旧的路由、DNS 或策略结果;配置文件保存也不代表运行中的内核已经重新读取。保存后应重载配置、清空连接,再用同一个测试域名重新验证。

rule-provider 更新失败会导致规则完全不生效吗?

可能导致依赖该规则集的请求无法按预期匹配,但不一定影响所有本地规则。检查更新状态、文件内容、behavior 类型、路径和缓存;可以先用一条本地规则判断核心是否正常。

相关阅读

参考资料

  1. Clash Verge Rev 官方项目文档:自定义规则配置
  2. Mihomo 官方文档:rule-provider 配置
  3. Mihomo 官方文档:DNS 配置
  4. Mihomo 官方文档:TUN 与流量接管