什么是 TUN 模式?
要理解 TUN 模式,首先需要了解操作系统网络通信的基本原理。当应用程序需要访问网络时,它会创建系统调用,请求操作系统内核处理网络数据。传统代理(包括浏览器代理)只在应用层工作,需要应用程序主动"告诉"系统代理的存在。
TUN 模式则不同。它在网络层创建一块虚拟网卡(virtual network interface),操作系统所有的网络流量都会经过这块虚拟网卡。这意味着所有应用程序的网络请求都会被 Clash 接管,无论这个程序是否支持系统代理。
为什么需要 TUN 模式?
让我们用一个真实的场景来说明这个问题:
我们团队的开发环境中使用 Docker 容器来运行各种服务。当需要从 Docker Hub 拉取镜像时,发现速度非常慢。尝试设置 HTTP_PROXY 环境变量后,命令行工具可以走代理了,但新的问题出现了:每个新的 Dockerfile 都要记得添加代理设置,更糟糕的是,某些基础镜像内部的构建工具完全忽略环境变量。
直到我们开启了 TUN 模式。所有问题迎刃而解——Docker 守护进程、容器内的应用、甚至那些"顽固"的构建工具,都自动走分流规则了。
TUN 模式 vs 系统代理
| 对比项 | 系统代理 | TUN 模式 |
|---|---|---|
| 流量接管范围 | 仅支持代理的应用 | 所有应用 |
| 命令行工具 | 不支持 | 完美支持 |
| Docker 容器 | 需要配置 | 自动接管 |
| 游戏/客户端软件 | 通常不支持 | 支持 |
| 配置复杂度 | 简单 | 中等 |
| 性能开销 | 极低 | 约 3-5% |
TUN 模式的局限性
没有任何方案是完美的,TUN 模式也有它的局限性:
- 性能开销:虚拟网卡会增加约 3-5% 的 CPU 占用和少量延迟
- 权限要求:需要管理员/root 权限来创建虚拟网卡
- 兼容性:极少数老旧程序可能与 TUN 模式冲突
- DNS 泄漏:需要正确配置 dns-hijack 才能避免 DNS 泄漏
Windows 平台配置
前置条件
- 安装 Clash Verge for Windows
- 安装 Visual C++ Runtime(通常 Windows 10/11 已内置)
- 管理员权限
配置步骤
在 Clash Verge 中开启 TUN 模式非常简单:
- 打开 Clash Verge,进入「设置」页面
- 找到「TUN 模式」选项
- 将开关设置为「开」
- 首次开启时会提示安装服务组件,点击「安装」
高级配置可以编辑配置文件:
tun:
enable: true
stack: system # 推荐使用 system,兼容性好
dns-hijack:
- 8.8.8.8:53
- 1.1.1.1:53
auto-route: true
auto-detect-interface: true
# 推荐同时配置 DNS
dns:
enable: true
enhanced-mode: fake-ip # 强烈推荐
fake-ip-range: 198.18.0.1/15
nameserver:
- 223.5.5.5
- 119.29.29.29
macOS 平台配置
macOS 上的 TUN 模式需要 macOS 11 (Big Sur) 或更高版本。
配置步骤
- 打开 Clash Verge,进入「设置」
- 启用「TUN 模式」
- macOS 会弹出授权提示,点击「允许」
- 可能需要在「系统偏好设置」-「安全性与隐私」中完成授权
推荐配置
tun:
enable: true
stack: system # macOS 上 system 性能最好
dns-hijack:
- any:53
auto-route: true
bypass-lan: true
Linux 平台配置
Linux 使用 gvisor 作为 TUN 栈,推荐配置如下:
tun:
enable: true
stack: gvisor # Linux 推荐使用 gvisor
dns-hijack:
- 8.8.8.8:53
auto-route: true
auto-detect-interface: true
常见问题排查
问题:开启 TUN 后无法访问内网
这是最常见的问题。TUN 模式接管了所有流量,包括内网请求。解决方法是在配置中添加内网直连规则:
rules:
# 内网直连
- DOMAIN-SUFFIX,local,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
# 其他流量
- MATCH,Proxy
问题:TUN 模式无法开启
检查以下几点:
- 是否以管理员权限运行
- 服务组件是否正确安装
- 是否有其他 VPN 软件冲突(建议关闭后重试)
问题:DNS 解析异常
确保使用了 Fake-IP 模式,并正确配置了 dns-hijack。Fake-IP 会为每个域名分配一个假IP,避免 DNS 污染。
总结
TUN 模式是 Clash Verge 最强大的功能之一。它让所有应用程序都能自动走代理,无需逐个应用配置。如果你还在使用系统代理,强烈建议切换到 TUN 模式——你不会后悔的。
当然,TUN 模式不是银弹。如果你只是需要代理浏览器流量,系统代理已经足够。只有当你需要代理命令行工具、Docker、游戏等"不听话"的程序时,TUN 模式才是最佳选择。