Clash Verge Rev 里「系统代理能用」和「TUN 能用」不是一件事。官方快速开始文档说,系统代理是自动修改操作系统代理设置;TUN 模式是在系统里安装虚拟网卡,用来处理不走系统代理的应用。
所以排查顺序要从轻到重:先系统代理,再 Service Mode,最后 TUN。
先跑通 7890 系统代理
把 TUN、Service Mode、Bypass 都关掉,只保留系统代理。默认常见端口是 mixed-port: 7890,先用这个端口做基线。
Windows PowerShell:
curl.exe -x http://127.0.0.1:7890 https://example.com -I
netstat -ano | findstr 7890
macOS/Linux:
curl -x http://127.0.0.1:7890 https://example.com -I
lsof -i :7890
这一步不通,先回到订阅、Profile 和端口。系统代理都没跑通时,开 TUN 只会把错误藏得更深。
Service Mode 要看服务,不看按钮
Windows 上先查服务名。GitHub issue #6512 里,用户和维护者都提到了 clash_verge_service:
Get-Service -Name clash_verge_service
Get-Service | Where-Object {$_.Name -match "clash|verge|mihomo"}
日志里这几行值得注意:
Some issue with service IPC Path
系统找不到指定的文件。 (os error 2)
这类日志说明 GUI 和服务进程之间的通信没准备好。重新安装 Service Mode 前,先退出 Clash Verge Rev,确认旧服务是否还在,再以管理员权限启动一次客户端。
Linux 用户如果遇到类似问题,可以对照 issue #6978。那个 issue 里报告了服务 socket 路径不一致:服务创建在 /tmp/clash-verge-service-ipc-test/service.sock,GUI 查的是 /tmp/verge/clash-verge-service.sock,结果界面报 IPC path not ready。这不是订阅问题。
TUN stack 只改一个变量
Mihomo TUN 文档给了三个 stack:
tun.stack | 含义 | 排错建议 |
|---|---|---|
system | 使用系统网络栈 | 权限和路由问题更容易暴露 |
gvisor | 用户态网络栈 | Windows 桌面端常作为基线 |
mixed | TCP 用 system,UDP 用 gVisor | 稳定后再试,不要首轮混测 |
最小配置大概是这样:
tun:
enable: true
stack: gvisor
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
dns-hijack 是把匹配到的 DNS 连接交给 Mihomo 内部 DNS。文档也提醒,macOS/Windows 不能自动接管 LAN DNS 请求,Android Private DNS 也会影响劫持。桌面端排错时只看本机流量,不要顺手把路由器和手机一起纳入测试。
Bypass 和自定义路由最后再加
Clash Verge Rev 的 Bypass 文档把排除方法分成系统代理排除、TUN 流量排除、自定义路由规则。先别急着写复杂规则。
如果要测试排除,用一条确定的规则就够:
rules:
- IP-CIDR,10.11.12.0/24,DIRECT,no-resolve
- DOMAIN-SUFFIX,example.com,DIRECT
- MATCH,默认策略
TUN 刚修好时,先确认 Dashboard 能看到连接,再确认这条规则命中。不要同时改 tun.stack、dns-hijack、规则和订阅。
日志关键词怎么读?
| 日志片段 | 指向位置 | 第一动作 |
|---|---|---|
Some issue with service IPC Path | GUI 与服务通信 | 查服务是否存在,重装 Service Mode |
os error 2 | 路径或文件不存在 | 看服务 IPC 路径和安装目录 |
IPC path not ready | 服务 socket 未就绪 | Linux 对照 socket 路径 |
failed to create tun device | 虚拟网卡创建失败 | 查权限、安全软件、旧网卡 |
dns-hijack 无连接 | DNS 没进 TUN | 暂时关闭严格路由或换 stack 测试 |
日志要和当前开关对应。你如果一次打开 Service Mode、TUN、DNS 覆写、Bypass,日志里出现十几种错误,最后很难判断第一处失败在哪里。
怎么确认已经修好?
按这个顺序复测:
- 关闭 TUN,
curl -x http://127.0.0.1:7890能通。 - 打开 Service Mode,Windows 服务处于 Running。
- 打开 TUN,系统出现虚拟网卡或对应网络接口。
- 打开同一个网页,Dashboard 能看到连接。
- 日志里不再出现 IPC、TUN device、DNS hijack 相关错误。
确认后再保存 Bypass 和自定义路由。能少动一项就少动一项。
相关阅读
FAQ
Service Mode 开启了为什么 TUN 还是灰色?
服务进程存在不等于 GUI 已完成 IPC 握手。日志出现 IPC path not ready 或 socket 路径不一致时,界面会把服务当成未就绪。
Windows 上怎么确认服务真的装好了?
在 PowerShell 执行 Get-Service -Name clash_verge_service,再看 Clash Verge Rev 日志。issue #6512 里出现过 Some issue with service IPC Path 和 os error 2。
TUN stack 选 system、gvisor 还是 mixed?
Mihomo 文档列出 system、gvisor、mixed 三种。排错时一次只换一个值;能启动但 DNS 异常时,再看 dns-hijack 和 strict-route。
系统代理能用但 TUN 不能用,订阅要换吗?
先不换。系统代理能用说明订阅和出站大概率正常,TUN 失败更常见于服务权限、虚拟网卡、DNS 劫持或路由入口。