Clash Verge Rev 冷门功能大起底:七个你可能从没用过的隐藏技能

🧪 配置预处理:订阅后的二次加工

很多人导入机场订阅后就直接用了,但订阅返回的配置往往包含大量冗余规则和不符合自己习惯的策略组。Clash Verge Rev 允许你在“配置”页面右键点击某个订阅,选择“编辑”,然后对订阅返回的 YAML 进行“预处理”——不过更高级的玩法是在订阅 URL 后面添加参数,让机场服务器返回你定制的配置。但如果你不想依赖机场,可以在本地配置目录里放一个 parser.js 之类的脚本,通过 cfw-parserprepend/append 字段来修改订阅内容。

具体来说,在 Clash Verge Rev 的订阅编辑界面,你可以设置“预处理命令”,比如用 sedawk 对拉取到的 YAML 进行文本替换。或者更简单的方法:使用“配置文件合并”功能,把你自己的规则和 DNS 设置放在一个本地 YAML 片段里,订阅更新时自动覆盖到机场配置上。这个功能对于需要保持本地修改不被覆盖的用户来说简直是救星,详细原理可以结合 订阅更新时间 那篇文章来看。

我常用的一个预处理技巧是:自动移除订阅里的 MATCH,DIRECT 兜底规则,替换成自己的 MATCH,🚀 代理。这样即使机场更新了配置,也不会出现某些国外网站突然走直连的情况。这个可以通过在订阅编辑框里添加一行 sed -i 's/MATCH,DIRECT/MATCH,🚀 代理/g' 实现,非常实用。

🔍 连接面板里的进程过滤与规则命中调试

Clash Verge Rev 从 v2.5.2 开始引入了连接面板,v2.5.3 又加入了按进程名过滤的功能。这个功能藏得比较深:你需要先打开连接面板,然后在搜索框旁边找到一个下拉菜单,可以选择“按域名过滤”或者“按进程过滤”。很多用户不知道这个面板除了看流量还能用来调试规则。

举个例子,你发现某个应用没有走代理,但规则里明明写了 DOMAIN-SUFFIX,example.com,🚀 代理。这时候打开连接面板,过滤出该应用的进程名(比如 chrome.exe),就能看到它发出的所有连接请求,包括目标域名、命中的规则、使用的节点。如果规则命中的是 DIRECT,说明你的规则写错了或者优先级被其他规则覆盖了。你还可以结合 Rule 模式详解 里的规则调试工具来验证。

这个小功能对于排查“为什么这个网站打不开”或者“为什么这个软件能联网但很慢”特别有效,比盲目改规则快多了。唯一需要注意的是,进程过滤在不同平台上的进程名格式不同,Windows 上通常是 .exe 结尾,macOS 和 Linux 上则是纯名称。

🔗 代理链 relay:让流量走两跳节点

大多数用户只用过 selecturl-testfallbackload-balance 这几种策略组,但 Mihomo 内核其实还支持 relay 类型。所谓 relay,就是让流量先经过一个节点,再从这个节点转发到另一个节点,相当于“套娃”。这在某些特殊场景下非常有用,比如你的机场节点无法直接访问某些网站,但可以通过另一个中转节点绕过。

配置方法是在 proxy-groups 中定义一个类型为 relay 的策略组,然后在 proxies 字段里填写第一个节点,再在 proxiesuse 或直接引用第二个节点。具体语法如下:

# 定义中转节点 proxies: - name: "入口节点" type: vmess ... - name: "出口节点" type: ss ... # 定义 relay 策略组 proxy-groups: - name: "两跳节点" type: relay proxies: - 入口节点 - 出口节点 use: []

这个功能并不在图形界面中直接暴露,需要手动编辑配置文件。但如果你经常需要“线路A->线路B”的组合,这个绝对值得一试。注意 relay 会增加延迟,因为数据需要经过两个节点,通常只用于特殊用途。另外,url-test 策略组也有一个隐藏参数 tolerance,用来设置延迟容差值,避免频繁切换节点,这里也一并提一下。

🛣️ TUN 模式下的路由排除与接口绑定

开启 TUN 模式后,所有流量都会经过虚拟网卡。但有时候你不想让某些 IP 段走代理,比如公司内网、打印机、或者某些需要直连的局域网设备。Clash 的 tun 配置里有一个 route-exclude-address 字段,可以指定哪些 IP 段不经过 TUN。这个功能在 Clash Verge Rev 的图形界面里没有直接暴露,但你可以手动在配置文件中添加。

一个典型场景是:你的电脑同时连接着公司 VPN 和 Clash 的 TUN,VPN 的内网 IP 段(比如 10.10.0.0/16)应该走物理网卡,而不是 Clash 的虚拟网卡。这时候就可以这样配置:

