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
| 方案 | TUN | TAP | 说明 |
|---|---|---|---|
| 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 的场景都有一个共同点:**两端必须处于同一个二层广播域。**常见的包括:
- 二层桥接:把远端设备桥接进本地网段,让它从本地 DHCP 获取地址;
- 依赖广播的旧软件:部分局域网发现、旧式局域网联机游戏依赖广播包;
- 非 IP 协议:少数工业或遗留系统使用非 IP 的二层协议;
- 虚拟化实验环境:需要在隧道两端复现完整局域网拓扑。
如果需求只是「访问对方网段的服务器」,三层路由式隧道即可满足,这也是站点到站点 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 不匹配排查。
如何选择
- 远程访问、全局代理、移动设备:选 TUN,这也是多数客户端的默认值;
- 需要局域网广播、DHCP 或非 IP 协议:才考虑 TAP,并确认所用协议和平台支持;
- 排查问题时先确认模式:查看虚拟网卡是否有 MAC 地址、路由表如何指向它,就能判断当前是三层还是二层隧道。