Clash Meta 下载站mihomo 客户端下载

TUN 模式详解:原理与开启方法

代理模式 2026 年 7 月 17 日 4 分钟阅读
本文目录

系统代理靠的是应用自觉——愿意读系统设置的程序才会把流量交出来。TUN 模式换了一条路子:它在系统里创建一块虚拟网卡,把路由表改成「所有 IP 流量优先走这块网卡」,然后由 mihomo 内核在网络层拆包、按规则分流。应用不需要知道代理的存在,流量照样被接管。

这就是为什么「浏览器能上网、某个软件死活连不上」的问题,开了 TUN 模式往往就消失了。代价是它要动系统的网络栈,需要更高权限,出问题时排查也更麻烦。下面把原理、开启方法和常见故障讲清楚。

TUN 模式的工作原理

TUN 是操作系统提供的一种虚拟网络设备,工作在三层(IP 层)。代理客户端开启 TUN 后大致做三件事:向系统申请创建一块虚拟网卡;修改路由,让默认出口指向它;内核从这块网卡读取原始 IP 数据包,解析出目标地址和端口,再按分流规则决定走哪个节点或直连。

和系统代理的根本差别就在这里:系统代理是操作系统层的一条声明,应用自愿遵守;TUN 是网络层的实际接管,流量根本没有绕过去的机会。它也因此能处理 UDP、能覆盖那些压根不读代理设置的程序。两者的完整对比见 TUN 模式与系统代理怎么选

什么时候该开 TUN

  • 某个应用不读系统代理设置,单独走了直连——游戏客户端、部分桌面软件常见。
  • 需要给命令行工具全局接管,又不想给每个终端逐一设置 http_proxy 环境变量。
  • 需要代理 UDP 流量的场景。
  • 希望整机流量统一按一套规则分流,不再逐个应用操心。

反过来,如果你只是浏览网页、日常办公,系统代理已经够用,没必要为此提升权限。系统代理的能力边界见 系统代理是什么

开启前提:权限与服务组件

创建虚拟网卡、改路由表都是特权操作,各系统的要求不一样:

  • Windows:需要以管理员权限运行,或安装客户端提供的服务模式(后台服务常驻,日常启动就不必每次提权)。多数客户端把 TUN 开关和服务模式安装绑在一起引导。
  • macOS:首次开启时系统会弹出授权对话框,输入管理员密码后才能建立虚拟网卡。
  • Linux:需要对应的网络管理权限,桌面客户端一般会在应用内引导你完成授权;命令行运行内核则要给进程相应的能力位。

注意:TUN 会改动系统路由。如果客户端异常退出(比如强制结束进程)而没能清理干净,可能出现整机断网的情况。正常从界面里关闭 TUN 开关或退出客户端,一般会自动恢复;实在不行重启系统即可复原。

在 Clash Verge Rev 里开启 TUN

以当前版本为例,界面细节可能随版本略有差异,但顺序是固定的:

  1. 打开客户端的设置页面,找到「服务模式」相关项,先安装服务组件并按提示完成系统授权。
  2. 回到主界面或设置里,打开 TUN 模式 开关。开启后系统的网络连接列表中会多出一块虚拟网卡。
  3. 确认订阅已导入、代理组里选好了可用节点——TUN 只负责把流量抓过来,走哪个节点仍由代理组和规则决定。
  4. 验证:打开一个此前不走代理的程序,或在终端里不设任何环境变量直接访问外网,能通就说明接管成功。

还没装客户端的话,先到下载中心按系统取对应版本。

说明:TUN 开启后系统代理开关可以关掉,两者不必同时开。保持只开一个,出问题时更容易定位是哪一层的毛病。

Android 上的「VPN 模式」就是 TUN

安卓端不存在系统代理那种全局设置,Clash Meta for Android 和 FlClash 点启动时弹出的「连接请求」,申请的正是系统 VPN 接口——本质与桌面端 TUN 相同:建立虚拟网卡、接管全部流量、由 mihomo 分流。所以安卓上不需要额外开关,授权一次即可,状态栏出现钥匙图标就代表已经接管。

常见问题

开启 TUN 后完全上不了网怎么办?

先把 TUN 关掉确认基础网络是通的,然后按三个方向查:一是节点本身失效,去代理页测一次延迟;二是 DNS 配置有问题——TUN 模式对 DNS 更敏感,域名解析不通就表现为全网打不开,处理思路见 mihomo DNS 配置详解;三是服务组件没装好,重装一次服务模式再试。

和公司 VPN 或其他代理软件冲突吗?

很可能冲突。两个程序同时改路由表、抢管虚拟网卡,结果通常是谁后启动谁生效,或者两边都不正常。原则是同一时间只让一个接管全局流量,需要切换时先完整退出另一个,而不是只关窗口。

怎么彻底关闭 TUN、恢复原状?

在客户端里关掉 TUN 开关即可,虚拟网卡和路由会被自动清理。如果之前是强制结束进程导致的残留,重新启动客户端把 TUN 开一次再正常关闭,通常就能让它自己收拾干净。