TUN 模式是 Clash 区别于传统系统代理模式的核心能力——它通过虚拟网卡接管操作系统三层流量,实现进程级透明代理。然而 TUN 也是配置出错率最高的模块,本文汇总编辑部在 200+ 工单中归纳的六大类故障及其解法。🛰️
Clash TUN 工作原理 — 从数据包进入到规则匹配
启用 TUN 后,mihomo 通过 wintun(Windows)或 utun(macOS/Linux)创建虚拟网卡,配合 auto-route 写入系统路由表。所有出站流量先进入 TUN 设备,由内核的 IP 栈解析后送入规则引擎,再根据匹配结果选择 DIRECT 或代理出站。
strict-route 详解 — 为什么开启后局域设备不可达
strict-route: true 强制所有流量(含局域)走 TUN 设备,再由规则决定是否 DIRECT。若规则集缺少局域绕过条目,表现为:打印机不可发现、NAS 无法访问、智能家居 App 离线。⚠️
标准局域绕过规则(置于 rules 最顶部)
rules: - IP-CIDR,127.0.0.0/8,DIRECT - IP-CIDR,10.0.0.0/8,DIRECT - IP-CIDR,172.16.0.0/12,DIRECT - IP-CIDR,192.168.0.0/16,DIRECT - IP-CIDR,224.0.0.0/4,DIRECT - IP-CIDR,255.255.255.255/32,DIRECT
fake-ip 与 TUN 的联动陷阱
fake-ip 模式下 DNS 返回 198.18.0.0/16 段的假 IP,TUN 截获后通过域名嗅探(sniff)还原真实目标。若 sniff 未覆盖目标协议(如部分 UDP 游戏流量),会出现「能 ping 通但应用连不上」的诡异现象。
- 确保
sniff.override-destination: true已开启 - 游戏类应用将相关域名加入
fake-ip-filter - 或在 dns 段切换为
enhanced-mode: redir-host(牺牲部分性能换取兼容性)
Windows wintun 特有问题
Windows 11 24H2 起,wintun 驱动签名策略收紧。若 TUN 启动报「无法创建适配器」,以管理员身份执行:
netsh int ipv4 reset netsh winsock reset # 重启后重新安装 wintun.dll(Verge Rev 会自动处理)
另一个高频问题:Hyper-V 与 wintun 争抢虚拟网卡资源。若安装了 WSL2 或 Docker Desktop,需在「网络连接」中确认 wintun 适配器未被 Hyper-V 虚拟交换机劫持。🪟
macOS utun 权限与系统扩展
macOS 要求 TUN 类应用注册 System Extension。首次启用时弹出「允许添加 VPN 配置」对话框。若静默失败,检查 /Library/Logs/DiagnosticReports/ 中是否有 nesessionmanager 崩溃日志。🍎
TUN 推荐配置模板(mihomo v1.18+)
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
strict-route: false
dns-hijack:
- any:53
inet4-address: 198.19.0.1/30
生产环境建议 strict-route: false + 完善的局域绕过规则,而非盲目开启 strict-route。这是工单数据中解决率最高的组合(87% 的 TUN 故障由此修复)。
性能调优 — TUN 模式的吞吐天花板
| 平台 | TUN 吞吐 | 系统代理吞吐 | 瓶颈 |
|---|---|---|---|
| Windows 11 (i7-12700) | ~920 Mbps | ~850 Mbps | wintun 驱动 |
| macOS M2 | ~1.1 Gbps | ~900 Mbps | utun 栈 |
| RPi 4B (Linux) | ~280 Mbps | ~310 Mbps | CPU 加密 |
延伸阅读
→ 规则与 TUN 联动 · → Linux 网关 TUN 部署