跳到主要内容

分流规则不生效怎么办:流量走错方向的排查方法

明明写了规则,国内网站却走了代理、AI 域名却被直连,这类问题九成出在规则顺序、模式选择、fake-ip 与 IP 规则的配合以及程序根本没经过客户端四处。本文教你用连接面板与日志看清每条流量命中的规则,并给出 Clash Meta / Mihomo 的规则写法示例。

发布于 约 4 分钟 · 1646 字进阶
分流规则不生效的排查方法

直接答案

规则不生效先看客户端的「连接」面板:每条连接都标注了命中的规则与出口,看一眼就知道流量为什么走错。常见原因按频率排序是:规则顺序靠后被前面的规则抢先匹配、客户端处于全局或直连模式而非规则模式、fake-ip 下 IP 类规则与域名类规则冲突、程序没有经过客户端(没走系统代理也没开 TUN)、订阅更新把自定义规则覆盖掉了。按这个顺序排查,不需要重写整份配置。

分流规则「不生效」的说法其实很少准确,更多时候规则生效了,只是生效的不是你以为的那条。Clash Meta / Mihomo 的匹配逻辑非常简单:从上往下逐条比对,第一条命中的规则决定出口,后面的规则不再看。理解了这一点,九成的问题都能在「连接」面板里直接找到答案。本文先教你看面板和日志,再按原因分类给出处理方法。如果你还不清楚规则、全局、直连三种模式的区别,先读代理模式:规则、全局与直连。

先看连接面板:流量到底命中了哪条规则

Clash Verge Rev 与 Mihomo Party 都有「连接」页面,每一行是一条活动连接,关键列有三个:目标域名或 IP、命中的规则、最终出口节点。打开出问题的网站,在面板里找到它的连接,三种情况对应三种方向:

面板显示含义下一步
命中了订阅自带的某条规则,出口不对你的规则排在它后面把自定义规则前置
命中 MATCH 兜底规则没有任何规则匹配到该域名补规则或检查规则写法
命中的是 IP 类规则而非域名规则域名信息丢失,多见于 DNS 配置检查 fake-ip 与 DNS 设置
面板里根本没有这条连接程序没有经过客户端检查系统代理 / TUN
规则正确但出口节点不可用规则没问题,节点问题换节点

日志里同样能看到匹配结果,格式类似 [TCP] 192.168.1.5:52211 --> example.com:443 match DomainSuffix(example.com) using PROXY[HK-01],match 后面就是命中的规则,using 后面是出口。

原因一:规则顺序

订阅自带的规则通常有几百到几千条,而且末尾一定有一条 MATCH 兜底。你在订阅文件末尾追加的规则永远排在 MATCH 之后,永远不会被执行。正确做法是让自定义规则排在订阅规则之前,Clash Verge Rev 提供「覆写 → 前置规则」,Mihomo Party 提供「覆写脚本」,两者效果一样。

Mihomo 的规则写法示例,顺序即优先级:

rules:
  # 自定义规则放最前面
  - DOMAIN-SUFFIX,openai.com,AI
  - DOMAIN-SUFFIX,anthropic.com,AI
  - DOMAIN-SUFFIX,claude.ai,AI
  - PROCESS-NAME,steam.exe,DIRECT
  - DOMAIN-KEYWORD,speedtest,DIRECT
  # 以下为订阅自带规则
  - GEOSITE,cn,DIRECT
  - GEOIP,cn,DIRECT
  - MATCH,PROXY

这里 AI 是策略组名称,必须与 proxy-groups 里定义的名字完全一致,大小写与空格都算,名字对不上内核会在启动时报错或忽略该条。

原因二:当前不在规则模式

全局模式忽略所有规则,直连模式也一样。客户端顶部的模式切换很容易误触,尤其是手机端。确认模式为「规则」后再测。另外,部分客户端允许为每个订阅单独记忆模式,切换订阅后模式可能跟着变。

原因三:fake-ip 与 IP 规则的配合

fake-ip 模式下,客户端给每个域名分配一个 198.18.x.x 的假地址,连接到达内核时带着域名信息,所以 DOMAIN 类规则能正常命中。问题出在两种情况:

  1. 域名被加进了 fake-ip-filter,或者客户端用了 redir-host 模式,这时内核拿到的是真实 IP,域名规则可能匹配不到,转而命中 GEOIP 规则。
  2. 程序自己做了 DNS 解析再直接连 IP(常见于部分游戏与终端工具),内核只看到 IP,域名规则同样失效。

