主题模式
Are you an LLM? You can read better optimized documentation at /client/clash-verge-advanced.md for this page in Markdown format
Clash Verge Rev 进阶配置:覆写、脚本、TUN 模式与自定义规则集实战
Clash Verge Rev 的基础用法(导入订阅、选择节点)只是冰山一角。本文深入讲解覆写配置、脚本编程、TUN 模式、自定义规则集等高级功能,让你的代理体验从「能用」升级到「好用」。
📋 进阶功能总览
| 功能 | 难度 | 实用性 | 说明 |
|---|---|---|---|
| Profile 覆写 | ⭐⭐ | ⭐⭐⭐⭐⭐ | 修改订阅配置而不破坏原始文件 |
| Merge 合并 | ⭐⭐ | ⭐⭐⭐⭐ | 合并多个配置片段 |
| Script 脚本 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 用 JavaScript 动态生成规则 |
| TUN 模式 | ⭐⭐ | ⭐⭐⭐⭐⭐ | 全应用系统级代理 |
| 自定义规则集 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 精细化分流控制 |
| DNS 配置 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 防止 DNS 泄漏 |
| 全局扩展配置 | ⭐⭐⭐ | ⭐⭐⭐⭐ | 全局脚本/覆写 |
🔄 Profile 覆写(Override)
什么是覆写
机场订阅返回的配置文件不一定满足你的需求(比如节点名乱码、缺少特定规则、DNS 配置不合理)。覆写允许你在不修改原始订阅的情况下,动态修改配置内容。
创建覆写
- 打开 Clash Verge Rev → 订阅管理(Profiles)
- 右键你的订阅 → 编辑文件(Edit File) → 不推荐直接改
- 更好的方式:点击订阅右侧的 ··· → 覆写文件(Override)
覆写示例:修改 DNS 配置
yaml
# 覆写文件内容
dns:
enable: true
listen: 0.0.0.0:1053
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- '*.lan'
- '*.local'
- '+.msftconnecttest.com'
- '+.msftncsi.com'
default-nameserver:
- 223.5.5.5
- 119.29.29.29
nameserver:
- https://dns.alidns.com/dns-query
- https://doh.pub/dns-query
fallback:
- https://1.1.1.1/dns-query
- https://dns.google/dns-query
fallback-filter:
geoip: true
geoip-code: CN覆写示例:添加自定义规则
yaml
# 在现有规则之前插入自定义规则
rule-proxies:
# 将所有 Google 流量走 Proxy
- DOMAIN-SUFFIX,google.com,Proxy
- DOMAIN-SUFFIX,googleapis.com,Proxy
- DOMAIN-SUFFIX,googlevideo.com,Proxy
# Telegram 走香港节点
- IP-CIDR,91.108.0.0/16,HK-Node,no-resolve
- IP-CIDR,109.239.140.0/24,HK-Node,no-resolve
# 国内直连
- DOMAIN-SUFFIX,cn,DIRECT
- DOMAIN-KEYWORD,baidu,DIRECT覆写的优势
覆写不会修改原始订阅文件。当订阅更新时,覆写会自动应用到新配置上。这意味着你可以自由定制而不影响订阅的自动更新。
🔗 Merge 合并配置
什么是 Merge
Merge 允许你将多个 YAML 配置片段合并到主配置中,适合管理大量自定义规则。
创建 Merge 配置
- 订阅管理 → 新建(New) → 选择 Merge 类型
- 编写 Merge 配置
Merge 示例:统一的分流规则
yaml
# merge-rules.yaml
# 追加代理组
proxy-groups:
- name: '🤖 AI 对话'
type: select
proxies:
- 'Proxy'
- 'DIRECT'
# 仅用于 AI 服务
- name: '📺 流媒体'
type: select
proxies:
- 'Proxy'
- 'HK-Node'
- 'JP-Node'
- 'US-Node'
# 追加规则
rules:
# AI 服务
- DOMAIN-SUFFIX,openai.com,🤖 AI 对话
- DOMAIN-SUFFIX,anthropic.com,🤖 AI 对话
- DOMAIN-SUFFIX,claude.ai,🤖 AI 对话
# 流媒体
- DOMAIN-SUFFIX,netflix.com,📺 流媒体
- DOMAIN-SUFFIX,nflxvideo.net,📺 流媒体
- DOMAIN-SUFFIX,disneyplus.com,📺 流媒体
- DOMAIN-SUFFIX,hbomax.com,📺 流媒体
# 开发者工具
- DOMAIN-SUFFIX,github.com,Proxy
- DOMAIN-SUFFIX,githubusercontent.com,Proxy
- DOMAIN-SUFFIX,npmjs.org,Proxy
- DOMAIN-SUFFIX,docker.com,Proxy启用 Merge
- 在订阅管理中,将 Merge 配置拖到订阅下方
- 或在订阅设置中关联 Merge 配置
- Clash Verge Rev 会自动合并配置
Merge vs 覆写
- 覆写:修改已有配置项(如 DNS、TUN 设置)
- Merge:追加新内容(如新的代理组、规则)
- 两者可以同时使用,互不冲突
📜 Script 脚本编程
什么是 Script
Script 是 Clash Verge Rev 最强大的功能,允许你用 JavaScript 动态生成配置。适合需要复杂逻辑的场景。
创建 Script
- 订阅管理 → 新建 → 选择 Script 类型
- 编写 JavaScript 脚本
Script 示例:按关键词自动分组
javascript
// main.js
function main(config) {
// 获取所有代理节点
const proxies = config['proxies'] || []
// 按地区分组
const regions = {
'🇭🇰 HK': /香港|HK|Hong Kong/i,
'🇯🇵 JP': /日本|JP|Japan/i,
'🇺🇸 US': /美国|US|United States/i,
'🇸🇬 SG': /新加坡|SG|Singapore/i,
'🇹🇼 TW': /台湾|TW|Taiwan/i
}
// 为每个地区创建代理组
const regionGroups = []
for (const [name, pattern] of Object.entries(regions)) {
const matched = proxies.filter((p) => pattern.test(p.name)).map((p) => p.name)
if (matched.length > 0) {
regionGroups.push({
name: name,
type: 'url-test',
proxies: matched,
url: 'http://www.gstatic.com/generate_204',
interval: 300,
tolerance: 50
})
}
}
// 添加到代理组
if (!config['proxy-groups']) config['proxy-groups'] = []
config['proxy-groups'].push(...regionGroups)
// 创建选择组
config['proxy-groups'].unshift({
name: '🚀 节点选择',
type: 'select',
proxies: ['♻️ 自动选择', ...Object.keys(regions), 'DIRECT']
})
// 自动选择组(所有节点延迟测试)
config['proxy-groups'].splice(1, 0, {
name: '♻️ 自动选择',
type: 'url-test',
proxies: proxies.map((p) => p.name),
url: 'http://www.gstatic.com/generate_204',
interval: 300,
tolerance: 50
})
return config
}Script 示例:过滤无用节点
javascript
function main(config) {
const proxies = config['proxies'] || []
// 过滤掉不可用的节点
const filtered = proxies.filter((p) => {
// 排除过期/测试节点
if (/过期|测试|test|expire/i.test(p.name)) return false
// 排除流量耗尽的节点
if (/流量不足|0GB|0G/i.test(p.name)) return false
// 排除重复节点(同名只保留第一个)
return true
})
// 去重
const seen = new Set()
const unique = filtered.filter((p) => {
if (seen.has(p.name)) return false
seen.add(p.name)
return true
})
config['proxies'] = unique
// 更新代理组中的引用
if (config['proxy-groups']) {
const validNames = new Set(unique.map((p) => p.name))
config['proxy-groups'].forEach((group) => {
if (group.proxies) {
group.proxies = group.proxies.filter((p) => validNames.has(p) || ['DIRECT', 'REJECT'].includes(p))
}
})
}
return config
}Script 示例:自动重命名节点
javascript
function main(config) {
const proxies = config['proxies'] || []
// 统一节点命名格式
const renameMap = {
香港: 'HK',
日本: 'JP',
美国: 'US',
新加坡: 'SG',
台湾: 'TW',
韩国: 'KR',
英国: 'UK',
德国: 'DE'
}
proxies.forEach((p) => {
for (const [cn, en] of Object.entries(renameMap)) {
p.name = p.name.replace(new RegExp(cn, 'g'), en)
}
// 去除多余空格和特殊字符
p.name = p.name.replace(/\s+/g, ' ').trim()
})
config['proxies'] = proxies
return config
}Script 调试
在 Clash Verge Rev 的 Script 编辑器中,可以使用 console.log() 输出调试信息。查看日志:设置 → 日志 → 查看 Script 输出。
🖥️ TUN 模式配置
什么是 TUN 模式
TUN 模式创建虚拟网卡,接管系统所有网络流量(包括不支持代理设置的应用),实现真正的全局代理。
开启 TUN 模式
- Clash Verge Rev → 设置 → TUN 模式 → 开启
- 首次开启需要管理员权限(安装 Service Helper)
TUN 配置
yaml
tun:
enable: true
stack: mixed # 混合栈(推荐),兼容性最好
dns-hijack:
- any:53 # 劫持 DNS 请求
auto-route: true # 自动添加路由
auto-detect-interface: true # 自动检测物理网卡
device: Meta # 虚拟网卡名称
mtu: 1500 # MTU 值TUN 栈选择
| 栈 | 性能 | 兼容性 | 推荐场景 |
|---|---|---|---|
| system | 中 | 最高 | 通用场景 |
| gvisor | 较低 | 高 | 需要兼容性 |
| mixed | 高 | 高 | 推荐(混合两种栈) |
TUN 模式注意事项
- 开启 TUN 后,所有流量都经过代理,包括本地局域网
- 如果需要局域网直连,添加规则:
IP-CIDR,192.168.0.0/16,DIRECT - TUN 模式需要管理员权限运行
TUN 模式下的 DNS 配置
TUN 模式下 DNS 配置尤为重要,配置不当会导致 DNS 泄漏:
yaml
dns:
enable: true
listen: 0.0.0.0:1053
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
# fake-ip 过滤(这些域名不使用 fake-ip)
fake-ip-filter:
- '*.lan'
- '*.local'
- '*.localhost'
- '+.msftconnecttest.com'
- '+.msftncsi.com'
- 'localhost.ptlogin2.qq.com'
- '+.market.xiaomi.com'
# 默认 DNS(用于解析 DoH 域名)
default-nameserver:
- 223.5.5.5
- 119.29.29.29
# 主 DNS(国内域名)
nameserver:
- https://dns.alidns.com/dns-query
- https://doh.pub/dns-query
# 备用 DNS(国外域名)
fallback:
- https://1.1.1.1/dns-query
- https://dns.google/dns-query
# fallback 触发条件
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4📋 自定义规则集
什么是规则集
规则集(Rule Provider)是外部规则文件,可以按需加载大量规则,而不需要全部写在主配置中。
配置规则集
yaml
rule-providers:
# 拒绝规则集(广告/跟踪)
reject:
type: http
behavior: domain
url: 'https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/reject.txt'
path: ./ruleset/reject.yaml
interval: 86400
# 国外域名
proxy:
type: http
behavior: domain
url: 'https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt'
path: ./ruleset/proxy.yaml
interval: 86400
# 国内域名
direct:
type: http
behavior: domain
url: 'https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/direct.txt'
path: ./ruleset/direct.yaml
interval: 86400
# 国内 IP
cncidr:
type: http
behavior: ipcidr
url: 'https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/cncidr.txt'
path: ./ruleset/cncidr.yaml
interval: 86400
# 局域网 IP
private:
type: http
behavior: ipcidr
url: 'https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/private.txt'
path: ./ruleset/private.yaml
interval: 86400使用规则集
yaml
rules:
# 广告拦截
- RULE-SET,reject,REJECT
# 局域网直连
- RULE-SET,private,DIRECT
# 国外走代理
- RULE-SET,proxy,Proxy
# 国内直连
- RULE-SET,direct,DIRECT
- RULE-SET,cncidr,DIRECT
# 兜底规则
- GEOIP,CN,DIRECT
- MATCH,Proxy规则集类型
| 类型 | behavior | 格式 | 用途 |
|---|---|---|---|
| 域名 | domain | DOMAIN-SUFFIX,xxx | 按域名匹配 |
| IP | ipcidr | IP-CIDR,x.x.x.x/24 | 按 IP 匹配 |
| 经典 | classical | 完整规则行 | 混合域名和 IP |
推荐规则集
- Loyalsoldier/clash-rules — 最全面的中英文规则集
- blackmatrix7/ios_rule_script — 按应用分类的规则
🛡️ DNS 泄漏防护
什么是 DNS 泄漏
当你访问国外网站时,如果 DNS 请求走了国内 DNS 服务器,你的 ISP 就能知道你访问了哪些域名,这就是 DNS 泄漏。
检测 DNS 泄漏
访问 dnsleaktest.com 进行检测:
- 点击 Standard test
- 查看返回的 DNS 服务器
- 如果看到国内运营商的 DNS,说明存在泄漏
防护配置
yaml
dns:
enable: true
enhanced-mode: fake-ip # 使用 fake-ip 模式
fake-ip-range: 198.18.0.1/16
# 关键:使用 DoH/DoT 加密 DNS
nameserver:
- https://dns.alidns.com/dns-query # 国内 DoH
- https://doh.pub/dns-query
fallback:
- https://1.1.1.1/dns-query # 国外 DoH
- https://dns.google/dns-query
# 防泄漏策略
fallback-filter:
geoip: true
geoip-code: CN
# 如果国内 DNS 返回非 CN IP,使用 fallback DNS
ipcidr:
- 240.0.0.0/4
domain:
- '+.google.com'
- '+.facebook.com'
- '+.youtube.com'fake-ip 模式
fake-ip 模式会返回虚假的 IP 地址(198.18.x.x),然后由 Clash 代理实际连接。这能有效防止 DNS 泄漏,因为 DNS 请求不会真正发送到外部。
📊 全局扩展配置
全局覆写
在 Clash Verge Rev 中,可以设置全局覆写,应用于所有订阅:
- 设置 → 全局扩展配置(Global Extend Config)
- 添加全局 Script 或 Merge
全局脚本示例
javascript
// global-script.js
// 应用于所有订阅的全局脚本
function main(config) {
// 1. 统一 DNS 配置
config.dns = {
enable: true,
enhanced-mode: "fake-ip",
fake-ip-range: "198.18.0.1/16",
nameserver: ["https://dns.alidns.com/dns-query"],
fallback: ["https://1.1.1.1/dns-query"],
fallback-filter: { geoip: true, geoip-code: "CN" },
};
// 2. 统一 TUN 配置
config.tun = {
enable: true,
stack: "mixed",
dns-hijack: ["any:53"],
auto-route: true,
auto-detect-interface: true,
};
// 3. 统一分流规则
if (!config.rules) config.rules = [];
config.rules = [
"DOMAIN-SUFFIX,local,DIRECT",
"IP-CIDR,192.168.0.0/16,DIRECT,no-resolve",
"IP-CIDR,10.0.0.0/8,DIRECT,no-resolve",
"IP-CIDR,172.16.0.0/12,DIRECT,no-resolve",
...config.rules,
"MATCH,Proxy",
];
return config;
}❓ 常见问题
Q: 覆写和 Merge 不生效?
检查以下几点:
- 确保覆写/Merge 已关联到订阅
- 确保覆写/Merge 处于启用状态
- 点击「刷新」重新加载订阅
- 检查 YAML 语法是否正确
Q: TUN 模式开启后无法上网?
- 确保以管理员权限运行 Clash Verge Rev
- 检查 TUN 网卡是否创建成功
- 尝试切换 TUN 栈(system → mixed → gvisor)
- 检查是否与其他 VPN/代理软件冲突
Q: fake-ip 模式导致某些应用异常?
部分应用不支持 fake-ip(如需要真实 IP 的应用),可以添加到 fake-ip-filter:
yaml
fake-ip-filter:
- '*.lan'
- '*.local'
- 'stun.*.*'
- 'stun.*.*.*'
- '+.market.xiaomi.com'
- 'localhost.ptlogin2.qq.com'Q: Script 脚本报错?
- 检查 JavaScript 语法
- 使用
console.log()调试 - 确保
main(config)函数返回config - 不要修改
config的基本结构
Q: 规则集加载失败?
- 检查 URL 是否可访问
- 确保
path目录有写入权限 - 检查
behavior类型是否正确 - 尝试手动下载规则文件验证格式
🔗 相关文章
- Windows 客户端教程 (Clash Verge Rev) — 基础安装配置
- macOS 客户端教程 (Clash Verge Rev) — macOS 基础配置
- 代理客户端横评 — 客户端选择指南
- Sing-box 全平台教程 — sing-box 配置
- 代理协议深度对比 — 协议选择
- 订阅转换与自建教程 — 订阅格式转换
