一、Clash Verge Rev 是什么,与 Clash、CFW、ClashX、mihomo 的关系
Clash Verge Rev 是基于 Rust 和 Tauri 2 的开源桌面客户端(GPL-3.0)。README 将它描述为 Clash Meta 图形界面,并注明是原版 Clash Verge 的延续。它只是本地客户端:负责启动代理内核、管理配置文件和修改系统设置,本身不包含代理服务器,也不是 VPN 服务。
截至核实时,最新正式版为 v2.5.8,于 2026 年 10 月 9 日在 GitHub 发布;此前的正式版分别是 9 月 22 日的 v2.5.5、9 月 26 日的 v2.5.6 和 10 月 2 日的 v2.5.7。官方文档明确说明目前只通过 GitHub Release 发布,名字相似的下载站都不是官方渠道。
zzzgydi 的原版 Clash Verge 仓库已在 GitHub 归档(最后推送于 2023 年 11 月 3 日),不适合新装。Clash for Windows(CFW)在 2023 年 11 月停更,ClashX 是另一条 macOS 客户端路线,mihomo(原 Clash.Meta)则是 MetaCubeX 维护的开源内核。Verge Rev 内置 mihomo(文件名 verge-mihomo),在「设置 → Clash 内核」中只能在正式版和 Alpha 版 mihomo 之间切换,CFW 使用的闭源 Clash Premium 内核不在可选范围内。
README 和 Release 说明中带有第三方推广链接,它们不属于软件本身,本文也不推荐任何代理或订阅服务商。
二、四层结构:入站、出站模式、DNS 与隐私边界
Verge 文档把入站(流量怎样到达本地内核:系统代理或 TUN)与出站模式(内核把流量送去哪里:规则、全局或直连)分开解释。DNS 又是独立的第三层。只看一个开关的状态,无法说明其他几层是否正确。
- 对目标网站:完整经过代理的请求通常显示节点出口 IP,而不是家庭或公司网络的原始公网 IP。
- 对代理运营方:节点要接收你的连接,因此能看到原始公网 IP,任何客户端都无法对节点本身隐藏这一点。
- 对本地网络或运营商:仍能看到代理服务器地址、连接时间和流量大小,具体内容取决于协议和加密。
- 对 DNS 服务商:DoH/DoT 加密的是传输过程,解析器仍能看到查询的域名和连接它的 IP,加密不等于匿名。
- 对账号和浏览器:Cookie、登录状态、语言、时区、浏览器指纹和系统定位服务仍可能暴露身份或位置。
应用程序
│
│ ① 系统代理:应用主动把请求交给 127.0.0.1:7897
│ ② TUN(虚拟网卡):在路由层接管 TCP/UDP
▼
mihomo 内核(verge-mihomo)
│
│ ③ 规则 / 全局 / 直连:决定出口
│ ④ DNS:fake-ip 或 redir-host、用哪些解析器、走哪条路径
▼
DIRECT 直连 / 代理节点 / REJECT 拒绝
│
▼
目标网站或服务三、各系统的安装方式
- Windows:v2.5.8 提供 x64 和 ARM64 两种 setup.exe,另有内置 WebView2 的 fixed_webview2 版本,仅在系统缺少且无法安装 WebView2 时使用。多数电脑应选 x64,提示“此应用无法在你的电脑上运行”通常是下错了架构。已不再支持 Windows 7。
- Windows 包管理器:文档给出 winget install ClashVergeRev.ClashVergeRev;Scoop 的 extras/clash-verge-rev 是社区维护的分发,官方不为其问题提供支持。
- SmartScreen:如果 Windows 对安装包发出警告,先确认文件来自 GitHub Release 页面,并核对 SHA-256 与 Release 页面显示的摘要一致;不要整体关闭 SmartScreen 或 Defender。
- macOS:Apple 芯片(aarch64)与 Intel(x64)各有独立 DMG,安装文档写明支持 macOS 12 及以上。若首次打开被 Gatekeeper 拦截,核实来源后在「系统设置 → 隐私与安全性」中单独放行该应用,不要全局关闭 Gatekeeper,也不要随手对来历不明的文件移除隔离属性。
- Linux:v2.5.8 提供 x86_64、ARM64、ARMv7 三种架构的 .deb 和 .rpm,分别用 sudo apt install ./文件.deb 或 sudo dnf install ./文件.rpm 安装;Arch 系可用 AUR 的 clash-verge-rev-bin。v2.5.8 的发布文件中没有 AppImage。
- Linux 版界面基于 WebView,必须有图形桌面;无图形界面的服务器应直接使用 mihomo 命令行内核。
- 每个安装包旁的 .sig 文件供应用内更新器校验签名使用;手动下载时,用 SHA-256 与 Release 页面上的摘要对比即可。
# Windows(PowerShell)
Get-FileHash .\Clash.Verge_2.5.8_x64-setup.exe -Algorithm SHA256
# macOS
shasum -a 256 Clash.Verge_2.5.8_aarch64.dmg
# Linux
sha256sum Clash.Verge_2.5.8_amd64.deb
sudo apt install ./Clash.Verge_2.5.8_amd64.deb四、服务模式、Sidecar 与 TUN 的前提
TUN 需要创建虚拟网卡并修改路由,必须具有较高权限。服务模式会安装一个独立的高权限进程 clash-verge-service,由它拉起内核,这样图形界面以普通用户运行时也能使用 TUN。退出 Verge 后,这个服务进程仍会在后台运行。未安装服务时,内核以普通权限的 Sidecar 方式运行,无法使用 TUN。
- 在设置中点击「安装服务」并通过系统授权,确认首页显示服务模式后,再打开「虚拟网卡模式」。
- Windows 服务会检查内核文件及各级目录的所有者和权限;如果普通账户可以替换内核,检查不通过,应用会退回 Sidecar。正确做法是用官方安装包装到默认的 C:\Program Files\Clash Verge 并保持默认权限,而不是放宽目录权限。
- Windows 上也可以不装服务、直接以管理员身份运行 Verge 来使用 TUN,但每次启动都要这样做。
- 防火墙:使用 TUN 时可能需要放行内核 verge-mihomo 和 verge-mihomo-alpha。mihomo 文档指出,防火墙拦截内核时 system 和 mixed 堆栈无法使用。
- macOS:服务以 launchd 守护进程形式运行,文档还给出了应用包内的 install-service / uninstall-service 用于手动修复。
- Linux:同样在设置中安装服务,文档给出 sudo /bin/install-service 与 sudo /bin/uninstall-service 用于手动修复。
五、首次使用:导入你已有的配置
- 打开「订阅」,粘贴你已有的 HTTPS 订阅链接,或导入本地 YAML 文件;也可以把文件拖进窗口,或通过 clash://install-config?url=<URI 编码后的链接> 的 URL Scheme 导入。本地文件会被复制到 profiles 目录。
- 订阅链接通常含有账号令牌,不要出现在截图、Issue 和聊天记录里。
- 保持「允许无效证书(危险)」关闭。打开后下载订阅时不再校验 TLS 证书,配置更容易被篡改。
- 点击配置卡片使其生效,进入「代理」,选择规则模式,并在主策略组中选中真实节点。
- 打开「系统代理」,用浏览器访问网站,在「连接」中确认请求命中了预期的规则和策略链。
- 只有需要接管不读系统代理的程序时,才开启「虚拟网卡模式」。「开机自启」和「静默启动」只控制启动方式,不代表配置、节点和 DNS 正常。
- v2.5.8 默认端口:混合端口 7897、SOCKS 7898、HTTP 7899,外部控制器 127.0.0.1:9097。实际以「端口设置」中显示的值为准。
六、系统代理与 TUN 怎么选,以及规则/全局/直连
系统代理会写入操作系统的代理设置,遵循该设置的应用才会把请求发到本地混合端口;它依赖应用自觉,且无法代理游戏等 UDP 流量。TUN 在路由层重定向流量,应用无需任何设置,TCP 和 UDP 都会进入内核。两者同时打开不会形成“双重加密”,排错时最好只用一种明确的接管方式。
- 只用浏览器:系统代理 + 规则模式通常足够,也更容易排查。
- 命令行、IDE 组件、游戏、UDP 应用、WSL 或 Docker:通过服务模式使用 TUN,之后再检查 DNS、IPv6 和 UDP。
- 「系统代理守卫」会在其他程序改动系统代理后重新写回;「代理绕过设置」列出不走代理的地址,localhost、127.0.0.1、私有网段和 *.local 应保留在内,不要加入你希望代理的公网地址。
- 也可以使用 PAC 模式;PAC 文件本质上也是路由决策,应像规则集一样审阅。
- 规则模式按配置中的规则匹配;全局模式把所有进入内核的流量交给 GLOBAL 中选定的节点;直连模式让所有流量从本地网络出去。
- 全局模式无法捕获根本没进入内核的应用,而且只有当 GLOBAL 选的是实际节点而不是 DIRECT 时才有意义。
- 虚拟网卡设置包括 TUN 模式堆栈、自动路由、严格路由、自动检测接口、DNS 劫持、路由排除地址和 MTU,每次只改一项并重新测试。
七、配置文件、扩展覆写配置(Merge)与扩展脚本(Script)
远程订阅更新时会被整体覆盖,长期修改应放在扩展中。当前执行顺序为:订阅原文 → 应用设置 → 全局扩展配置 → 全局扩展脚本 → 订阅扩展配置 → 订阅扩展脚本 → 应用设置回写。右键配置卡片即可编辑该订阅的扩展覆写配置或扩展脚本。
从 v2.5.5 起,扩展配置中写出的 dns 字段和顶层 hosts 会整体替换原值(包括 nameserver-policy),不再逐条合并;rules 等列表同样整体替换,tun、sniffer 等嵌套对象则逐项合并。由应用接管的字段,如 mixed-port、allow-lan、mode、ipv6、secret、external-controller、tun.enable 以及在虚拟网卡设置中保存过的字段,即使扩展写了也会在链路末尾被丢弃。
- Proxy 要换成你配置中真实存在、名称完全一致的策略组。
- 规则从上到下匹配,先命中先生效,MATCH 应放在最后。
- PROCESS-NAME 使用各平台的可执行文件名,例如 Windows 上是 git.exe。
- 脚本运行在内置的 JavaScript 引擎(boa_engine)中,不能进行网络和文件读写,但仍能改写所有规则、DNS 服务器和出口,只运行你看得懂的脚本。
- 在「设置 → 当前配置」中查看内核实际加载的最终配置。
# 扩展覆写配置(YAML):只做小而可审阅的修改
dns:
use-system-hosts: false
// 扩展脚本(JavaScript):安全地在最前面插入两条规则
function main(config, profileName) {
const extra = [
"DOMAIN-SUFFIX,example.com,DIRECT",
"PROCESS-NAME,git,Proxy"
];
config.rules = extra.concat(config.rules || []);
return config;
}八、DNS:fake-ip 与 redir-host、nameserver、fallback 与 DoH
mihomo 的 enhanced-mode 可选 fake-ip 或 redir-host,默认是 redir-host。fake-ip 向应用返回 198.18.0.1/16 等保留地址,在内核中维护域名映射,路由可以直接按域名判断;redir-host 返回真实地址。两者都不是加密手段。
nameserver 是默认解析服务器;default-nameserver 必须是 IP,只用于解析 DNS 服务器自身的域名;proxy-server-nameserver 专门解析代理节点域名,避免“先有鸡还是先有蛋”的问题。fallback 配合 fallback-filter 在结果疑似被污染时采用备用结果,其中 geosite 过滤已弃用,应改用 nameserver-policy。respect-rules 让 DNS 连接遵循路由规则,需同时配置 proxy-server-nameserver。
Verge 的「DNS 覆写」开关会在扩展执行前写入应用中的 DNS 设置。如果订阅自带精心配置的 DNS 策略,开启前先对比两者。
- dns.ipv6: false 只是不返回 AAAA 记录,不会关闭操作系统的 IPv6。
- mihomo 文档说明,在 Windows 和 macOS 上 dns-hijack 无法自动劫持发往局域网地址的 DNS 请求,依赖 TUN 时不要把系统 DNS 指向路由器。
- macOS 上开启 TUN 时,Verge 会把系统 DNS 临时改为一个公共 DNS 占位地址,关闭后恢复;v2.5.8 修复了关闭 TUN 或退出后系统 DNS 仍停留在 114.114.114.114 的问题。
- 公司内网域名在 fake-ip 下无法解析时,应添加指向内网 DNS 的 nameserver-policy 或针对性的 fake-ip-filter,而不是关闭整个 DNS 模块。
- nameserver 可以用 #策略组名 指定出口,例如 https://1.1.1.1/dns-query#Proxy,其中 Proxy 必须是真实存在的策略组。
# 当前 mihomo 运行时配置参考(在「当前配置」中核对)
# tun.* 请在虚拟网卡设置对话框中修改,这些字段由 Verge 接管
dns:
enable: true
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- "+.lan"
- "+.local"
default-nameserver:
- 223.5.5.5
proxy-server-nameserver:
- https://dns.alidns.com/dns-query
respect-rules: true
nameserver:
- https://1.1.1.1/dns-query
- https://8.8.8.8/dns-query
tun:
enable: true
stack: mips # 当前 mihomo 默认值;另有 system、gvisor、mixed
auto-route: true
auto-detect-interface: true
strict-route: true # Windows:阻止多网卡 DNS 泄露,可能影响 VirtualBox
dns-hijack:
- any:53
- tcp://any:53九、IPv6、WebRTC、QUIC、浏览器 DoH 与泄露检查方法
- IPv6:Verge 的 IPv6 开关控制内核是否接收 IPv6 流量。如果物理网络有公网 IPv6 而隧道不承载它,IPv6 网站仍可能看到原始地址。要么有意识地让 IPv6 进入内核,要么加以限制,然后分别复测 IPv4 和 IPv6。
- WebRTC:STUN 可能绕过普通应用代理暴露额外地址(RFC 8828)。Chromium 系浏览器可通过禁止非代理 UDP 的策略限制,但可能影响语音视频通话。
- QUIC/HTTP3 使用 UDP。只用系统代理时浏览器通常会回退到 TCP;使用 TUN 时,节点必须真正支持 UDP。要实际验证,不要想当然。
- 浏览器 DoH:浏览器自带的安全 DNS 会绕过内核解析器和 fake-ip。确认 TUN 与 DNS 劫持正常后,再考虑关闭它。
- WebRTC 测试中出现 .local 的 mDNS 候选地址不等于公网 IP 泄露,重点看原始公网 IPv4/IPv6。
- 检查方法:① 打开两个独立的 IP 查询页面,记录 IPv4 和 IPv6 结果;② 做标准和扩展 DNS 测试,看是否出现运营商、路由器或其他预期之外的解析器;③ 做一次 WebRTC 测试;④ 在「连接」中确认这些请求命中了预期的规则和策略链。
- 睡眠唤醒、切换网络、更新订阅、切换节点、重启应用后要重新测试。若停止 Verge 后应用仍能直接上网,说明当前方案不是故障关闭的;TUN 不等于 Kill Switch。
十、终端、Git、SSH、浏览器、IDE、Docker 与 WSL
命令行工具通常不读系统代理。在设置的「复制环境变量类型」中选择 PowerShell、Bash 或 CMD,再从托盘菜单复制对应的环境变量。复制出的地址默认是 127.0.0.1,可通过环境变量 CLASH_VERGE_REV_IP 修改。
- Git 的 http.proxy 不影响 git@ 形式的 SSH 远程仓库,应使用 TUN 或 ProxyCommand。
- Chrome、Edge 跟随系统代理,但还要检查代理扩展、安全 DNS、WebRTC 和 QUIC;Firefox 可手动配置 SOCKS v5 并让 DNS 走代理。
- IDE:编辑器本体、扩展、语言服务器、包管理器和内置终端可能各有代理设置,一个能用不代表其他都能用。
- Windows 商店(UWP)应用默认无法访问 localhost,可在「设置 → UWP 工具」中只为确实需要的应用解除限制。
- Docker 容器和 WSL 有独立网络栈,其中的 127.0.0.1 不是宿主机。优先使用 TUN;确需「局域网连接」时,只在可信网络中按需短时开启。
- 部分 macOS 应用(如商店版 Telegram)不遵守系统代理,需在应用内设置代理或使用 TUN。
# Bash / zsh(仅当前会话,端口以实际为准)
export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897
export all_proxy=socks5://127.0.0.1:7897
# curl 通过代理远程解析域名
curl --proxy socks5h://127.0.0.1:7897 https://example.com/
# Git 仅对 HTTP(S) 生效:设置与撤销
git config --global http.proxy http://127.0.0.1:7897
git config --global --unset http.proxy
# 单个主机的 SSH 走 SOCKS(~/.ssh/config,macOS/Linux)
Host example.com
ProxyCommand nc -X 5 -x 127.0.0.1:7897 %h %p
# PowerShell(当前会话)
$env:HTTPS_PROXY = "http://127.0.0.1:7897"
Remove-Item Env:HTTPS_PROXY十一、日志、连接、网页界面与故障排查清单
- 「连接」显示进程、目标、网络类型、命中规则和策略链;以 DIRECT 结尾表示没有经过节点,完全没有记录说明应用根本没进入内核。
- 「日志」用于查看配置加载、DNS 和 TUN 错误。只在排错时把日志等级调到 Debug,分享前删除域名、IP 和订阅链接。「导出诊断信息」可用于提交问题,提交前先检查内容。
- 「自动关闭连接」会在切换节点时断开旧连接,避免旧 TCP 连接继续走原出口。
- 「网页界面」用外部面板连接外部控制器,需要提供控制器地址和 API 访问密钥。
- Windows 上不开 Verge 就上不了网:通常是异常退出后系统代理没被关闭,在「设置 → 网络和 Internet → 代理」中关闭手动代理。
- 开启 TUN 后断网:检查服务模式、防火墙对 verge-mihomo 的放行、多余的虚拟网卡或其他 VPN,以及 TUN 堆栈;先恢复已知可用的配置,不要一次改很多项。
- 「代理」页面空白:外部控制端口可能被其他程序占用,修改外部控制器端口后重启。
- 开代理后部分网站打不开:检查 7897 端口是否被占用,以及系统 hosts 文件中是否有异常条目。
- Windows 界面打不开:WebView2 缺失或被禁用,重新安装或改用 fixed_webview2 安装包。Linux 在 NVIDIA + Wayland 下异常时,文档给出的规避方法是设置 WEBKIT_DISABLE_DMABUF_RENDERER=1。
十二、安全要点与日常维护
- 只导入可信来源的配置。配置决定哪些流量直连、使用哪些 DNS 服务器、由哪些节点看到你的流量。
- 扩展脚本就是代码。启用前逐行阅读,并保留自己修改过的副本。
- 务必修改 API 访问密钥。v2.5.8 的配置模板会把空密钥填成占位值 set-your-secret,而默认 CORS 列表允许几个在线面板从浏览器调用控制器。
- 外部控制器保持监听 127.0.0.1,绝不要把无认证的控制接口暴露到 0.0.0.0 或公网网卡。
- 除非确有其他设备需要使用本机代理,否则保持「局域网连接」关闭,在公共 Wi-Fi 上尤其如此。
- 「备份设置」支持本地和 WebDAV 备份。备份可能包含订阅链接和节点凭据,只存放在可以接受的位置。
- 使用正式版并及时更新,留意 Release 中的修复说明。AutoBuild 滚动版用于测试,Alpha 内核同样是测试版本。
- 项目隐私政策说明应用不收集用户数据,并列出了应用会发起的网络连接(如检查更新)。
- 请遵守当地法律以及你所使用服务的条款。代理客户端改变的是网络路径,不会改变你的义务。