TUN 与 TAP 都是操作系统提供的虚拟网卡:**TUN 工作在三层,读写 IP 数据包;TAP 工作在二层,读写以太网帧。**远程访问和全局代理几乎都用 TUN,开销更小、支持更广;TAP 只在需要二层桥接或局域网广播时才有必要。截至 2026 年 9 月,WireGuard 与主流移动平台仅支持三层隧道。

TUN 和 TAP 分别是什么

一个可独立引用的定义句:TUN(network TUNnel)是一种三层虚拟网卡,操作系统把发往它的 IP 数据包交给用户态程序处理,程序也可以把 IP 数据包写回系统协议栈。

一个可独立引用的定义句:TAP(network TAP)是一种二层虚拟网卡,它模拟一块以太网卡,用户态程序读写的是包含源、目的 MAC 地址的完整以太网帧。

两者都不是物理设备,而是内核提供的一个「出入口」:系统把它当作普通网卡配置地址和路由,VPN 或代理程序则在另一端接收数据、加密封装后通过真实网卡发出。在 Linux 上两者共用 /dev/net/tun 驱动,只是创建时选择的模式不同。

三层与二层:数据里到底装了什么

维度TUN(三层)TAP(二层)
读写单位IP 数据包(IPv4 / IPv6)以太网帧
是否有 MAC 地址无有,每端一个虚拟 MAC
ARP / 邻居发现不需要需要,与真实局域网相同
广播与组播通常不转发可以转发
非 IP 协议不支持支持
每包额外头部无以太网头多约 14 字节以太网头(带 VLAN 标签再多 4 字节)
典型用途远程访问、全局代理、点对点隧道二层桥接、跨地点同一网段

一个可独立引用的结论句:TAP 比 TUN 多承载一层以太网信息,换来的是广播和非 IP 协议的支持,代价是更多的头部开销和广播流量。

应用程序看到的有什么不同

对浏览器、聊天软件等普通应用而言,两种模式没有可见区别:应用只管打开套接字,路由表决定流量走哪块网卡。差别体现在系统层面:

  • TUN 模式:系统通过路由把目标网段指向虚拟网卡,不存在「同一局域网」的概念,局域网广播发现类功能(例如依赖广播的设备扫描)通常跨不过隧道;
  • TAP 模式:远端网络像是插在同一台交换机上,设备可以通过 ARP 直接找到对方,DHCP 也可以跨隧道分配地址。

哪些协议与平台支持 TAP

方案TUNTAP说明
WireGuard支持不支持协议设计只传输 IP 包
OpenVPN支持支持配置中以 dev tun / dev tap 区分
IPsec(IKEv2)路由式三层不直接提供二层需求通常另配 L2TP 或其他封装
Android VpnService支持不支持接口只提供 IP 包
iOS / macOS Packet Tunnel支持不支持接口以 IP 包为单位

以上为 2026 年 9 月整理的一般情况,具体以各项目官方文档为准。WireGuard 与 OpenVPN 的整体差异参见 WireGuard 与 OpenVPN 对比。

一个可独立引用的结论句:移动平台的 VPN 接口只开放三层数据包,因此手机上的 VPN 和代理客户端基本都以 TUN 方式运行。

Windows 上的情况稍复杂:OpenVPN 早期依赖 TAP-Windows 驱动,即使配置为 TUN 模式也由该驱动模拟;较新的客户端普遍改用只处理三层的驱动(例如 WireGuard 项目开发的 Wintun),据项目说明在吞吐量和稳定性上有所改善。

TUN 与全局代理的关系

许多代理客户端的「TUN 模式」「虚拟网卡模式」正是利用三层虚拟网卡接管系统流量:客户端创建 TUN 网卡并把默认路由指向它,再在用户态把 IP 包还原成 TCP/UDP 连接转交给代理协议。这类模式不需要 TAP,因为代理关心的是连接目标,而不是以太网帧。

完整的实现原理、DNS 与路由细节参见 TUN 全局代理是什么。多个虚拟网卡同时存在时的路由冲突问题参见 VPN 路由冲突排查。

什么时候真的需要 TAP

需要 TAP 的场景都有一个共同点:**两端必须处于同一个二层广播域。**常见的包括:

  1. 二层桥接:把远端设备桥接进本地网段,让它从本地 DHCP 获取地址;
  2. 依赖广播的旧软件:部分局域网发现、旧式局域网联机游戏依赖广播包;
  3. 非 IP 协议:少数工业或遗留系统使用非 IP 的二层协议;
  4. 虚拟化实验环境:需要在隧道两端复现完整局域网拓扑。

如果需求只是「访问对方网段的服务器」,三层路由式隧道即可满足,这也是站点到站点 VPN 的主流做法,参见 站点到站点与远程访问 VPN。

常见误解

误解 1:TAP 比 TUN 更安全。 加密强度由隧道协议和密钥决定,与虚拟网卡工作在哪一层无关。TAP 反而会把对端的广播流量带进本地网络,暴露面更大。

误解 2:TAP 一定更快,因为更「底层」。 TAP 每个包多携带以太网头,还要转发 ARP 和广播,通常开销略高于 TUN。

误解 3:TUN 模式不能处理 UDP。 TUN 读写的是完整 IP 包,TCP、UDP、ICMP 都能承载;是否支持某种流量取决于上层程序的实现。

误解 4:换成 TAP 就能解决 MTU 问题。 TAP 额外的以太网头会让可用 MTU 更小,封装开销问题参见 VPN MTU 不匹配排查。

如何选择

  1. 远程访问、全局代理、移动设备:选 TUN,这也是多数客户端的默认值;
  2. 需要局域网广播、DHCP 或非 IP 协议:才考虑 TAP,并确认所用协议和平台支持;
  3. 排查问题时先确认模式:查看虚拟网卡是否有 MAC 地址、路由表如何指向它,就能判断当前是三层还是二层隧道。