返回
网络环境

TUN 模式是什么意思?和系统代理有什么区别

本页含推广链接,购买后本站可能获得佣金。查看推荐与推广说明。

  • TUN 通过虚拟网卡接管路由覆盖的连接,排除规则、网络接口和 IPv6 设置会影响范围。
  • 终端可使用程序自己的代理设置或代理环境变量,TUN 是另一种接入方式,并非所有场景都必须开启。
  • 无法上网时逐项核对权限、路由、DNS 和其他 VPN;接管流量不等于全部转发到境外。
收起目录目录

TUN 模式是代理客户端在系统里创建一块虚拟网卡,接管系统路由指向它的网络流量,再按规则决定走代理还是直连;系统代理只对主动读取代理设置的程序生效,主要是浏览器。命令行工具、游戏、Windows 商店应用这类不认系统代理的程序要走代理时,可配置程序自身代理或使用 TUN 模式。

TUN 模式是什么意思:虚拟网卡接管流量

TUN 是操作系统提供的一种虚拟网络设备,工作在网络层,收发的是一个个 IP 数据包。代理客户端开启 TUN 模式后,流量是这样走的:

  1. 客户端在系统里创建一块虚拟网卡。在 Windows 的“网络连接”里能看到多出一个适配器。
  2. 客户端修改系统路由表,把默认出口指向这块虚拟网卡(配置里对应 auto-route)。
  3. 被相应路由覆盖且未被排除的数据包,会被系统送进虚拟网卡,交到客户端的内核手里。
  4. 内核把数据包还原成一条条 TCP、UDP 连接,查看目标域名或 IP,按分流规则决定交给哪个节点,或者直接连接。

关键在于:程序本身不需要知道代理的存在。对它来说,就是在正常上网,只是“网卡”换成了客户端提供的那一块。

手机上的情况类似。安卓和 iOS 的代理客户端第一次连接时会请求“添加 VPN 配置”,系统提供的就是同一类虚拟网卡接口,所以手机客户端一连接就相当于开了 TUN,不需要单独找开关。

TUN 模式和系统代理的区别

系统代理的做法是:客户端在本机开一个代理端口(比如 127.0.0.1:7897),再把系统设置里的“代理服务器”指向这个端口。程序用不用它,由程序自己决定。浏览器和大多数图形界面软件会读取这个设置,命令行工具、游戏和不少专业软件不会。

对比项 系统代理 TUN 模式
工作位置 应用层:程序主动把请求发给代理端口 网络层:系统按路由把数据包送进虚拟网卡
生效范围 只对读取系统代理设置的程序 路由覆盖且未被排除的连接
UDP 流量 基本不处理 可以接管(游戏、语音、QUIC)
DNS 由程序或系统自行解析,容易绕过代理 可接管匹配的 DNS 请求;应用内加密 DNS 仍需单独核对
所需权限 普通权限 管理员权限或安装系统服务
常见问题 部分程序不走代理 与其他 VPN、虚拟网卡冲突;客户端异常退出后可能断网
适合 日常浏览网页 终端、游戏、商店应用、需要全局接管的场景

两者可以同时开吗? 可以,通常不冲突。开了 TUN 后,浏览器即使仍按系统代理把请求发到代理端口,也一样由客户端处理。但排查问题时只留一个,更容易判断是哪一边出了问题。

怎么选: 日常只用浏览器,系统代理就够了,不需要管理员权限,出问题时影响范围也小;发现有程序不走代理,再打开 TUN。

还有一点经常被混淆:系统代理和 TUN 决定的是“哪些流量交给客户端”,规则模式和全局模式决定的是“交给客户端以后走不走代理”。这是两组独立的开关,后者见 规则模式和全局模式。

哪些场景可以考虑 TUN:终端、游戏、UWP 应用

终端与开发工具

git、npm、pip、curl,以及 Claude Code 这类在终端里运行的工具,大多不读取系统代理。有两种做法:

一是给当前终端设置代理环境变量,只对这个窗口生效。端口换成你客户端设置里显示的代理端口:

# macOS / Linux
export https_proxy=http://127.0.0.1:7897
export http_proxy=http://127.0.0.1:7897
export all_proxy=socks5://127.0.0.1:7897
# Windows PowerShell
$env:HTTPS_PROXY="http://127.0.0.1:7897"
$env:HTTP_PROXY="http://127.0.0.1:7897"

二是配置 TUN 接管相应连接;是否覆盖虚拟机、容器或 IPv6,还要检查路由与排除设置。经常在终端里工作的话,TUN 更省事。各种工具单独配置代理的方法见 终端代理设置,Claude Code 的完整设置见 Claude Code 国内使用。

游戏