tun: enable: true stack: wfp auto-route: true route-exclude-address: - 10.10.0.0/16 - 192.168.1.0/24

另一个有用的字段是 strict-route,它可以防止其他程序修改路由表,保证 TUN 的优先级。如果你在 Windows 上遇到 VPN 和 Clash 冲突,可以试试开启这个。另外,device 字段可以绑定特定的物理网卡,比如你有多个网卡(无线和有线),想让 Clash 只接管某一块网卡的流量。这些参数都能在 TUN 模式文章 里找到更完整的说明。

🕵️ DNS 的 nameserver-policy 与 fallback-filter

Clash 的 DNS 配置里面,nameserver-policy 是一个被很多人忽略的超级工具。它允许你对不同的域名指定不同的 DNS 服务器,比如国内域名用国内 DNS,国外域名用 Cloudflare。这个功能在 DNS 配置指南 里也提到过,但实际使用的人不多。

举个例子,你可以设置 '+.cn': 'https://doh.pub/dns-query',让所有 .cn 结尾的域名走国内加密 DNS,其他域名走 https://cloudflare-dns.com/dns-query。这样一来,国内网站的解析速度会更快,同时避免了 DNS 污染。还有 fallback-filter 字段,它用来决定什么时候使用 fallback 服务器。默认情况下,当主 DNS 返回的 IP 被判定为污染时,才会使用 fallback。你可以通过 geoipipcidr 参数来自定义判断条件。

我自己在配置里还加了一个 fallback-filter 的过滤规则,只有当域名包含 googleyoutube 时才启用 fallback,其他情况直接使用主 DNS,这样可以减少 DNS 查询的延迟。这些小参数都在配置文件的 dns 段里,图形界面下可能没有直接入口,需要手动编辑。

🤖 外部控制 API:用脚本自动切换节点

Clash Verge Rev 内置了一个 RESTful API,默认监听在 127.0.0.1:9090。你可以在设置里开启外部控制,然后使用脚本调用 API 来执行各种操作,比如切换节点、重载配置、查看日志等。这个功能对于喜欢自动化的用户来说非常强大,也是很多第三方面板(如 Metacubexd)的实现基础。

我自己写过一个简单的脚本,每天早上 8 点自动切换到延迟最低的节点,并发送通知。核心命令是 curl -X PUT http://127.0.0.1:9090/proxies/🚀%20自动选择,然后在请求体里指定节点名。如果需要更复杂的逻辑,可以结合 jq 解析 JSON 响应。

这个 API 的另一个用途是和系统事件联动。比如在 Windows 上可以创建一个计划任务,当电脑从睡眠恢复时,自动重新连接代理。如果你对脚本编写不熟悉,可以参考 订阅更新时间 那篇文章里提到的 cron 示例,思路是一样的。另外,也有现成的命令行工具 clashctl 可以简化操作,但自己写脚本更灵活。

📁 本地文件型 rule-provider:版本管理的乐趣

Rule Provider 除了可以远程加载,还支持从本地文件读取。你只需将 type 设置为 file,并指定 path 即可。这个功能很适合那些喜欢用 Git 管理配置的用户。你可以把规则文件放在配置目录下的 rules 文件夹里,然后用 Git 追踪这些文件的变化,实现规则集的版本控制。

具体配置方法如下:

rule-providers: my_local_rules: type: file path: ./rules/my_rules.yaml

然后在 rules 字段里使用 RULE-SET,my_local_rules,DIRECT。这样你可以在本地用任何文本编辑器编辑规则文件,修改后点击重载配置即可生效,完全脱离了远程依赖。配合 多设备同步 里的 Git 工作流,你甚至可以做到在手机上提交规则更新,桌面端自动同步。

🎁 附加彩蛋:几个不常被提起的开关

最后再分享几个零散的小功能,它们可能藏在配置文件的角落,或者设置界面的某个不起眼的位置,但都能带来实际的好处:

  • log-level: debug:当遇到疑难杂症时,把日志级别调到 debug 可以看到更多的连接细节。平时保持 infowarning 即可,debug 会产生大量日志文件。
  • interface-name:在节点配置里可以指定走哪块物理网卡,适合多网卡环境。
  • routing-mark:在 Linux 上使用,配合 ip rule 可以做更精细的策略路由。
  • 配置文件的 profile 字段:可以给配置加一个备注名称,方便在配置列表中区分。

这些功能虽然不如前面几个那么“重量级”,但在特定环境下非常管用。如果你对某个功能感兴趣,建议去 GitHub Wiki 或者 常见问题 页面找更详细的说明。

📖 继续阅读