这次遇到的问题是:Windows 11 电脑使用 Clash Verge 时,开启
TUN 虚拟网卡模式后网络无法正常访问。比较奇怪的是,重启电脑之前 TUN
模式还是正常的,但电脑重启后就无法使用了。
一开始我以为是 Clash Verge 没有管理员权限,或者 TUN 虚拟网卡没有正常创建。
但实际测试后发现,即使右键选择“以管理员身份运行” Clash Verge,TUN
模式依然没有下行速度。
Clash Verge Rev 文档里提到,服务模式的用途是让用户可以用非管理员身份启动
TUN 模式;Windows FAQ 也提到,TUN 模式网络异常可能和多个网卡、网段规则冲突有关。因此这次问题不能简单归因于“没给管理员权限”,更像是 Windows
网络环境里某个状态在重启后异常了。
一、现象
这次现象比较集中:
- Windows 11 重启前,Clash Verge 的
TUN虚拟网卡模式可以正常使用。 - 重启电脑后,再开启
TUN模式,Clash Verge 显示有上行流量,但几乎没有下行速度。 - 关闭
TUN、切换系统代理时,问题表现不同,因此基本可以判断节点本身不是主要原因。 - Clash Verge 日志里出现类似错误:
dns failed: couldn't find ip
- 重新关闭、开启 DNS 覆写后,问题没有解决。
- 清理 Windows DNS 缓存后,问题也没有解决:
ipconfig /flushdns
- 最后执行下面的命令并重启电脑后,
TUN模式恢复正常:
netsh winsock reset
二、先看 TUN 链路里有哪些环节
TUN 模式和普通系统代理不一样。系统代理更像是操作系统或应用之间约定的一组代理配置,应用愿不愿意使用,取决于应用本身。TUN 则会创建虚拟网卡,通过系统路由把流量导入代理内核,因此它更接近一条系统网络链路。
Clash Verge Rev 的名词解释中也把两者区分得很清楚:系统代理依赖应用读取代理配置,而 TUN 模式会通过虚拟网卡和路由把网络请求重定向到本地代理程序。
所以 TUN 出问题时,排查范围至少包括:
- Clash Verge / Clash Verge Rev 本身
- mihomo 内核配置
TUN虚拟网卡- 系统路由
- DNS 劫持
- Fake-IP 映射
- Windows 网络栈
- 防火墙、VPN、虚拟网卡、网络过滤软件
这也是为什么“系统代理可用”不能直接证明“TUN 一定可用”。它们走的链路不一样。
三、为什么一开始怀疑 Fake-IP
日志里的关键线索是:
dns failed: couldn't find ip
从这个报错看,很容易先怀疑 Fake-IP 映射异常。
mihomo 的 DNS 文档中说明,DNS 的 enhanced-mode 可以使用 fake-ip 或
redir-host,示例里的 fake-ip-range 是 198.18.0.1/16,并且文档还说明
TUN 的默认 IPv4 地址也会参考这个范围。
典型配置类似这样:
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
Fake-IP 的核心逻辑是:应用查询域名时,mihomo 不一定返回真实 IP,而是返回一个保留网段里的“假 IP”。后续应用连接这个假 IP 时,mihomo 再根据内部映射表找到原始域名,继续做规则匹配和转发。
如果应用拿到了 Fake-IP,但 mihomo 内部找不到这个 Fake-IP 对应的域名,就可能出现类似 couldn't find ip 的错误。
因此前期排查方向主要集中在这几类:
- DNS 覆写是否真的生效
- Fake-IP 映射表是否异常
TUN的 DNS 劫持是否生效- Windows 重启后是否有旧的网络缓存或网络钩子残留
- 是否有其他 VPN、虚拟网卡、Docker、WSL、Hyper-V、杀毒软件影响网络栈
四、TUN 配置本身也值得检查
mihomo 的 TUN 文档里有几个关键字段:
tun:
enable: true
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
其中:
auto-route会自动设置全局路由,把全局流量路由进TUN网卡。auto-detect-interface会自动选择流量出口接口。dns-hijack会把匹配到的 DNS 连接导入 mihomo 内部 DNS 模块。
如果这些环节中有一个被 Windows 网络栈、虚拟网卡顺序、防火墙或其他网络过滤层影响,就可能出现 TUN 模式下“有上行、没下行”的现象。
Clash Verge Rev 的 Windows FAQ 也提到,打开 TUN 模式后网络异常,可能是系统里有多个网卡,或者网段和配置规则冲突。这个提示很关键:TUN 问题不一定是 Clash 配置文件写错,也可能是系统网络环境在干扰。
五、排查过程
1. 管理员运行 Clash Verge
第一步是右键 Clash Verge,选择“以管理员身份运行”,然后重新开启 TUN 模式。
结果:无效。
这说明问题不是简单的权限不足。日常使用也不建议长期用管理员权限运行 Clash Verge 主程序,更推荐普通权限运行界面,配合 Service Mode 处理 TUN
需要的高权限操作。
2. 重新开关 DNS 覆写
因为日志里出现了:
dns failed: couldn't find ip
所以尝试重新关闭、开启 Clash Verge 的 DNS 覆写。
结果:无效。
这说明问题不只是 DNS 覆写开关状态异常。
3. 清理 Windows DNS 缓存
接着执行:
ipconfig /flushdns
结果:无效。
这一步只能清理 Windows 系统侧的 DNS 缓存,不一定能清掉 mihomo 内部的 Fake-IP 映射、DNS 缓存,也清不到浏览器或其他应用已经持有的连接状态。
mihomo API 文档里有专门的缓存接口,例如:
POST /cache/fakeip/flush:清除 fakeip 缓存POST /cache/dns/flush:清除 dns 缓存
这也说明 Windows 的 ipconfig /flushdns 和 mihomo 内部缓存不是一回事。
4. 执行 Winsock 重置
最后使用管理员 PowerShell 执行:
netsh winsock reset
然后重启电脑。
结果:TUN 模式恢复正常,下行速度恢复。
Microsoft Learn 对 netsh 的说明是,它是 Windows 上用于配置、管理、监控网络组件的命令行工具,并且 netsh 包含 winsock 子上下文。Windows Sockets
2 文档则说明,Winsock 是 Windows 网络能力的重要接口层,位于应用 API 和协议栈之间。
所以这次更合理的判断是:问题很可能出在 Windows 网络栈 / Winsock 相关状态,而不是 Clash Verge 配置文件本身损坏。
六、最终解决方法
这次真正有效的方法是:
- 以管理员身份打开 PowerShell 或命令提示符。
- 执行:
netsh winsock reset
- 重启电脑。
- 重新打开 Clash Verge。
- 开启
TUN虚拟网卡模式。
如果想顺手做一次更完整的网络清理,也可以按下面顺序执行:
ipconfig /flushdns
netsh winsock reset
netsh int ip reset
然后重启电脑。
不过在我的这次场景里,真正起作用的是:
netsh winsock reset
七、为什么这个方法可能有效
这次问题的关键点是:TUN 模式不是普通的系统代理,它会涉及虚拟网卡、路由、DNS
劫持、Fake-IP、Windows 网络栈和防火墙过滤。
当 Windows 网络栈中的 Winsock 相关状态、网络过滤层、代理/VPN 残留状态异常时,就可能变成下面这条链路:
Application
-> TUN interface
-> DNS / Fake-IP / route handling
-> mihomo forwarding
-> remote server
-> response path
其中任意一段状态异常,都可能导致应用已经发出了请求,Clash Verge 也统计到了上行,但响应无法按预期回来,于是表现为“有上行、几乎没有下行”。
执行 netsh winsock reset 后,相当于把 Winsock 相关状态恢复到更干净的起点。对这次场景来说,它清掉了重启后残留或损坏的系统网络状态,所以 TUN
模式重新恢复正常。
这不是说所有 TUN 问题都应该直接重置 Winsock,而是说:当管理员运行、DNS 覆写、ipconfig /flushdns 都无效,并且日志反复出现 dns failed: couldn't find ip
时,Winsock 重置值得纳入排查顺序。
八、后续建议
第一,不要同时开启多个 TUN / VPN 类软件。例如 Clash Verge TUN、v2rayN
TUN、sing-box TUN、WireGuard、Tailscale、ZeroTier、AdGuard VPN、
Proxifier 等最好不要同时运行。
第二,Clash Verge 日常不建议一直用管理员权限运行。更推荐普通权限运行 Clash
Verge 主程序,然后使用 Service Mode 处理 TUN 所需的高权限操作。
第三,如果再次出现类似问题,可以按下面顺序排查:
ipconfig /flushdns
net stop hns
net start hns
netsh winsock reset
其中 net stop hns 和 net start hns 是重启 Windows 的 Host Network
Service。Clash Verge Rev 的 Windows FAQ 中提到,遇到某些 socket 权限相关问题时,可以重启 HNS 服务。
第四,如果日志仍然大量出现 dns failed: couldn't find ip,可以继续检查 mihomo
的 DNS 和 TUN 配置:
tun:
enable: true
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
如果怀疑 Fake-IP 映射异常,也可以尝试开启 Fake-IP 映射持久化:
profile:
store-selected: true
store-fake-ip: true
mihomo 全局配置文档说明,store-fake-ip 用于保存 Fake-IP 映射表,下次同一域名再次连接时继续使用原有映射地址。
九、结论
这次 Win11 + Clash Verge TUN 模式没有下行速度的问题,最终不是通过重装
Clash Verge、重新开关 DNS 覆写、管理员运行程序解决的,而是通过:
netsh winsock reset
并重启电脑解决。
我的结论是:这类问题不一定是 Clash Verge 或节点本身的问题,也可能是 Windows
网络栈、Winsock、VPN/代理残留、虚拟网卡或网络过滤层异常导致的。尤其是当日志里出现 dns failed: couldn't find ip,并且 TUN
模式有上行但没有下行时,可以把 Winsock 重置作为一个重要排查方向。