游戏的对战数据大多用 UDP 传输,而系统代理基本不处理 UDP。想让外服游戏走代理,需要同时满足三点:

  • 开启 TUN,让游戏的 UDP 流量进入客户端;
  • 节点支持 UDP 转发:Hysteria2、TUIC 本身基于 UDP,Shadowsocks、Trojan、VLESS 等则要看服务端是否开启了 UDP 支持;
  • 选离游戏服务器近的地区,比如日服选日本节点、亚服选香港或新加坡节点。

游戏对延迟和丢包很敏感,晚上波动大的节点玩起来会明显卡顿,线路名称不能代替实际游戏体验,应在自己的网络上比较。国服游戏则应保持直连,规则模式下一般会自动直连。

Windows 商店应用(UWP)

Windows 商店应用(如 Microsoft Store 本身)默认运行在隔离环境里,不允许访问本机回环地址 127.0.0.1,也就连不上系统代理端口。解决方法有两种:用客户端提供的 UWP 工具为这些应用解除回环限制(Clash Verge Rev 在“设置 → Clash 设置”里有“UWP 工具”);或者直接开 TUN,流量在网卡层被接管,不受这个限制。

其他不认系统代理的程序

  • 部分桌面软件的后台更新和登录组件;
  • 以 NAT 方式联网的虚拟机、WSL2 和 Docker 容器;
  • 自带网络设置、不跟随系统代理的程序。

开启 TUN 后,这些流量多数情况下也会经过客户端,不用逐个设置。

Clash Verge Rev、Clash Party、v2rayN 开启 TUN 的步骤

开启前,先在系统代理模式下确认订阅可用、境外网页能打开。这样可以减少排查变量,但仍需结合日志判断原因。客户端下载与导入订阅见 Clash Verge Rev 使用教程;还没有 Clash 格式订阅的话,可以看 机场套餐与推荐。

三款客户端的界面会随版本调整,下面的按钮名称截至 2026 年 11 月,找不到时在设置页搜索“TUN”或“虚拟网卡”。

Clash Verge Rev

  1. 打开“设置”页,在“系统设置”里找到“虚拟网卡模式”。如果提示需要服务模式,先点击“安装服务”:Windows 会弹出管理员授权,macOS 和 Linux 会要求输入系统密码。不想安装服务的话,也可以直接以管理员身份运行 Clash Verge Rev。结果:服务状态显示为已安装或可用。
  2. 打开“虚拟网卡模式”开关。结果:开关保持开启、没有弹回,系统网络设置里多出一块新网卡。
  3. 需要调整时,点开关旁边的设置图标,可以修改“TUN 模式堆栈”(网络栈)、“DNS 劫持”“严格路由”等。第一次使用保持默认即可。
  4. 验证:不设任何环境变量,在终端执行 curl -I https://www.google.com(Windows PowerShell 里写成 curl.exe -I https://www.google.com)。很快返回以 HTTP 开头的状态行(如 200 或 301),只能说明当前请求能够连接;再到客户端连接日志确认是否经 TUN 接管;长时间无响应或连接失败,看下文“无法上网”一节。

Clash Party

  1. 在主界面侧栏找到“虚拟网卡”(TUN)卡片。按该版本的提示安装服务或授予所需权限,再开启虚拟网卡;不要假设每个系统的授权方式相同。
  2. 打开开关。结果:卡片状态变为开启,系统网络设置里多出一块新网卡。
  3. 点进卡片可以调整“Tun 模式堆栈”和“DNS 劫持”,第一次使用保持默认。开关打不开时,可以在这一页点“重设防火墙”(Windows)或“手动授权内核”(macOS、Linux)后再试。
  4. 用上面同样的 curl 命令验证。

v2rayN

  1. Windows 上用管理员身份运行 v2rayN:右键程序选择“以管理员身份运行”,或在程序菜单里选择“以管理员身份重启”。macOS、Linux 不需要这一步,开启 TUN 时会要求输入系统的 sudo 密码。
  2. 在主界面底部打开“启用 Tun”开关。结果:开关保持开启,系统网络设置里多出一块新网卡。
  3. 在设置里的“Tun 模式设置”中可以调整协议栈、严格路由等,通常保持默认。
  4. 用上面同样的 curl 命令验证。

避坑:不要让两个客户端同时开 TUN

两块虚拟网卡会互相抢占路由表,结果往往是完全断网。换用另一个客户端前,先在旧客户端里关掉 TUN 再退出。

TUN 模式无法上网的 5 个原因

开了 TUN 反而上不了网,按下面的顺序排查,前两项最常见。

1. 权限不够或服务没装好

表现:开关打开后自动弹回,或者提示权限不足;系统网络设置里看不到新网卡。按上一节重新安装服务模式,或以管理员身份运行客户端。装过旧版本服务的,先在客户端里卸载服务,再重新安装。

2. 和其他 VPN、虚拟网卡或安全软件冲突

