FnCloud蜂鸟加速返回首页

Clash 配置规则不生效?从规则顺序到代理组的完整排查教程

更新于 2026-10-23 · lulian.buzz

简答:Clash 配置规则要同时连接代理组、规则集和 rules:先确认名称完全一致,再按“具体规则在前、MATCH 兜底在后”排列,最后检查客户端内核、DNS 和 TUN 是否支持当前字段。

定义:Clash 配置规则是根据域名、IP、进程或网络类型匹配请求,再把请求交给 DIRECT、代理节点或代理组处理的一组 YAML 路由条件。

先看这张表:Clash 规则为什么不生效

本站是第三方使用指南站,与 Clash、mihomo 及相关开发者无隶属关系。下面的字段和匹配逻辑以已查阅的 mihomo 配置文档为参考;不同客户端可能使用不同内核,字段支持和界面入口应以客户端实际提示为准。

现象优先检查正常判定
配置无法启动YAML 缩进、冒号、列表短横线、字段拼写客户端能加载配置,日志没有 YAML 解析错误
规则命中但没有流量rules 里的策略名称是否存在于 proxy-groups策略名称与代理组 name 逐字一致
所有请求都走同一路径规则顺序和末尾 MATCH具体 DOMAIN 或 RULE-SET 出现在 MATCH 前
规则集加载失败url、path、behavior、format 和网络访问规则集状态显示已下载或已加载,文件格式与 behavior 对应
域名分流异常DNS enhanced-mode、fake-ip-filter、nameserver-policy连接详情中的域名、解析结果和命中规则符合预期

官方文档说明,路由规则按从上到下的顺序匹配,顶部规则优先级更高;mihomo 路由规则文档还列出了 DOMAIN、IP-CIDR、RULE-SET 和 MATCH 等规则类型。因此,最快的修复动作是:先把末尾的 MATCH 暂时保留为兜底,再把你要优先处理的域名规则放到它前面。

Clash 配置规则的整体结构:五部分如何连接

一个可维护的配置通常可以拆成五层:proxies 保存节点或出站代理;proxy-groups 把节点组织成可选择、可测速或可自动切换的策略组;rule-providers 声明远程或本地规则集;rules 决定请求如何匹配;dns 负责域名解析与分流配合。

规则本身不会自动产生节点。比如 rules 写成 DOMAIN-SUFFIX,example.com,Proxy,其中 Proxy 必须是已有节点名或代理组名,否则就会出现策略找不到、规则无法按预期执行等问题。代理组的 name、rules 最后一列和 rule-providers 被 RULE-SET 引用的名称,都建议复制粘贴,避免大小写、空格或标点不一致。

以下模板只使用占位符,适合先验证结构。把 替换为你的节点名、替换为可访问的规则文件地址 和域名改成实际内容后,再导入客户端:

proxies: - name: "节点A" type: "填写实际协议" server: "替换为节点服务器" port: 443 proxy-groups: - name: "Proxy" type: select proxies: - "节点A" - DIRECT rule-providers: my-domain: type: http url: "替换为可访问的规则文件地址" path: ./rules/my-domain.yaml interval: 86400 behavior: domain format: yaml rules: - DOMAIN-SUFFIX,example.com,Proxy - RULE-SET,my-domain,Proxy - GEOIP,CN,DIRECT - MATCH,Proxy

上例的关键关系是:my-domain 在 rule-providers 中声明,随后由 RULE-SET,my-domain,Proxy 调用;Proxy 又必须在 proxy-groups 中存在。官方文档将 rule-provider 的 type、url、path、interval、behavior 和 format 分开定义,详情可查看 mihomo Rule-Providers 配置文档。

Rule、Global、Direct 三种模式怎么选

