Clash Verge Rev 规则命中查看与调试方法

博客资讯 128 2026-10-10

规则表写了几十条,某个域名就是不走你期望的节点。你去“代理”页面点了半天,策略组选来选去,问题依旧。原因很简单:Clash Verge Rev 的界面只负责展示策略组和节点,真正按规则判断流量的,是底层的 Mihomo (Clash.Meta) 内核。你在界面上选中了某个策略组,不代表每个域名都进了那一组。规则匹配发生在内核层面,要看清它到底做了什么决定,只有两个地方能给你答案:连接面板和日志页面。这篇教程针对 Clash Verge Rev 规则命中查看与调试,把这两个工具怎么用、怎么看、怎么定位问题逐一拆开。

Clash Verge Rev

01. 连接面板:一眼看到每条连接的规则和出口

打开 Clash Verge Rev,左侧菜单点击“连接”。这个页面列出当前所有经过内核的连接,每一行都有几个关键列,直接回答“这条连接走了哪条规则、去了哪个节点”。

需要重点关注的列:

  • 规则(Rule) :显示这条连接命中的规则类型,常见值包括 DomainSuffix、RuleSet、GeoIP、Match
  • 代理链(Chains) :显示流量最终经过的策略组和节点,例如 PROXY → 香港节点
  • 目标(Destination) :目标域名或 IP 地址
  • 来源进程:发起连接的本地程序

排查时,在连接面板的搜索框中输入目标域名(比如 api.example.com),列表会立即过滤出相关连接。看“规则”列确认命中了什么规则,再看“代理链”列确认出口是否符合预期。

如果“代理链”显示 DIRECT 而你期望走代理,说明命中了直连规则。如果显示 REJECT,说明被拒绝规则拦截。如果规则列显示 Match,意味着前面所有规则都没命中,落到了最后的兜底规则。

点击任意一条连接可以展开详情,里面能看到更完整的匹配路径。不过连接面板只保留活跃或近期关闭的连接,已经过期的记录会被移除。要看到更持久、更底层的信息,需要用日志页面。

02. Clash Verge Rev 规则命中查看与调试:用 debug 级别抓取匹配过程

连接面板给的是“结果”,日志页面给的是“过程”。左侧菜单点击“日志”,页面会实时滚动内核输出。默认级别是 info,只显示常规连接事件。排查规则问题时,把顶部的日志级别切换到 debug。

切换到 debug 后,日志会输出规则逐条匹配的详细过程。你需要的日志行格式通常是这样的:

[TCP] 127.0.0.1:52341 --> api.example.com:443 match DomainSuffix(example.com) using PROXY
[TCP] 127.0.0.1:52342 --> cdn.example.com:443 match RuleSet(cdn-list) using DIRECT
[DNS] query api.example.com A
[DEBUG] match Match() using Manual

关键字段在 match 后面:match DomainSuffix(example.com) 表示命中了域名后缀规则,using PROXY 表示出口是 PROXY 策略组。如果日志显示 match Match() using Manual,说明所有前面的规则都没匹配到,落到了兜底规则。

抓日志的方法:先把问题缩小到一个域名,不要同时测试多个网站。在日志页面切到 debug,然后用浏览器或命令行访问那个域名,复现 30 秒左右,切回 info。在搜索框中输入域名,把相关日志行筛选出来。

debug 级别会产生大量日志,长期开着不仅影响性能,还可能把订阅地址、节点信息等敏感内容记录到日志文件中。只在排查时短时间开启即可。

03. 规则顺序:为什么域名走了错误的出口

规则匹配的核心逻辑只有一条:从上到下,命中即停。内核从规则表的第一条开始逐条检查,遇到第一条条件满足的规则就立即执行,不再看后面的规则。

这意味着规则的位置比规则本身更重要。一个最常见的错误配置:

rules:
  - MATCH,Manual
  - DOMAIN-SUFFIX,example.com,Proxy

MATCH 没有任何条件,任何流量都能命中。它放在第一行,后面的 DOMAIN-SUFFIX 规则永远没有机会被执行。正确的写法是把兜底规则放到最后:

rules:
  - DOMAIN-SUFFIX,example.com,Proxy
  - MATCH,Manual

同理,如果一条宽泛的 DIRECT 规则(比如 GEOIP,CN,DIRECT)放在具体域名的代理规则前面,那个域名会先被直连规则拦截,永远走不了代理。排查时在日志中看到某个域名命中了 DIRECT,回头检查规则表,找到那条 DIRECT 规则的位置,看它是否应该往后移。

旧版 Clash 配置中常用 FINAL 作为兜底规则,迁移到 Mihomo 内核后应统一改为 MATCH。无论叫什么名字,兜底规则提前出现都会盖住后面的细分规则。

04. rule-providers 加载状态排查

