引言:为什么访问 Gemini 需要开启 TUN 模式?
如果你用过一些 AI 服务(比如 Google 的 Gemini),可能会遇到一个奇怪的现象:浏览器明明设置了代理,也能正常访问 Google,但 Gemini 的 App 或某些桌面客户端却死活连不上。这时候,老手往往会告诉你:"开启 TUN 模式试试。" 果然,一开就好。
这背后,就是 TUN 模式的价值所在。传统的代理方式只能覆盖"听话"的应用程序,而 TUN 模式能从操作系统层面"劫持"所有流量,让任何软件(包括那些不给你设置代理选项的 App)乖乖走代理通道。
在展开 TUN 模式之前,我们先复习一下------没有代理时,一次 HTTP 请求到底是怎么完成的。
一、一次 HTTP 请求的完整过程(无代理)
当你在浏览器输入 https://www.google.com 并回车,背后发生了这些事:
简单概括为四个阶段:
- DNS 解析 :把域名
www.google.com翻译成 IP 地址(就像从通讯录找到电话号码)。这一步如果失败,后续全部免谈。 - TCP 连接:与目标服务器建立三次握手(拨通电话)。
- TLS 握手:如果是 HTTPS,还需要协商加密密钥(对通话内容加密)。
- HTTP 请求/响应:发送请求头、请求体,接收服务器返回的数据。
这个过程中,你的真实 IP 地址会暴露给 Google,你的 ISP(电信/移动)也能看到你访问了 google.com。这就是直连。
二、普通代理模式原理
代理的本质是"中间人"------你让第三方帮你取数据,你再从第三方那里拿。
常见代理类型
- HTTP 代理:只能代理 HTTP/HTTPS 流量,需要浏览器或应用显式支持。
- SOCKS5 代理:工作在更底层,可以代理 TCP/UDP 流量,但同样需要应用程序主动配合。
- 透明代理:不需要应用配置,但通常需要在路由器上设置。
普通代理的工作流程(以浏览器配置 SOCKS5 为例)

普通代理的局限
- DNS 泄露风险 :浏览器解析
google.com时,可能直接使用本地 DNS 服务器(ISP 提供的),导致你的 DNS 查询明文暴露。虽然后续数据走了代理,但"你要访问 Google"这件事已经被记录。 - 应用兼容性差 :不是所有软件都支持设置代理。命令行工具、UWP 应用(Windows 商店应用)、某些游戏、以及 Gemini 桌面客户端 根本不读浏览器的代理配置。它们会直接尝试连接,结果就是连不上。
- UDP 支持弱:很多代理协议对 UDP 转发支持不好,影响 DNS 查询、游戏语音等。
这就是为什么你需要 TUN 模式。
三、TUN 模式原理
TUN 模式的核心思想是:在操作系统内核里插入一块虚拟网卡,然后修改路由表,让所有流量都先经过这块虚拟网卡,再由代理客户端统一处理。
3.1 什么是虚拟网卡?
虚拟网卡是一个完全由软件模拟出来的网络设备。对操作系统和应用程序来说,它和真实的 Wi-Fi 或以太网卡长得一模一样------有自己的 IP 地址、子网掩码,也能收发数据包。但实际上,它没有连接任何物理线路,所有"收发"动作都由代理软件的驱动程序接管。
开启 TUN 模式后,Clash、V2Ray、sing-box 等客户端会:
- 创建一张虚拟网卡 (在 Linux 下叫
tun0,Windows 下叫Wintun)。 - 修改系统路由表 ,把默认路由(
0.0.0.0/0)指向这张虚拟网卡。这意味着任何发往互联网的数据包,都会先被送到虚拟网卡。 - 启动一个常驻进程,从虚拟网卡读取数据包,然后按照代理规则(如绕过国内 IP、只代理境外流量)处理。
3.2 TUN 模式下的完整时序图

3.3 TUN 模式如何解决 DNS 泄露?
关键点在于:DNS 查询包(UDP 53 端口)也是 IP 数据包,同样会被路由表送进虚拟网卡 。代理客户端在虚拟网卡出口截获到这个包后,绝不会交给本地系统去解析,而是:
- 要么自己通过加密 DNS(DoH/DoT)直接查询,
- 要么将 DNS 包封装后发给代理服务器,让代理服务器在境外解析。
这样,你的本地 ISP 看到的只有你和代理服务器之间的加密流量,完全看不到你查询了 google.com。
3.4 TUN 模式如何让"任何软件"都走代理?
因为路由表的修改是操作系统级别的。无论你打开的是浏览器、命令行、Windows 更新、还是 Gemini 客户端,当你试图连接互联网时,操作系统只看路由表:默认网关是虚拟网卡,那就把数据包发给虚拟网卡。应用程序根本不需要知道代理的存在。
这就是为什么 Gemini 等"不听话"的软件,开启 TUN 模式后就能正常工作了。
四、总结:普通代理 vs TUN 模式
| 维度 | 普通代理 (HTTP/SOCKS5) | TUN 模式代理 |
|---|---|---|
| 工作原理 | 应用程序主动将数据发给代理客户端 | 操作系统路由强制所有流量经过虚拟网卡 |
| 兼容性 | 需要应用支持代理配置 | 所有应用自动支持,无需配置 |
| DNS 泄露风险 | 高(浏览器可能本地解析) | 低(DNS 包也被虚拟网卡捕获,可远端解析) |
| UDP 支持 | 依赖代理协议,SOCKS5 支持但复杂 | 完整支持,因为处理的是 IP 层数据包 |
| 性能开销 | 较低(少一层封装) | 稍高(多一次虚拟网卡读写 + 路由决策) |
| 典型场景 | 浏览器 + 少数支持代理的软件 | 全局代理、游戏、UWP 应用、命令行、疑难软件 |
什么时候该用 TUN 模式?
- ✅ 你遇到某些软件(如 Gemini 客户端、Spotify 桌面版、Windows 商店应用)无法通过普通代理访问。
- ✅ 你担心 DNS 泄露,希望隐私保护更彻底。
- ✅ 你需要转发 UDP 流量(游戏、VoIP、DNS over VPN)。
- ✅ 你不想为每个软件手动配置代理,追求"开箱即用"。
什么时候没必要用 TUN 模式?
- ❌ 你只用浏览器上网,且浏览器已配置好代理插件(如 SwitchyOmega)。
- ❌ 你的设备性能较差(TUN 模式会有额外 CPU 开销)。
- ❌ 你同时使用多个 VPN/代理软件,虚拟网卡可能冲突。
最后
TUN 模式并非"银弹",但它确实是解决"全局代理"和"DNS 泄露"最优雅的方案之一。很多现代代理客户端(Clash Meta、sing-box、WireGuard 等)都默认支持 TUN 模式。如果你一直困扰于某些软件不走代理,不妨试试打开它。