模式作用适合场景注意事项
Rule按 rules 从上到下匹配,再交给对应策略需要国内直连、指定域名代理和规则集分流最依赖规则顺序、代理组名称和 DNS 配合
Global将请求统一交给当前选中的全局策略临时验证节点或判断问题是否来自规则不能体现每条分流规则的效果
Direct请求直接连接,不经过代理策略排查本地网络、局域网设备或直连可用性如果目标服务需要代理,直连失败并不等于规则错误

日常配置通常先使用 Rule 模式。排查时可以短暂切换 Global 或 Direct 做单变量对照:如果 Global 能访问而 Rule 不能,重点看规则顺序、策略名称和 DNS;如果 Direct 与 Global 都不能访问,优先检查节点、系统网络或目标服务本身。

Rule 模式下,具体规则应放在通用规则之前。例如 DOMAIN,api.example.com,Proxy 应放在 DOMAIN-SUFFIX,example.com,DIRECT 前面,否则前面的后缀规则可能先匹配。MATCH,Proxy 匹配所有未被前面规则处理的请求,因此应放在 rules 末尾。

常用规则类型与可直接改写的案例

  • DOMAIN:匹配完整域名,例如 DOMAIN,api.example.com,Proxy,适合只指定一个域名。
  • DOMAIN-SUFFIX:匹配域名后缀,例如 DOMAIN-SUFFIX,example.com,Proxy,适合一个主域名及其子域名。
  • DOMAIN-KEYWORD:匹配域名中包含的关键词,例如 DOMAIN-KEYWORD,video,Proxy,范围较宽,容易误匹配,建议谨慎使用。
  • DOMAIN-REGEX:使用正则表达式匹配域名,例如 DOMAIN-REGEX,^img[0-9]+\.example\.com$,Proxy,适合明确知道正则边界的用户。
  • IP-CIDR:匹配 IPv4 网段,例如 IP-CIDR,192.168.1.0/24,DIRECT,no-resolve;no-resolve 可避免为目标 IP 规则额外触发域名解析。
  • GEOIP:按 IP 地理库代码匹配,例如 GEOIP,CN,DIRECT。它依赖 IP 数据库,不能替代所有域名规则。
  • RULE-SET:调用 rule-providers 中已经声明的规则集,例如 RULE-SET,my-domain,Proxy。
  • MATCH:匹配所有剩余请求,通常作为最后一条兜底规则。

mihomo 的官方路由规则页面同时列出了 DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、DOMAIN-REGEX、IP-CIDR、GEOIP、RULE-SET 和 MATCH 等类型,具体参数和可用规则应以路由规则参考为准。

常见需求写法

  • 国内直连、其他请求交给代理:GEOIP,CN,DIRECT 后接 MATCH,Proxy。这只是基础示例,实际效果还会受 DNS 和 IP 数据库影响。
  • 指定域名固定走某策略:DOMAIN-SUFFIX,example.com,Work,并确保 proxy-groups 中确实存在名为 Work 的策略组。
  • 局域网直连:IP-CIDR,192.168.0.0/16,DIRECT,no-resolve,再按实际网段补充其他私有地址。
  • 广告域名拒绝:RULE-SET,ad-domain,REJECT,前提是规则集的 behavior、format 和内容类型互相匹配,且当前内核支持该策略。
  • 流媒体单独分流:先在 rule-providers 声明对应域名或经典规则集,再用 RULE-SET,media,Media 调用,避免把大量域名直接堆在主配置中。

rule-providers:YAML、text 和 MRS 怎么区别

rule-providers 用来集中管理规则文件,常见 type 包括 http、file 和 inline。远程规则通常需要 url,本地规则使用 file 和 path,inline 则直接在 payload 中写规则。官方文档还要求根据文件内容选择 behavior:domain 用于域名集合,ipcidr 用于 IP 网段,classical 用于包含多种传统规则类型的集合。

format适用内容注意事项
yaml结构化 YAML 规则便于阅读和编辑,但大型规则集可能更占资源
text按行保存的文本规则必须与实际规则内容和 behavior 对应
mrs预编译规则集官方文档注明其 behavior 目前支持 domain 和 ipcidr,不应直接套用于 classical

