跳到正文
备课日 10 月 12 日34 家机场7 家固定位,其余每月重排开讲说明全部讲次

原理课

TUN 模式,其实是一块虚拟网卡

更新于 读完约 8 分钟

划重点

TUN 模式是让代理客户端在系统里装上一块虚拟网卡,再把默认出口指向它,设备上几乎每个程序的连接都会先落进客户端,由它按规则分去节点或直连。它和系统代理的差别在于不需要程序配合,不认代理设置的游戏、命令行工具和 UDP 语音也会被接住。开启要管理员权限,域名查询也会交给客户端处理。

这一讲从一块看不见的网卡入手,讲清 TUN 模式是什么意思。简单讲,是代理客户端在系统里装上一块虚拟网卡,再把系统的默认出口改到这块网卡上。从这以后,设备上几乎每个程序发出的数据都会先落进客户端手里,由它按规则决定送去节点还是留在本地。和它常被放在一起说的系统代理,只是在系统设置里登记一个代理地址,程序肯照着做才会走过去;TUN 不问程序的意见,在路口就把车拦下来分道。

所以 tun 是什么,可以落成一句:不靠程序配合、在网络层接管流量的那种工作方式。下面依次讲这块网卡从哪来、它和系统代理分在什么地方、哪些程序非它不可、开启后系统里会变的几样东西,以及手机上那个 VPN 图标和它的关系。

TUN 是什么:一块不插网线的网卡

网卡是设备收发数据的出入口。台式机背后插网线的口、笔记本里的 Wi-Fi 模块,都是实打实的硬件。虚拟网卡没有硬件,由软件向操作系统申请出来,可系统对它一视同仁:给它分地址,往它那儿发数据包,也从它那儿收。

TUN 是这类虚拟网卡中的一种,名字取自 tunnel 的前三个字母。它工作在 IP 这一层,进出的都是完整的 IP 数据包;同类里还有一种 TAP,处理更底层的以太网帧,代理客户端一般用不到。各系统的叫法不同:Windows 上常见的是 Wintun 驱动建出来的网卡,macOS 的接口名以 utun 开头,安卓和 iPhone 则通过系统留给 VPN 的接口来建。

客户端打开 TUN 时做了两件事。一是建网卡,二是改路由表,把「默认往哪儿发」指到这块网卡。程序照常联网,数据包却被系统送进了虚拟网卡;客户端在网卡的另一头把它们读出来,拼回一条条连接,看清目标是哪个域名或地址,查一遍分流规则,再交给节点或直接放行。

企业 VPN 也用同样的虚拟网卡来收流量,VPN 原理里那块「多出来的网卡」就是它。区别在后半截:企业 VPN 把数据包整个装进隧道,代理客户端则把它还原成连接,用 VLESS、Trojan 这类代理协议送出去。

系统代理和虚拟网卡有什么区别:一个等程序配合,一个在路口分道

两者都能让流量进客户端,进的路子不一样:

比较的地方 系统代理 TUN 虚拟网卡
怎么起作用 在系统设置里登记一个本机地址和端口,程序自己去读 改路由表,系统把数据包直接送进虚拟网卡
哪些程序会走 主动遵守代理设置的:浏览器、多数聊天和办公软件 设备上几乎全部程序,认不认代理都一样
UDP 流量 大多接不住,语音、联机游戏照旧直连 能接住,同样按规则分流
要什么权限 普通账户就能开 建网卡要管理员权限或系统授权
域名查询 程序把域名交给客户端,由它或节点解析 客户端接管系统发出的 DNS 查询
关掉以后 登记撤销,程序回到直连 网卡和路由一并撤掉,网络恢复原样

虚拟网卡和系统代理的区别,归根结底在「谁说了算」。系统代理像一张告示,贴在系统设置里,写着「要出门请走这扇门」。浏览器会看告示,可也有不少程序从来不看,或者看了只照办一部分。TUN 不再贴告示,而是把出口本身挪到了客户端门口,程序看不看都得从这道门过。