如果你的规则表中使用了 RULE-SET 类型的规则,而日志中显示某个域名命中了 RuleSet 但出口不对,或者日志直接报出 rule provider not found、parse rule provider error,问题可能不在规则行本身,而在 rule-providers 的加载环节。

rule-providers 定义在配置文件的独立区块中,告诉内核去哪里下载规则集文件、文件格式是什么、多久更新一次。常见排查点:

字段 排查方向 错误后果
type 是 http、file 还是 inline,是否与来源匹配 文件没拉取或读取失败
url 远程地址是否可访问,是否返回 404 规则集为空,所有 RuleSet 规则失效
path 本地缓存路径是否正确,文件是否完整 读取到损坏或过期的文件
behavior classical 与 domain 是否与文件内容匹配 解析失败,规则集加载报错
interval 更新间隔是否过长导致内容过期 规则集内容陈旧

在日志页面将级别设为 debug,搜索 provider 关键词,可以看到规则集的下载和解析过程。常见的错误信息包括:

parse rule provider error: invalid yaml
rule provider [xxx] not found
download rule provider [xxx] error: 404 Not Found

invalid yaml 表示下载到的文件不是有效的 YAML 格式,可能是远程地址返回了 HTML 错误页。not found 表示规则表中引用的 provider 名称在 rule-providers 区块中没有定义,检查拼写是否一致。404 则是远程地址本身已经失效。

修改 rule-providers 配置后,需要让内核重新加载配置才能生效。可以在“配置”页面点击刷新按钮,或在托盘菜单“更多”中选择“重启内核”。

05. 日志里没有目标域名时的排查思路

有一种情况比规则命中错误更隐蔽:日志里完全找不到你访问的那个域名。你反复刷新页面,日志里只有其他域名的记录,目标域名像从未经过内核一样。

这说明流量根本没有进入 Mihomo 内核,问题不在规则,而在流量入口。排查方向:

系统代理是否真正生效。打开系统代理后,并非所有应用都会遵循。浏览器和大部分桌面应用会,但命令行工具、部分游戏和某些不读系统代理设置的程序不会。用 curl 测试:如果 curl 走不通但浏览器能走通,说明系统代理对命令行不生效,需要 TUN 模式接管。

TUN 模式是否正常。如果开了 TUN 但目标域名的流量仍然不出现在日志中,检查 TUN 虚拟网卡是否创建成功。在设备管理器或 ipconfig 中确认是否存在 TUN 适配器。

浏览器是否用了自己的 DoH。Chrome、Firefox 等浏览器内置了 DNS over HTTPS 选项。如果浏览器启用了 DoH,DNS 解析不会经过 Mihomo,域名可能被解析到错误的 IP,导致后续连接不经过代理。在浏览器设置中关闭“安全 DNS”或“DoH”选项,让 DNS 查询走系统解析。

DNS 缓存是否过期。操作系统和浏览器都有 DNS 缓存。如果之前解析结果被缓存,即使现在规则正确,流量可能仍然指向旧 IP。执行 ipconfig /flushdns(Windows)或 sudo killall -HUP mDNSResponder(macOS)清除缓存后再测试。

如果日志中出现了目标域名,但显示的是 IP 地址而非域名,说明 DNS 解析没有经过 Mihomo 或 fake-ip 映射失效。检查配置文件中 dns 区块的 enhanced-mode 是否为 fake-ip,以及 fake-ip-filter 是否误将目标域名排除。

06. 外部工具辅助排查

除了界面自带的连接面板和日志页面,还有一些外部工具可以辅助规则调试。

external-controller API。新版 Clash Verge Rev 默认不开放 TCP 控制器,而是将 Mihomo 的 REST API 暴露在 Windows 命名管道 \\.\pipe\verge-mihomo 上,Clash Verge Rev 自身也是通过这个管道与内核通信的。如果你需要从外部访问 API,可以在“设置 → Clash 内核”中手动开启“External Controller”开关,并查看生成的 secret,API 地址为 http://127.0.0.1:9090。开启后,可以通过 GET /connections 获取每条连接的详细匹配信息,包括命中的规则、规则载荷和出站链路。

cvctl CLI 工具。一个第三方命令行工具,提供 cvctl rule list、cvctl rule show 等命令,默认连接 http://127.0.0.1:9090,可以在终端中查看和过滤规则列表,适合不习惯图形界面操作的用户。

排查完成后,如果确认是规则顺序问题,可以通过 prepend-rules 在扩展配置中把自定义规则插到所有规则的最前面,优先级最高,不需要修改订阅本身的规则表。更多配置文件的进阶用法,可以参考 Merge 与 Script 指南;如果日志中出现内核启动失败或规则集下载报错,常见问题页面中有针对性的排查步骤。

上一篇:Clash Verge Rev 启动报错找不到系统文件 os error 解决方法

开始使用 Clash Verge Rev

下载最新版本 v2.5.2,体验更轻量、更快速的代理客户端。

立即下载