处理方式是给这些目标补 IP-CIDR 规则,或者在 DNS 设置里确认 fake-ip 生效。相关配置见 Clash / Mihomo DNS 设置详解。

ℹ️ 说明

规则里出现 no-resolve 后缀的 IP 规则,表示不为域名做解析就直接比对,这是性能优化,不是开关。想让域名也命中 IP 规则,去掉 no-resolve 即可,但会增加解析次数。

原因四:流量根本没进客户端

浏览器分流正常、终端或某个软件走错,不是规则问题。浏览器读系统代理,终端与大多数桌面软件不读,它们的流量直接出网,客户端连看都没看到,连接面板里自然没有记录。解决办法只有两个:给终端导出代理环境变量,或者开启 TUN 让所有流量进内核。TUN 的配置与常见故障见 TUN 模式不生效或开启后无网络怎么办。

检查某个程序是否经过了客户端,最直接的方法是在该程序里访问一个显示出口 IP 的网站,再与客户端当前节点对比:

# 终端里分别看直连出口与代理出口
curl -s https://api.ip.sb/ip
curl -s -x http://127.0.0.1:7890 https://api.ip.sb/ip

两个结果不同,说明终端默认没走代理。

原因五:订阅更新覆盖了规则

直接编辑订阅文件追加的规则,在下一次自动更新时会被机场返回的新配置整体替换。这是「昨天还好、今天就不行」最常见的原因。所有自定义内容都应放在覆写或 Merge 配置里,这部分不会被更新覆盖。Clash Verge Rev 的覆写用法见 Clash Verge Rev 使用教程。

💡 提示

规则改完后不要只刷新网页,浏览器可能复用旧连接。在连接面板里「关闭全部连接」,再访问目标站点,看到新建连接命中了预期规则才算验证通过。

预防建议

  • 自定义规则只写在覆写里,并以注释标明用途,更新订阅时不会丢。
  • AI 工具、流媒体、游戏分别建独立策略组,域名规则指向对应组,不与默认 PROXY 混用。
  • 用 GEOSITE 代替手写的大段域名列表,内核会自动更新数据库。
  • 每次换订阅或换机场后,在连接面板里抽查三五个常用站点的命中结果。
  • 规则条数超过几千时,把常用规则放在前面可以减少匹配耗时。

其他客户端报错在客户端错误分类中整理,节点地区怎么选可以参考机场节点问题库。

总结

  • 连接面板能直接显示每条流量命中的规则,这是排查规则问题的第一入口
  • 规则自上而下第一条命中即生效,自定义规则要放在订阅规则前面
  • fake-ip 模式下域名规则优先,IP 规则只在没有域名信息时才会命中
  • 浏览器正常、终端走错,是程序没经过客户端,与规则无关

常见问题

Q机场订阅链接怎么导入 Clash?

在用户中心复制 Clash 或 Clash Meta 格式的订阅链接,打开 Clash Verge Rev 或 Mihomo Party 的订阅页面,粘贴链接并点击导入即可。导入后订阅会自带一套规则与策略组,自己的规则建议通过覆写或前置规则添加,不要直接改订阅文件,否则更新后会被覆盖。

Q机场是否支持 Clash Meta?

绝大多数机场都支持。Clash Meta 即 Mihomo 内核,兼容标准 Clash 订阅,并额外支持 GEOSITE、进程名、子规则集等规则类型。使用这些高级规则时要确认客户端跑的是 Mihomo 内核,老内核会忽略或报错。

Q机场节点地区怎么选?

按目标服务所在地就近选:访问港台与东南亚服务用香港、新加坡节点;日本、美国的服务用对应地区节点;AI 工具优先日本、新加坡或美国西部。写规则时把不同服务的域名指向各自的地区策略组,比一个全局出口更快也更稳定。

Q香港节点适合什么场景?

香港节点延迟最低,适合日常浏览、港台流媒体与游戏。但部分 AI 服务与流媒体对香港出口有地区限制,这类域名应单独写规则指向日本或美国节点,而不是让它们跟着默认策略走香港。

Q机场为什么有些节点不能看流媒体?

流媒体按出口 IP 判断地区与类型,共用的机房 IP 段容易被标记。规则层面可以把流媒体域名指向标注了解锁能力的节点组;节点本身不解锁时,规则写得再对也没用,这时要看机场的解锁说明或换节点。

参考资料与信息来源

  • Mihomo 文档:规则与规则集 · 规则类型、匹配顺序与 GEOSITE 说明
  • Clash Verge Rev 文档:覆写与 Merge · 在不改订阅的前提下追加规则