划重点:系统代理要等程序自己来读,TUN 在路口直接分道;不认代理设置的程序,只有开了 TUN 才会落进客户端。

这也带来一个副作用:TUN 管得宽,出了状况影响面也大。系统代理出问题,往往只是某个网页打不开;TUN 的规则或 DNS 出问题,可能整台机器都受影响。所以只用浏览器的人,没必要为了「更彻底」常开 TUN。

哪些程序不认系统代理,非得开 TUN

日常碰到的大致是这几类:

  • 游戏客户端和启动器。它们自己管理网络连接,多数不读系统代理;对战、语音又大量走 UDP,系统代理本来也接不住。
  • 命令行工具和开发工具。很多只认自己的配置文件或环境变量,系统里的代理开关对它们不起作用。
  • 自带网络模块的桌面软件。一些下载工具、内嵌网页的客户端、老式的桌面程序,按自己的逻辑联网,绕过了系统设置。
  • Windows 上的部分商店应用。系统默认不让它们访问本机地址,而系统代理恰恰指向本机的一个端口,结果就是开了等于没开。
  • 走 UDP 或 QUIC 的流量。视频会议、网页通话,还有不少网站用的 HTTP/3,都可能绕开只转发 TCP 的代理入口。

判断某个程序属不属于这一类,有个简单办法:开着系统代理,浏览器能打开境外网站,这个程序却连不上它的境外服务器;再到客户端的连接记录里找,看不到它的任何连接。两条对上,基本就是它不认系统代理。连接记录在哪、怎么读,挂梯子以后那一讲有说明。打开 TUN 再试,它的连接出现在记录里,问题就找到了。

开 TUN 以后,系统里会变的四样东西

权限。 建虚拟网卡、改路由属于系统层面的操作。Windows 上要么以管理员身份运行客户端,要么先装好客户端提供的「服务模式」,由后台服务代办;macOS 第一次开启会弹窗请求授权。不给权限,开关拨过去也会自己弹回来。

DNS。 程序上网前先查域名,TUN 模式下这一步也归客户端管。为了按域名分流,很多客户端用「假 IP」的做法:先给程序回一个 198.18 开头的保留地址,程序拿这个地址发起连接时,客户端再从记录里查出它原本要去的域名。所以开着 TUN 时用命令查某个网站的地址,看到 198.18 开头的结果,并不是出了故障。另一种做法是照常解析出真实地址,兼容性更好,分流判断要多等一步。

路由。 默认出口改指虚拟网卡以后,客户端会把几样东西排除在外:局域网的私有地址,以及节点服务器自己的地址,不然发往节点的数据又被送回网卡,绕成死循环。家里的路由器后台、打印机因此照常能访问。

和其他虚拟网卡的关系。 办公用的 VPN、第二个代理客户端,都会去争默认出口。两个同时开着,常见的表现是时通时断,或者开谁谁不灵。同一时间只留一个接管流量的软件,能省去大半麻烦。

客户端被强制结束或系统意外重启后,偶尔会留下没来得及还原的网络设置,症状是整台电脑突然上不了网。重新打开客户端、正常关一次 TUN,或者重启一下,一般就恢复了。

手机上的 VPN 图标,就是 TUN 在接管流量

手机系统虽然在 Wi-Fi 设置里留了一栏手动代理,可它只对当前这个 Wi-Fi 有效,换成移动数据就不起作用,不少 App 也不理它。所以手机上的代理客户端几乎都走另一条路:请系统开一条 VPN 连接。安卓通过系统的 VPN 服务接口,iPhone 通过网络扩展框架,申请通过后系统建出的那块虚拟网卡,本质上就是 TUN,状态栏的钥匙或 VPN 字样随之亮起。

