🔴 现象:TUN 开启后,网络彻底瘫痪
你按照教程在 Clash Verge Rev 中启用了 TUN 模式,期待获得全局代理的无缝体验。然而,开关打开后,浏览器无法加载任何网页,终端 ping 也超时,甚至连原本正常的本地网络访问都消失了。关闭 TUN 后一切恢复如初。这种“开了 TUN 就没网,关了就有网”的问题,在许多用户的初次配置中屡见不鲜。
许多人的第一反应是“节点挂了”或“代理配置错了”,但实际上,只要系统代理正常,节点本身通常是可用的。最常见的故障原因是 DNS 劫持冲突。你的本地 DNS 服务和 TUN 虚拟网卡在争夺 DNS 解析权,导致网络请求在第一步就卡死。
🧬 根因:DNS 劫持冲突是如何发生的?
要理解这个问题,我们需要先了解 TUN 模式的工作原理。启用 TUN 后,Clash Verge Rev 会在系统内核层面植入一张虚拟网卡,并修改路由表,将所有流量导向这张虚拟网卡。其中,DNS 请求(UDP 53端口)也被强制接管,以便实现 DNS 优化 和防污染。
问题在于,操作系统或某些安全软件(如 Windows Defender、火绒、360 等)可能已经将自己的 DNS 服务绑定到了 127.0.0.1:53 或其它地址。当 TUN 模式试图劫持 DNS 请求时,就会产生链路冲突:
- Clash 内核想要将 DNS 包发往远程加密服务器,但本地 DNS 服务已抢先拦截并返回了错误响应(如 127.0.0.1 或内网地址)。
- 或者,TUN 虚拟网卡捕获了 DNS 包,却被本地防火墙或 DNS 代理再次捕获,形成循环重定向,导致超时。
这种冲突的典型表现是:你可以 ping 通 IP 地址(如 8.8.8.8),但 ping 域名(如 google.com)失败,浏览器显示“DNS_PROBE_FINISHED_NO_INTERNET”或“ERR_NAME_NOT_RESOLVED”。如果你在 Fake‑IP 模式 下,则可能表现为所有连接超时,因为虚拟 IP 无法被解析。
🔍 三步诊断:确认是 DNS 劫持冲突
在进行任何修改之前,先通过以下步骤准确定位问题:
检查 IP 连通性
在命令行执行 ping 8.8.8.8。如果能通,说明网络层正常,问题出在 DNS。
测试域名解析
nslookup google.com 或 dig google.com。若返回超时或服务器为 127.0.0.1,则 DNS 被劫持。
查看 Clash 日志
在 Clash Verge Rev 的“日志”页面搜索“dns”或“timeout”,观察是否有 DNS 相关报错。
一旦确认 DNS 无法正常解析,且 IP 层通信正常,就可以推断为 DNS 劫持冲突。接下来,我们提供三种修复方案,从简单到彻底,你可以根据实际环境选择。
🛠️ 三种修复方案
方案一:关闭本地 DNS 服务 (Windows)
Windows 系统内置的 DNS Client 服务经常是冲突元凶。你可以通过以下命令临时停止并禁用:
重启 Clash Verge Rev 后,TUN 模式的 DNS 劫持通常能正常工作。如果不想禁用,也可以在 Clash 的 DNS 设置中将 listen 改为 0.0.0.0:5353 等非 53 端口,并配置系统防火墙将 UDP 53 流量转发到该端口(稍复杂,建议优先方案二)。
方案二:切换 TUN 堆栈为 gVisor
在 Clash Verge Rev 的 TUN 设置中,将“堆栈”从 System 切换为 gVisor。gVisor 是一种用户空间网络栈,不依赖操作系统内核的协议栈实现,可以有效避免与本地 DNS 服务的端口冲突。
切换后重启 TUN 模式,大部分 DNS 劫持冲突就会消失。如果仍存在问题,进入方案三。
方案三:修改 Clash DNS 监听与防火墙规则
如果上述方案无效,你可能需要手动指定 DNS 监听地址,并在系统防火墙中放行。在配置文件中添加如下 dns 段:
然后,在 Windows 防火墙中新建入站规则,允许 UDP 端口 7874。同时,确保你的安全软件没有拦截 Clash 的网络访问。如果还是不行,可以参考 常见问题 中的更多排查技巧。
🧘 预防与长效配置建议
为了避免每次开启 TUN 都陷入断网恐慌,你可以采取以下预防措施:
- 固定使用 gVisor 堆栈:除非有特殊需要,gVisor 是更稳妥的选择。
- 创建配置文件快照:在 Clash Verge Rev v2.5.2 中,你可以保存一套经过验证的配置快照,出问题时一键回滚。参考 v2.5.2 新特性解读。
- 避免安装多个代理/加速软件:VPN、网游加速器、抓包工具等都可能安装自己的虚拟网卡和 DNS 代理,与 Clash 产生冲突。尽量只保留一个网络接管软件。
- 定期检查 DNS 服务器状态:使用
nslookup -q=ns google.com 8.8.8.8等命令验证上游 DNS 可用性。
如果问题依旧,不妨检查一下 配置教程 中的完整参数,确保 tun 字段的 auto-route 和 auto-detect-interface 设置正确。这些细节往往会影响 TUN 的稳定性。
❓ 常见问题延伸
Q: 关闭本地 DNS 服务会影响其他程序吗?
Windows DNS Client 主要提供缓存功能,关闭后系统会直接向配置的 DNS 服务器查询,速度略降但几乎无感。如果介意,可以在 Clash 中配置 DNS 缓存 代替。
Q: gVisor 堆栈下 UDP 游戏会受影响吗?
不会。gVisor 对 UDP 的支持已经非常成熟,v2.5.2 还对 UDP 转发做了优化,游戏延迟甚至比 system 堆栈更低。
Q: 手机端开启 TUN 也断网怎么办?
Android/iOS 的 VPN 接口机制不同,通常是因为权限不足或 APN 设置错误。请确保 Clash 已获得 VPN 权限,并检查 APN 代理是否关闭。具体可查阅 开启 TUN 模式 一文。
Q: 修复后依然时不时断流?
可能是网络环境波动导致规则失效。尝试在规则中添加一条 DOMAIN-KEYWORD,clash,DIRECT 防止循环,同时检查 Rule Provider 是否更新正常。