公司 VPN、游戏加速器、其他代理客户端都会修改路由表;部分安全软件会拦截新建网卡或客户端内核进程。退出其他 VPN 和加速器,在安全软件里放行客户端与内核,再重新打开 TUN。

3. DNS 没有被接管

表现:国内网站正常,境外网站全部打不开;或者能连上 IP,但输入网址打不开。原因是程序直接向本地 DNS 查询,拿到了被污染的结果。确认 TUN 设置里开启了 DNS 劫持,客户端的 DNS 功能处于启用状态;浏览器的“安全 DNS”先关掉再试。

4. 网络栈与系统不兼容

mihomo 内核的 TUN 有几种网络栈可选,常见的是 system、gVisor 和 mixed:

网络栈 特点 适合
system 使用系统自带的协议栈,性能好 多数电脑,但更容易受防火墙影响
gVisor 在用户态自行实现协议栈,兼容性好 system 栈出问题时
mixed TCP 走 system、UDP 走 gVisor 的折中方案 想兼顾两者时

不同客户端、不同内核版本的默认网络栈不一样。遇到连接异常,换一种网络栈往往就能解决。

5. 局域网被接管或路由回环

表现:开 TUN 后打印机、NAS、公司内网或局域网游戏连不上,或者客户端日志里同一条连接反复出现。处理方法:

  • 确认局域网地址段(192.168.0.0/16、10.0.0.0/8、172.16.0.0/12)走直连;
  • 开启“自动检测出口网卡”(auto-detect-interface),让内核发往节点的流量从真实网卡出去,不再绕回虚拟网卡;
  • 严格路由会阻止部分局域网访问,必要时先关闭它排查(见下一节)。

注意:关掉 TUN 后完全断网

客户端被强制结束或崩溃时,路由表和 DNS 设置可能没有恢复。先重新打开客户端,再正常关闭 TUN 并退出;仍然不行就重启电脑。Windows 上还可以在终端执行 ipconfig /flushdns 清理 DNS 缓存。

如果 TUN 已经正常工作,但节点依然超时,问题多半不在 TUN,按 节点超时怎么办 逐层排查。

TUN 模式下的 DNS 与 strict-route

开启 TUN 后,程序发出的 DNS 查询(UDP 53 端口)也会进入虚拟网卡。DNS 劫持(dns-hijack)把这些查询交给客户端内置的 DNS 处理。这样客户端可以直接按域名分流,本机也不会再向运营商 DNS 发出境外域名的查询。

客户端的 DNS 有两种工作方式:

模式 原理 优点 注意
fake-ip 查询时直接返回 198.18.0.0/16 段的假地址,连接时再还原成域名交给规则 不需要真实解析,速度快,不受 DNS 污染影响 需要真实 IP 的程序(局域网服务、部分游戏、时间同步)要加进 fake-ip-filter
redir-host 先做真实解析,再按结果分流 程序拿到真实 IP,兼容性好 解析环节更容易泄露,速度稍慢

strict-route(严格路由)打开后,内核会阻止流量从虚拟网卡以外的网卡“溜出去”,Windows 上还会添加防火墙规则,防止 DNS 绕过 TUN 直接发出。在意 DNS 泄露的用户适合打开它;代价是部分局域网访问、虚拟机网络和需要直接使用物理网卡的软件会受影响,出问题时先关掉它排查。

下面是 mihomo 内核中这几项的写法,便于对照理解:

tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true
  strict-route: true
  dns-hijack:
    - any:53
dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "+.local"

Clash Verge Rev 和 Clash Party 已经把这些选项做成了图形界面的开关,一般不需要手写配置;知道每一项管什么,出问题时才知道该改哪里。想确认 DNS 有没有绕过代理,见 DNS 泄露怎么解决。

TUN 模式更耗电、更慢吗

速度方面,TUN 多了一层数据包处理,在电脑上的开销很小,网速的瓶颈几乎都在节点和线路上。gVisor 栈比 system 栈多占一些 CPU,在老旧电脑或性能较弱的设备上才会明显。

耗电方面,笔记本开 TUN 后,客户端要处理所有程序的流量,包括原本不需要代理的那部分,后台占用会略高一些;手机客户端本来就是这种工作方式。真正明显耗电、发热的,往往是下面几项设置:

  • 自动选择类策略组的延迟检测间隔太短,频繁发起检测;
  • 日志级别设成了 debug,持续写入大量日志;
  • 规则集过多、过大,每条连接都要匹配很久。

按需设置就能把影响降到很低:

  • 只用浏览器时用系统代理,需要终端、游戏时再开 TUN;
  • 自动选择策略组的检测间隔设在 300 秒左右;
  • 日志级别平时设为 warning 或 info;
  • 国内流量保持直连,减少不必要的转发。

Telegram 联系

推荐机场