这能解释手机上几个常见的现象:

  1. 手机客户端里大多找不到单独的 TUN 开关,因为一打开就是这种模式。个别安卓客户端提供「仅代理」选项,那时它只开一个本机代理端口,不建网卡,也就不出现图标。
  2. 系统一次只允许一个 VPN 连接在线。开了这个客户端,另一个就会被系统断开,单位发的 VPN App 也一样。
  3. 第一次打开时系统会弹窗征求同意,它问的其实是:让不让这个 App 建一块虚拟网卡。

vpn 的 tun 模式又是怎么回事?传统 VPN 用的也是同一种网卡。OpenVPN 的连接类型里有 tun 和 tap 两个选项,选 tun 就是在 IP 这一层建隧道,绝大多数场景用的都是它。名字相同,指的也是同一种东西,只是数据进了网卡以后,VPN 整包封装,代理客户端拆成连接转发。

clash tun模式是什么:几种情况该开,几种情况不必

Clash 系客户端今天大多跑在 mihomo 内核上,TUN 是内核自带的一项功能,界面上通常就是一个开关,旁边可能还有「协议栈」的选择:system 借用系统自己的网络栈,开销小;gVisor 由程序自己实现一套,兼容性更好;mixed 是两者搭配。拿不准就保持默认。内核是什么、mihomo 和别的内核怎么分工,见 mihomo 是什么。

适合打开的情况:

  • 有程序明确不认系统代理,又需要它走节点;
  • 语音、联机游戏这类 UDP 流量要按规则分流;
  • 设备上程序多,懒得一个个查谁认代理、谁不认。

不必打开,或者该先关掉的情况:

  • 平时只用浏览器,系统代理已经够用;
  • 要连单位、学校发的 VPN,两边会抢同一个出口;
  • 国内网游出现异常的延迟,想确认是不是客户端在中间多处理了一道。

划重点:TUN 只管流量怎么进客户端。出去以后走哪个节点、用什么协议、晚上快不快,仍然由订阅那一头决定,开了 TUN 节点也不会变快。

一翻云写明的协议是 VLESS,出境段走 IEPL 专线,订阅链接付款后找客服要;设备数不限,家里几台电脑、手机都开着 TUN 也不用挤名额,尊享版 ¥55/月给 600GB。跨界云同样写 VLESS,面板里就能复制标准订阅,轻云 Lite ¥20/月给 120GB,用码 kuajie 可打 8 折(只卖年付的跨界年付版除外)。其余几家的协议和线路,机场总表一并列着。

文中提到的机场

1

一翻云示范课

IEPL 专线,月付 ¥20 给 150GB,网站测过速度

月付起
¥20/月每月 150GB
年付平摊到月
¥8.2年付小包

码 1FLYYUN · 9 折最大档 1.2TB课上测得微信可付

7

跨界云

Vless 标准订阅,轻云 Lite 年付合每月 ¥16

月付起
¥20/月每月 120GB
年付平摊到月
¥8跨界年付版

码 kuajie · 8 折最大档 1800GB官方讲的

课后自查

家里几台设备都用示范课一翻云的订阅开 TUN,会不会挤名额?

不会。一翻云官网写的是不限设备数,手机、电脑、平板可以同时在线。TUN 只改流量怎么进客户端,节点协议仍是订阅里的 VLESS,出境仍走 IEPL 专线。

开了 TUN 模式,网速会不会变快?

不会。TUN 只改变流量怎么交到客户端手里,出去以后走哪个节点、线路拥不拥挤都没有变。它解决的是「某些程序没走代理」,不是「代理太慢」;节点慢,开不开 TUN 都一样慢。

TUN 模式下,家里的打印机、NAS 还能访问吗?

能。客户端改路由时会把局域网的私有地址排除在外,这些设备的流量不进虚拟网卡,照常走本地网络。如果开了 TUN 后局域网设备访问不了,多半是规则里把私有地址也送去了节点,检查一下规则开头那几条。