FlClash 分流规则怎么设置?从规则模式到不生效排查
简答:FlClash 分流规则的核心是:先确认当前配置已启用,再切换到规则模式,让进入 mihomo 内核的请求按 rules 从上到下匹配。最快的排查顺序是检查模式、策略组名称、规则顺序和连接记录;命中规则不代表节点一定可用,还要单独确认最终策略能否连接。
定义:FlClash 分流规则是由其使用的 ClashMeta/mihomo 内核,根据域名、IP、规则集合等条件,把连接交给代理、直连或其他策略组的路由规则。
先试这一步:FlClash 分流规则一分钟速查
本文是第三方使用指南,不代表 FlClash 项目官方。FlClash 项目仓库将其描述为基于 ClashMeta 的多平台客户端,仓库代码中也能看到 mihomo 相关组件;但不同版本的界面入口可能变化,下面把客户端操作与内核配置分开说明。FlClash 项目仓库
| 检查项 | 应看到的结果 | 不符合时先做什么 |
|---|---|---|
| 当前配置 | 正在运行的是你准备修改的订阅或本地配置 | 先确认配置名称和启用状态,不要只编辑未运行的文件 |
| 运行模式 | 使用规则模式,而不是全局或直连模式 | 在当前版本界面中重新查找模式切换并核对状态 |
| 策略组名称 | 规则最后的目标名称与策略组或出站名称完全一致 | 逐字检查大小写、空格、标点和中文字符 |
| 规则顺序 | 精确域名例外位于通用集合和 MATCH 之前 | 把需要优先处理的 DOMAIN 规则移到前面 |
| 兜底规则 | 最后有 MATCH 规则处理剩余请求 | 补充明确的兜底策略,但先确认目标名称真实存在 |
| 连接记录 | 能看到请求、命中规则和最终策略 | 先判断流量是否进入 FlClash,再修改 YAML |
mihomo 文档将运行模式分为 rule、global 和 direct:规则模式按规则匹配,全局模式使用全局代理策略,直连模式则全局直连。mihomo 全局配置文档
FlClash 分流规则的最短操作路径
- 备份当前配置。如果配置来自订阅,先复制本地文件或使用客户端提供的备份、导出功能;不要直接覆盖唯一配置。
- 确认正在运行的配置。在 FlClash 当前版本的配置列表或配置详情中,核对正在使用的配置名称。菜单名称可能变化,找不到编辑入口时,不要把其他文件误当成当前配置。
- 确认策略组和节点可用。在代理或策略组页面确认至少有一个可选择的节点。规则只负责匹配和指定目标,节点或策略组不可用时,规则命中后仍可能连接失败。
- 切换到规则模式。确认当前不是全局模式或直连模式。mihomo 文档明确说明,
rule是规则匹配模式,global是全局代理,direct是全局直连。mihomo 运行模式说明 - 只测试一个明确域名。记录测试时间、目标域名、连接是否成功、连接记录中的命中规则和最终策略。不要一开始同时修改规则、DNS、TUN 和节点。
- 重新加载后复测。修改配置或更新规则后,执行当前版本提供的重载、更新或重新启用操作。若界面没有显示配置已重新加载,不要假设新规则已经生效。
判断分流是否生效,至少要依次确认四件事:配置已启用、流量进入内核、规则被命中、命中的策略组或节点可以工作。
rules、proxy-groups、rule-providers 分别是什么
- rules:定义匹配条件和处理目标,例如某个完整域名交给某个策略组,某个 IP 段直连,最后用
MATCH处理没有提前命中的请求。 - proxy-groups:定义处理目标,例如手动选择组、自动测试组或直连组。规则末尾使用的名称必须能在当前配置中找到。
- rule-providers:把较大的域名或 IP 规则集合独立管理,再通过
RULE-SET引用。mihomo 文档列出了规则提供者的配置方式,具体行为类型要与实际文件内容对应。mihomo rule-providers 配置文档
可以把三者理解为:rules 负责判断,proxy-groups 负责选择,rule-providers 负责提供可复用的规则集合。只修改 rules 而没有对应策略组,或只添加 rule-provider 却没有在 rules 中引用,都可能导致配置看起来完整但实际没有按预期分流。
常见规则类型怎么选
| 规则类型 | 适合场景 | 核对重点 |
|---|---|---|
DOMAIN | 匹配一个完整域名 | 适合精确例外,范围较窄 |
DOMAIN-SUFFIX | 匹配域名及其子域名 | 确认后缀范围,避免误匹配 |
DOMAIN-KEYWORD | 域名中包含指定关键词 | 范围较宽,不能替代精确域名规则 |
GEOSITE | 按 geosite 数据库中的域名集合匹配 | 确认当前内核和地理数据文件可用 |
GEOIP | 按目标 IP 的地区数据匹配 | 域名解析、CDN 和数据库变化可能影响结果 |
RULE-SET | 调用 rule-provider 中的规则集合 | 提供者名称、规则格式和行为类型要对应 |
MATCH | 匹配剩余的所有请求 | 通常放在规则末尾 |
mihomo 规则按从上到下的顺序匹配,排在前面的规则优先级更高;MATCH 会匹配没有被前面条件处理的请求。mihomo 路由规则文档
基础 YAML 片段:指定域名、直连与兜底策略
下面只用于说明 proxy-groups 与 rules 的对应关系,不是可以直接覆盖所有订阅的完整配置。修改前先备份;其中的策略组名称、节点名称和域名都需要替换或核对,不能直接照抄到任意配置文件。
proxy-groups:
- name: Proxy
type: select
proxies:
- Auto
- DIRECT
- name: Auto
type: url-test
proxies:
- 节点A
- 节点B
url: https://www.gstatic.com/generate_204
interval: 300
rules:
- DOMAIN,example.com,Proxy
- DOMAIN-SUFFIX,example.org,DIRECT
- GEOSITE,cn,DIRECT
- GEOIP,CN,DIRECT
- MATCH,Proxy
这个片段表达的是:example.com 先交给 Proxy;example.org 及其子域名直连;符合指定 geosite 或 GEOIP 条件的连接直连;其他请求最后交给 Proxy。Proxy、Auto、节点A 和 节点B 必须替换为当前配置中真实存在的名称。mihomo 文档说明,策略组可以引用代理或其他策略组,因此名称对应关系是配置能否加载的重要条件。mihomo proxy-groups 配置文档
规则顺序要注意:如果通用的 GEOSITE、GEOIP 或 DOMAIN-SUFFIX 规则已经先匹配,后面的精确 DOMAIN 规则可能没有机会执行。需要例外处理的域名应放在更宽泛的规则之前。
分流规则不生效:按现象定位问题
| 现象 | 优先判断 | 处理方法 |
|---|---|---|
| 连接记录完全没有请求 | 流量可能没有进入 FlClash | 检查系统代理、TUN 或应用自身代理设置,再用同一个请求复测 |
| 有请求但总是命中 MATCH | 前面的规则没有匹配 | 检查实际访问的域名、规则类型和规则顺序 |
| 命中规则但连接失败 | 目标策略组或节点不可用 | 单独测试策略组中的节点,并核对规则目标名称 |
| 配置无法加载 | YAML 缩进、字段或名称有误 | 撤回最近一次修改,只恢复一个改动 |
| 本应直连的请求仍走代理 | 模式、规则顺序或规则集合异常 | 确认是规则模式,检查更早的通用规则是否已经截获请求 |
| 只有部分应用不按规则 | 应用可能没有使用系统代理,或未被 TUN 接管 | 分别检查应用代理、系统代理和 TUN 状态,不要只用浏览器结果推断所有应用 |
- 记录失败请求的目标域名、时间和使用的应用。
- 在 FlClash 的连接、请求或日志页面查找对应记录。
- 记录命中的规则类型、规则内容和最终策略。
- 只修改一个变量,例如只调整规则顺序或只改策略组名称。
- 重新加载配置,用相同域名和相同应用复测。
- 仍然失败时恢复备份,避免在原因未明时继续叠加修改。
mihomo API 的规则信息可以包含规则索引、类型、匹配内容、目标策略以及命中次数等字段;如果当前版本的 FlClash 提供连接或规则详情,可优先使用这些信息验证实际命中结果。mihomo API 文档
仅凭出口 IP、一次网页打开或单个应用成功,不能证明所有流量都按预期分流。DNS 请求、IPv6 连接、应用自己的网络栈和未进入客户端的流量,可能得到不同结果。
规则集更新与回滚怎么做
如果配置使用 rule-providers,先核对提供者名称、下载方式、文件格式和行为类型。mihomo 文档说明,规则提供者需要根据实际内容选择对应类型;字段不能仅凭其他客户端的示例互换。mihomo rule-providers 文档
- 规则已经能正确命中,只是某个域名需要例外时,优先增加一条精确规则,不要马上更换整套规则。
- 规则集更新失败时,先查看下载错误、文件格式和本地资源状态,再决定是否调整配置。
- 远程规则集更新后,要重新查看同一个请求的命中结果,因为规则集合内容变化可能改变匹配目标。
- 无法确认当前 FlClash 版本是否支持某个字段时,先以当前配置生成结果和 mihomo 文档核对,未知字段不要直接粘贴。
- 配置加载失败时,恢复备份,再逐项重新加入修改;不要同时替换节点、DNS、TUN 和规则集。
结论:先确认流量进入,再调整规则
FlClash 分流规则最稳妥的配置顺序是:备份配置,确认当前配置和节点,切到规则模式,核对策略组名称,再按“精确规则→范围规则→MATCH 兜底”的顺序调整。出现问题时,不要先反复换节点或重写整份 YAML,而要通过连接记录判断是流量未进入、规则未命中、策略组不可用,还是 DNS、IPv6、TUN 等其他环节造成的。
如果当前版本的菜单与本文不同,请以界面实际显示为准;本文可直接复用的是排查顺序和核验方法,不是固定菜单路径。
常见问题
FlClash 的规则、全局、直连模式有什么区别?
规则模式会按 rules 从上到下匹配,并把连接交给对应策略;全局模式使用全局代理策略;直连模式则全局直连。排查分流时,第一步应确认当前确实处于规则模式。
为什么 FlClash 规则命中了,但连接还是失败?
命中规则只说明匹配条件成立,不代表目标节点或策略组可用。请单独测试命中的策略组或节点,再检查规则目标名称是否与当前配置完全一致。
规则中的策略组名称必须完全一致吗?
需要完全对应。规则最后的目标名称必须能在当前配置中找到,大小写、空格、标点和中文字符都应逐字核对。
DOMAIN 和 DOMAIN-SUFFIX 应该怎么选?
DOMAIN 适合只匹配一个完整域名;DOMAIN-SUFFIX 适合匹配某个域名及其子域名。需要精确例外时优先使用 DOMAIN,避免用范围过大的后缀规则误匹配。
为什么加了规则却看不到命中记录?
可能是当前配置没有重新加载,也可能是请求没有进入 FlClash,例如系统代理、TUN 或应用自身网络设置未生效。先确认正在运行的配置,再查看连接记录和日志。
可以直接把网上的完整 YAML 覆盖到 FlClash 吗?
不建议。不同订阅的节点名、策略组名、规则集地址和内核字段可能不同。应先备份当前配置,只复制经过核对的规则片段,并逐项替换真实名称后复测。
为什么只改了规则,某些应用仍然没有按预期分流?
规则只对进入 mihomo 内核的流量生效。应用可能没有使用系统代理,也可能没有被 TUN 接管;应分别检查应用代理设置、系统代理状态、TUN 状态和连接记录。