Clash TUN 模式开了没用 / 不生效怎么排查

"我明明把 TUN 开关打开了,可命令行、游戏还是不走代理。" 这是 TUN 最典型的故障。开关亮着 ≠ TUN 真的接管了流量——它可能因为权限、虚拟网卡、DNS、冲突等原因悄悄没生效。这篇给一份从快到慢的排查顺序。先搞懂 TUN 是什么再排,事半功倍:TUN 模式怎么开

先确认 TUN 真没生效

别凭感觉。找一个不读系统代理的程序来验证——最简单的是命令行 curl(不设任何代理环境变量)去访问一个海外地址。能通,TUN 就在工作;不通,才是真有问题。这一步能排除"其实早就好了,是别的问题"的误判。

$ curl -I https://www.google.com HTTP/2 200 ← 能通=TUN 生效;超时/拒绝=没生效

命令示意图用不读系统代理的 curl 验证 TUN 是否真的接管了全局流量。

权限 / 服务模式

TUN 要操作虚拟网卡,必须有足够权限。最常见的"开了没用"就是权限没给到位

  • Windows:装一下客户端的「服务模式(Service Mode)」,或以管理员身份运行。没有它,TUN 开关可能点了就自动弹回。
  • macOS:首次开启会请求授权网络扩展,去「系统设置」里允许。
  • Linux:给内核 setcap 或装服务模式,见 Linux 教程

判断依据:如果 TUN 开关一打开就自己关回去,或日志里有权限/管理员相关报错,基本就是这一项。

虚拟网卡没起来

TUN 生效时系统里会多出一块虚拟网卡(Windows 上常见名字含 Mihomo/wintun,macOS/Linux 上是 utun/tun)。去系统网络适配器列表看一眼有没有它。没有,说明网卡根本没创建成功——回到权限那一步,或重装一次客户端的网卡驱动/服务组件。

DNS 没被接管

有时 TCP 通了、但因为 DNS 没跟着接管,域名解析还是失败,表现为"IP 能 ping 通、网址打不开"。确保 TUN 配置里 DNS 劫持是开的(dns.enable: true 且让 TUN 处理 DNS)。这块和 DNS 配置DNS 泄漏修复是连着的。

冲突与防火墙

  • 抢网卡:同时开着别的 VPN/代理工具的 TUN,会互相抢全局流量。先把其它的关掉。
  • 防火墙/杀软:安全软件可能拦截虚拟网卡或内核进程,导致 TUN 形同虚设,见 与防火墙/杀软冲突
  • 系统代理还开着:TUN 和系统代理理论上能共存,但同时开偶尔会让流量走向变乱。排查时建议只留 TUN、关掉系统代理,单独验证。
最快的一招:关掉 TUN → 完全退出客户端 → 以管理员/授权方式重开 → 装好服务模式 → 再开 TUN。九成"开了没用"在这套重来一遍后就正常了。

客户端太旧也可能有 TUN bug

到下载中心更新到最新客户端,部分 TUN 兼容问题升级即可解决。

前往 Clash 下载中心
⚠️ 免责声明:本文为开源软件使用教程,本站不提供任何节点、VPN 或机场服务。请遵守所在地区法律法规,合理合法使用网络工具。