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 桌面端常作为基线
mixedTCP 用 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.stackdns-hijack、规则和订阅。

日志关键词怎么读?

日志片段指向位置第一动作
Some issue with service IPC PathGUI 与服务通信查服务是否存在,重装 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,日志里出现十几种错误,最后很难判断第一处失败在哪里。

怎么确认已经修好?

按这个顺序复测:

  1. 关闭 TUN,curl -x http://127.0.0.1:7890 能通。
  2. 打开 Service Mode,Windows 服务处于 Running。
  3. 打开 TUN,系统出现虚拟网卡或对应网络接口。
  4. 打开同一个网页,Dashboard 能看到连接。
  5. 日志里不再出现 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 Pathos error 2

TUN stack 选 system、gvisor 还是 mixed?

Mihomo 文档列出 systemgvisormixed 三种。排错时一次只换一个值;能启动但 DNS 异常时,再看 dns-hijackstrict-route

系统代理能用但 TUN 不能用,订阅要换吗?

先不换。系统代理能用说明订阅和出站大概率正常,TUN 失败更常见于服务权限、虚拟网卡、DNS 劫持或路由入口。