规则集下载失败时按以下顺序检查:第一,直接在浏览器或命令行打开 url,确认地址可访问;第二,确认 path 所在目录允许客户端写入;第三,确认 behavior 与规则文件内容一致;第四,确认 format 与文件实际格式一致;第五,查看客户端日志是否出现证书、超时、重定向或解析错误。不要为了“能加载”随意把 behavior 改成 classical,因为格式不匹配可能导致规则内容被忽略。

DNS、Fake-IP、嗅探与分流异常的排查

DNS 不只是“把域名变成 IP”。在启用 Fake-IP、域名嗅探或 TUN 时,解析方式会影响客户端能否看到原始域名,进而影响 DOMAIN、RULE-SET 和 IP-CIDR 规则的命中。mihomo 文档列出了 enhanced-mode、fake-ip-filter、nameserver-policy、proxy-server-nameserver 和 respect-rules 等 DNS 字段,具体行为可查看 mihomo DNS 配置文档。

  1. 先关闭复杂的自定义 DNS 选项,保留客户端能正常启动的基础配置,确认普通域名可以解析。
  2. 在连接详情或日志中查看请求显示的是域名还是 Fake-IP;如果 DOMAIN 规则完全不命中,检查是否由 TUN、嗅探或 DNS 模式改变了可见信息。
  3. 如果只有某些局域网域名打不开,检查 fake-ip-filter 是否包含局域网后缀,并确认局域网请求是否应使用 DIRECT。
  4. 如果规则依赖 nameserver-policy 或 respect-rules,逐项启用并测试,不要同时修改 DNS、rules 和代理组,否则无法判断是哪一项造成变化。

判定标准不是“看到了一个 DNS 地址”,而是同一个域名在连接详情中的解析、命中规则和最终策略能够互相对应。若客户端没有提供连接详情,只能通过日志和单域名测试做有限判断,不能把一次访问结果当作完整分流结论。

不同 Clash 客户端与内核的兼容边界

“Clash 配置规则”并不等于所有客户端都支持同一套字段。传统 Clash、Clash Meta、mihomo 以及基于它们封装的 Windows、macOS、Android、iOS 客户端,可能在规则类型、规则集格式、TUN、Fake-IP、Network Extension、控制器和界面入口上存在差异。本文模板以 mihomo 语法为主,未核实每个客户端对全部字段的兼容性。

实际导入前建议先确认三件事:一是客户端显示的内核名称;二是配置校验是否报告未知字段;三是当前平台是否允许 TUN 或 VPN 权限。配置文件能导入,不代表所有规则已经生效;尤其是 rule-providers、MRS、TUN 和 DNS 相关字段,应以当前客户端的内核文档和日志为准。

如果你使用的是基于 mihomo 的图形客户端,可先用最小配置验证:只保留一个节点、一个 select 代理组、一条 DOMAIN 规则和一条 MATCH 规则。确认这套结构能启动并命中后,再逐步加入远程规则集、DNS、Fake-IP 和 TUN。这样比一次导入数百条规则更容易定位兼容问题。

