TUN 模式如何处理网络流量
代理工具入门名词编辑部 · 更新于 2026-10-18
TUN 是内核提供给程序的虚拟网卡,处理 IP 包。TUN 模式下代理程序建虚拟网卡、改系统路由把请求导进来,TCP 与 UDP 都能处理,不依赖 App 读取系统代理。
一图看懂点任一步跳到对应小节
TUN 是操作系统提供的虚拟网卡:它不从物理介质收包,而是从用户态程序收发数据包。代理客户端的 TUN 模式就是建一张这样的网卡,再配置系统路由把网络请求重定向过去。Clash Verge Rev 文档写明,它可拦截处理所有 TCP/UDP 流量,App 无需额外配置。
内核文档里的 TUN
展开详细说明
Linux 内核文档的描述:程序打开 /dev/net/tun 注册设备,设备显示为 tunXX 或 tapXX;程序关闭后,设备与相应路由一起消失。TUN 与 TAP 的区别是「TUN 处理 IP 包,TAP 处理以太网帧」。
和系统代理的区别
展开详细说明
| 项 | 系统代理 | TUN |
|---|---|---|
| 入口 | 程序自愿读取系统设置 | 系统路由层接管 |
| UDP | 不能代理 | 可处理 |
| 是否依赖 App 配合 | 依赖 | 不依赖开发者的意愿 |
Clash Verge Rev 还说明,服务模式的用途是能以非管理员身份启动 TUN 模式。系统代理的边界见系统代理说明。
手机上的 TUN
展开详细说明
Android 文档写道,VPN App 用 VpnService.Builder 建立本地 TUN 接口,用 addRoute() 决定哪些流量进入(全收用 0.0.0.0/0 或 ::/0),再从接口读出外发的 IP 包。由此可以理解,手机上代理客户端的「VPN 模式」本质上就是 TUN(这是两份文档拼合得出的,没有一份官方文档逐字这么写)。
协议栈默认值:两份文档说法不同
展开详细说明
TUN 的「协议栈」(stack)是把 IP 包还原成连接的实现,mihomo 可选 system、gvisor、mixed、mips。默认值两处官方说法不一致:Clash Verge Rev 名词页写「TUN 模式的默认堆栈是 GVisor」;mihomo 文档写 stack 默认 mips,并建议「如无使用问题」用 mips。原因官方没有说明。
和规则分流的关系
展开详细说明
TUN 决定流量怎样进入内核,分流规则决定进入后按什么条件选出口,两者不是同一个功能,见分流规则说明。
常见问题
TUN 会处理 UDP 吗?
会。Clash Verge Rev 文档说明 TUN 模式可拦截处理所有 TCP/UDP 流量,这也是它与系统代理的主要区别之一。
TUN 与系统代理一样吗?
不一样。系统代理要由程序读取,且不代理 UDP;TUN 通过虚拟网卡和系统路由接管流量,App 无需额外配置。