规则不生效的完整排查顺序

  1. 备份原配置。复制一份配置文件,后续只修改副本,避免把可用订阅配置改坏。
  2. 先验证 YAML。检查缩进是否使用空格,列表项是否以短横线开头,带特殊字符的策略组名称是否使用引号。配置无法启动时,先不要排查网络。
  3. 核对名称。逐字检查 rules 最后一列、proxy-groups 的 name、rule-providers 的键名以及 RULE-SET 引用名。名称不一致时,规则可能无法交给预期策略。
  4. 缩小规则集。暂时移除远程 rule-providers,只保留一条 DOMAIN 和一条 MATCH。如果最小配置能命中,问题大概率在规则集地址、格式或内容。
  5. 验证顺序。把测试域名写成最具体的 DOMAIN 规则并放在前面,再放 DOMAIN-SUFFIX、GEOIP 和 MATCH。查看连接详情中的实际命中规则。
  6. 做模式对照。用 Direct、Global、Rule 分别测试同一个域名。Direct 失败说明可能是本地网络或目标服务问题;Global 成功而 Rule 失败,优先检查规则链;Rule 与 Global 都失败,再检查节点和 DNS。
  7. 最后检查 TUN 和 DNS。如果浏览器能走代理而其他应用不行,检查 TUN 权限、系统代理状态、DNS 模式和应用是否绕过代理。不要在没有日志或连接详情的情况下直接判断为节点问题。

完成每一步后只修改一个变量,并记录“测试域名、当前模式、命中规则、策略名称、是否成功”。这比连续更换节点、DNS 和规则集更容易得到可复现结论。

安全提醒:订阅地址、远程规则和管理端口

订阅地址和远程规则地址可能包含访问凭据,不要直接发布到公开仓库、截图或聊天群。rule-providers 会定期拉取远程内容,使用前应确认来源可信,并在客户端日志中检查实际下载地址。

如果配置了 allow-lan、external-controller 或类似管理入口,应确认监听地址、访问范围和 secret 设置。mihomo 入站文档特别提醒,监听 0.0.0.0 代表绑定所有网络接口;只有在明确了解防火墙和访问控制的情况下才应使用。详情可查看 mihomo 入站配置文档。

常见问题

Clash 配置规则必须放在配置文件最后吗?

不是。rules 通常位于配置文件的规则区域,关键是规则按从上到下匹配。具体规则应放在通用规则前,MATCH 通常放在最后作为兜底。

为什么写了 DOMAIN 规则,却还是走了其他策略?

先检查域名是否与实际请求完全一致,再检查这条 DOMAIN 是否被前面的规则抢先匹配,最后确认 rules 中填写的策略名称是否与 proxy-groups 的 name 完全一致。

RULE-SET 和 rule-providers 是什么关系?

rule-providers 负责声明规则集的来源、保存路径、更新间隔和格式;RULE-SET 负责在 rules 中调用这个规则集。两者的键名必须一致,例如声明 my-domain 后使用 RULE-SET,my-domain,Proxy。

rule-providers 中的 behavior 和 format 可以随便改吗?

不建议。behavior 应与规则内容对应,domain 用于域名集合,ipcidr 用于 IP 网段,classical 用于多种传统规则;format 也应与实际文件格式一致。MRS 不能直接按 classical 使用,具体以 mihomo 文档为准。

Clash 的 Rule、Global、Direct 模式有什么区别?

Rule 按规则匹配并交给策略,Global 统一使用当前全局策略,Direct 直接连接。排查时可用 Global 和 Direct 做对照,日常需要分流时通常使用 Rule。

规则配置能在所有 Clash 客户端中通用吗?

不能保证。不同客户端可能使用不同内核,对 TUN、DNS、Fake-IP、MRS、规则类型和管理字段的支持不同。导入前应确认内核名称,并查看配置校验和运行日志。

规则不生效时应该先换节点吗?

不建议先换节点。应先用最小配置检查 YAML、策略组名称、规则顺序和规则集加载状态,再用 Direct、Global、Rule 做对照;只有确认规则链正常后,才适合继续判断节点或网络问题。

相关阅读

参考资料

  1. mihomo Route Rules:路由规则、匹配顺序与规则类型
  2. mihomo Rule-Providers:规则集来源、格式与更新字段
  3. mihomo proxy-groups configuration:代理组字段与策略引用
  4. mihomo DNS configuration:解析模式、Fake-IP 与规则配合
  5. mihomo inbound configuration:代理端口、TUN 与监听地址
  6. mihomo Configuration:配置文件模块总览