
一、TUN 模式在 V2RayN 中的定位
V2RayN 的 TUN 模式,本质上是把代理的接管层级从应用层下沉到网络层。在它出现之前,桌面端用户最熟悉的做法是系统代理:客户端把系统的代理配置改成指向本机监听端口,之后凡是主动读取这份配置的程序——主流浏览器、多数基于 Chromium 的桌面应用——就会把请求交给代理。问题在于,这份配置并不具备强制性。游戏客户端、部分命令行工具、微软商店分发的 UWP 应用,以及某些自带网络栈的运行时环境,都可能完全无视它。
TUN 模式换了一条路径:由代理内核创建一块虚拟网卡,改写系统路由表,把整机的 IP 数据包(TCP、UDP、ICMP)先送进这块虚拟设备,再由内核侧的协议栈把数据包还原成连接,最后按路由规则决定这条连接走代理还是直连。对上层程序而言,网络环境没有任何变化,也不需要它主动配合——这正是「全局代理流量转发」的实际含义:接管发生在应用程序无法察觉的位置。
不过,需要先划清一条边界:所谓「全局」指的是接管范围,而不是强制所有流量都出国。TUN 只保证数据包一定会经过代理内核,至于进入内核之后是走代理出站还是直连出站,仍由路由规则决定。很多新手把两者混为一谈,进而在排错时找错了方向,这一点在后面的分流章节会展开。
二、从系统代理到 TUN:功能变更脉络
理解 V2RayN 的接管能力,最好的方式是按演进顺序来看。早期版本只提供系统代理,能力边界非常清晰:能识别系统代理设置的程序走代理,识别不了的走直连。随后出现的增强模式,通过修改路由表叠加系统代理,把一部分原本绕过代理的程序拉回来,但它在本质上仍依赖程序是否尊重代理配置,对 UDP 流量的覆盖也相当有限。
再往后,随着 sing-box 这类自带 TUN 入站能力的内核成熟,客户端得以把「虚拟网卡 + 路由劫持」整套机制搬到图形界面里。较新版本的 V2RayN 支持以 sing-box 作为内核运行,TUN 模式正是建立在这一内核能力之上。这也意味着一个容易被忽略的事实:TUN 模式的表现,很大程度上由内核版本与其配置生成逻辑决定,而不是由客户端的按钮决定。
经验性观察:不同版本之间,TUN 相关设置项的命名与位置存在差异,迁移时不要凭记忆找按钮,应先确认当前内核类型,再对照设置界面的实际文案。
因此,当你从旧版本升级过来时,合理的迁移顺序是:先确认新版本使用的内核,再校验 TUN 所需的驱动与权限是否就绪,最后才调整路由与 DNS。跳过前两步直接开开关,最常见的后果是开关打开了,全程却不通。顺着这条脉络往下看,接下来就该问:TUN 在转发链路上究竟做了哪些事。
三、转发链路拆解:三个动作
把 TUN 模式的转发过程拆开,其实只有三件事在起作用。第一步是虚拟网卡创建,代理内核向操作系统申请一块点对点网络设备,它在系统里看起来就是一张普通的网卡,只是没有物理介质。在 Windows 平台上,这类设备通常借助 wintun 驱动实现;Linux 上是内核自带的 TUN 设备;移动端则由系统提供的 privacy tool 框架代为创建。
第二步是路由改写。内核会向下发一条默认路由,把原本指向物理网关的流量改指到虚拟网卡。这一步是「全局」的技术来源,同时也是所有副作用的技术来源:一旦默认路由被整体接管,任何未被规则显式排除的目标都会先落到虚拟网卡上。
第三步是协议栈接管。数据包进入虚拟网卡后,内核的网络栈会按源地址、目标地址、端口重新组装成连接,再交给路由规则和出站模块处理。这三步中任何一步被打断——驱动缺失、权限不足、路由被其它 privacy tool 抢占——都会表现为「连不上」,而不是「部分生效」。
把这三步与另外两种接管方式放在一起对照,差别会更直观。
四、三种接管方式的横向对比
选型时真正需要比较的,是系统代理、增强模式与 TUN 模式三者在覆盖面、权限需求和副作用上的差别。下表按经验性维度整理,具体表现会因系统版本与内核实现而变化。
| 对比维度 | 系统代理 | 增强模式 | TUN 模式 |
|---|---|---|---|
| 接管层级 | 应用层配置 | 路由表 + 应用层 | 网络层 |
| UDP 覆盖 | 通常不覆盖 | 有限 | 可覆盖 |
| 管理员权限 | 一般不需要 | 通常需要 | 需要 |
| 与其它 privacy tool 共存 | 冲突概率低 | 中等 | 冲突概率较高 |
| 异常后的恢复 | 关闭开关即可 | 关闭后多为即时恢复 | 可能需要重启网卡或重连网络 |
从表中可以读出一个结论:TUN 换来的是覆盖面,付出的是权限、复杂度与故障半径。它适合「确实需要全量接管」的场景,而不是「顺手打开更省事」的默认选项。举个具体的例子:一位用户需要让某款不走系统代理的游戏联机工具正常走代理,同时希望局域网内的 NAS 与打印机保持直连——这个需求 TUN 加局域网例外的组合可以满足,而单纯改系统代理做不到。
五、要不要用 TUN:一条决策路径
判断标准可以简化为三个递进的问题。第一问:现有系统代理下,是否确实存在必须走代理却走不通的程序?如果答案是否定的,就没有启用 TUN 的必要,继续保持系统代理是更省心的选择。第二问:这些程序的流量是否包含 UDP?如果只有浏览器场景,UDP 覆盖并不构成理由。
第三问:你是否能接受机器上同时运行的其它虚拟网络组件受到扰动?WSL、Hyper-V、Docker Desktop、部分企业安全客户端都会创建自己的虚拟网卡并写入路由。TUN 模式下的默认路由改写与这些组件存在天然竞争关系,这是决定「该不该用」的关键一环。
三个问题中只要有一个答案为「否」,就应优先考虑折中方案:把系统代理与路由规则配合使用,只把必要目标导向代理,而不是整体下沉到网络层。TUN 是能力最完整的一档,但完整并不等于合适。真正该做的,是把这份取舍落到动手前的准备上。
六、启用前的四项前置检查
在动手之前,先花两分钟做四项检查,能规避大部分「开了但不通」的投诉。这些检查与具体版本无关,属于机制层面的必要条件。
- 内核是否支持 TUN 入站:TUN 依赖内核能力。以当前最新版本为例,V2RayN 的 TUN 模式通常建立在 sing-box 内核之上,因此需确认所用内核类型及其是否具备 TUN 入站能力,相关项一般在「设置」菜单下的「参数设置」中查看。不同版本菜单位置可能不同,请以实际界面为准。
- 驱动与权限是否就绪:Windows 下需要相应的虚拟网卡驱动,且客户端需以管理员身份运行,否则创建虚拟网卡与改写路由都会被系统拒绝。
- 是否存在路由竞争:先断开其它 privacy tool 客户端,关闭可能占用默认路由的安全软件,再启用 TUN。
- DNS 预案是否明确:提前想好域名解析走哪个服务器、由谁负责解析,避免启用后出现「网页打不开但 IP 可访问」的典型症状。
这四项检查的价值在于,它们把排错工作提前到了配置之前。真实场景中,绝大多数 TUN 启用失败并非配置写错,而是前置条件缺了一项——最常见的就是忘记用管理员权限启动。条件备齐之后,具体的操作路径就变得相当短。
七、Windows 桌面端的最短操作路径
以下路径以当前最新版本为例,界面文案在不同版本间可能存在差异,请对照实际界面寻找对应项。整体顺序是「先备内核,再开模式,最后调路由」,不要颠倒。
- 以管理员身份启动 V2RayN,确认托盘图标正常出现。
- 进入「设置」菜单下的「参数设置」,在核心设置区域确认内核类型与内核文件路径。TUN 模式需要支持 TUN 入站的内核,若当前使用的是不含该能力的核心,需先切换到对应内核。
- 在同一设置区域中查找 TUN 相关开关或选项组,启用 TUN 模式相关项。若界面中未见相关选项,通常意味着当前内核或版本不支持,而不是隐藏在某处。
- 回到主界面,将代理模式切换为 TUN 模式(部分版本位于主界面下方或托盘右键菜单中)。
- 观察日志窗口。正常启用时会看到虚拟网卡创建与路由下发的记录;若此处报错,问题通常已直接指出原因,例如权限不足或驱动加载失败。
回退路径同样要提前记住:关闭 TUN 开关或退出客户端后,如果网络仍未恢复,先检查默认路由是否被残留条目占用——可以在管理员命令行中执行 route print 查看 IPv4 路由表,确认默认路由指向的网关是否为物理网关。若发现异常条目,重启对应网卡或重连网络通常即可清除。
route print 的原始输出,再逐条比对处置。八、其它平台的对应情况
V2RayN 本体以 Windows 桌面端为主,因此跨平台讨论需要区分「同一客户端的不同版本」与「思路相同的其它客户端」。macOS 上存在若干社区维护的第三方图形客户端,各自对 TUN 的支持程度与实现方式并不一致,不能直接套用 Windows 的操作路径,应以各项目自身的文档为准。
Linux 环境下更常见的是直接使用内核程序本身:在配置文件中定义 TUN 入站,由具备相应权限的进程启动,需要 root 或网络管理相关能力。这条路灵活性最高,但也意味着路由与 DNS 都要自己写清楚,没有图形界面的兜底。
移动端的逻辑与桌面端相通,实现路径却完全不同。Android 通过系统提供的 privacy toolService 接口创建虚拟网卡,iOS 走系统的网络扩展框架,两者都由操作系统托管隧道生命周期。因此移动端不存在「以管理员运行」这类操作,权限模型被系统封装,能调的只有应用内的分流与 DNS 设置。理解这一点,就不会在手机上寻找桌面上才有的开关。而无论落在哪个平台,接管之后的走向都由路由与分流规则决定。
九、路由与分流:TUN 下的「全局」有多全局
TUN 接管的是「进入内核」这件事,进入之后怎么走,取决于路由规则。常见有三档配置思路,各自对应不同的取舍。
第一档是全网走代理,规则最简、行为最可预测,代价是本地服务、局域网设备、内网办公系统全部绕行一圈,延迟与带宽都会受影响。第二档是绕过局域网,把私有地址段与本地域名排除在代理之外,这是绝大多数家庭与小型办公环境最舒服的配置——打印机能发现,NAS 能访问,代理该走还走。第三档是按地域分流,依据 GeoIP、GeoSite 之类的规则数据文件判断目标归属,境内直连、境外走代理,延迟表现通常最好,但对规则文件的时效性有依赖。
可复现验证:切换规则档位后,用同一目标做对照测试——分别访问一个已知的境内站点与一个境外站点,观察日志中的出站命中记录。若境内站点仍被导向代理出站,说明分流规则未生效或规则文件缺失,而不是 TUN 本身出了问题。
这里有一个常被忽视的边界:分流规则的判断发生在 TUN 已经接管之后,所以「分流不生效」不会导致断网,只会导致走错出口。这与路由层面的故障表现完全不同,排查时应当先看日志中的出站选择,再看网络是否可达。而在所有分流条件中,最容易出问题的往往不是规则本身,而是域名该怎么解析。
十、DNS:最容易被忽略的一环
在系统代理模式下,域名解析往往由程序和系统各自完成,用户感受不到差别。TUN 模式下 DNS 查询同样是 IP 流量,会被一并接管,于是解析行为变成配置的一部分。若 DNS 配置缺失或指向了一个不可达的服务器,症状会非常具体:直接访问 IP 可以通,输入域名却打不开。
合理的做法是把解析分成两类处理:需要走代理的域名交给代理侧的 DNS 解析,需要直连的域名交给本地或公共 DNS 解析。这样既避免解析结果被污染,也避免解析请求本身绕远路。具体配置入口在客户端的 DNS 设置区域,不同版本的组织方式不同,但核心字段一致:DNS 服务器地址,以及与路由规则匹配的解析策略。
验证方法很直接:启用 TUN 后,在命令行执行一次针对境外域名的解析查询,对比解析结果与使用本地 DNS 时的差异,再结合日志确认解析请求的走向。若解析结果明显异常,应优先回查 DNS 配置,而不是怀疑虚拟网卡。把解析理顺之后,还有一类问题来自机器上同时存在的其它虚拟网卡。
十一、与其它虚拟网卡共存
现代开发机几乎不可能只有一块物理网卡。WSL 会创建虚拟交换机,Hyper-V 会创建虚拟适配器,Docker Desktop 会创建自己的桥接网络,虚拟机软件也会。这些组件都会往路由表里写条目,而 TUN 模式恰恰要动路由表。
典型表现是:开启 TUN 后,宿主机上网正常,但 WSL 内的容器无法访问外网;或者反过来,虚拟机与宿主机的互通断掉。这类问题的根因通常不是 TUN 抢占了某条路由,而是默认路由的变化让原本走本地的流量走了出口。
处置思路有两条。优先考虑在路由规则中为相关私有网段添加直连例外,让本地互通流量根本不进代理出站;如果配置复杂度超出预期,退而求其次的方案是:需要跑容器或虚拟机时临时关闭 TUN,用系统代理完成日常浏览。这不是妥协,而是对「故障半径」的自觉控制。若共存的干扰已经显现,下面的排查思路可以帮助区分故障层次。
十二、故障排查:现象、原因与处置
下面按「现象 → 可能原因 → 验证方式 → 处置」的结构整理几种高频情况。每条都给出了可自行复现的验证动作,便于区分猜测与事实。
现象一:启用后整机无法上网。可能原因是默认路由被改写到虚拟网卡后,内核侧未能正确接管,形成流量循环。验证方式:管理员命令行执行 route print,观察默认路由的目标;同时尝试 ping 物理网关地址。处置:关闭 TUN 开关,必要时重启网络适配器或重连网络,待恢复后再逐项复核内核与权限。
现象二:开关打开但日志提示创建失败。可能原因是权限不足或驱动未就绪。验证方式:查看日志中的具体报错文本,确认是否指向权限或设备创建。处置:以管理员身份重新启动客户端,仍失败则检查系统是否缺少所需驱动组件。
现象三:网络通,但某个程序仍走直连。可能原因是该程序本身绑定了物理网卡,或流量被规则判定为直连。验证方式:查看内核日志中的出站命中记录,确认该连接是否进入过路由决策。处置:先复核分流规则,再考虑是否存在程序级的网络绑定。
现象四:IP 可达但域名不可达。可能原因是 DNS 配置缺失或指向不可达服务器。验证方式:改用公共 DNS 做对照解析。处置:回到 DNS 设置区域补齐配置,并确认解析策略与路由规则一致。
现象五:与其它 privacy tool 或安全软件同时开启时表现异常。可能原因是多方争夺默认路由。验证方式:逐个关闭其它组件,观察 TUN 是否恢复正常。处置:避免同时启用多个接管型网络组件,或明确划分使用时段。
排除故障之后,还需要确认一件事:配置改对了,并不等于流量真的按预期被接管。
十三、验证与观测:确认流量真的被接管
配置完成不等于生效。建议按下面的顺序做一轮验证,每一项都对应一个可观察的信号,而不是凭感觉判断。
- 检查系统网络适配器列表中是否出现新增的虚拟设备,这是虚拟网卡创建成功的直接证据。
- 在管理员命令行中查看路由表,确认默认路由的指向已发生变化,且存在返回本机的相关条目。
- 打开客户端日志,观察出站记录:访问不同归属的站点时,出站选择是否与预期一致。
- 用一个不支持系统代理的程序做对照测试,这是验证「全局接管」是否成立的关键一步,也是 TUN 相对于系统代理的核心价值所在。
经验性观察:TUN 模式下由于多了一层虚拟设备与协议栈处理,首次连接的握手过程可能略慢于系统代理,但稳定之后吞吐表现通常接近。这一趋势在不同硬件与内核实现下差异较大,不建议据此设定性能预期,更不要用单次测速结果下结论。
十四、适用与不适用场景清单
把判断标准沉淀成清单,方便在具体环境中快速决策。以下归类基于机制层面的必然性,而非特定版本的实现细节。
适合启用 TUN 的场景:存在必须走代理、却不读取系统代理设置的程序;需要覆盖 UDP 流量;需要让代理接管发生在应用无法干预的层级;本机网络环境简单,没有其它接管型组件常驻。
不建议启用 TUN 的场景:日常只有浏览器上网需求,系统代理已完全够用;机器上长期运行 WSL、容器或虚拟机且需要稳定互通;所在环境有企业级 privacy tool 或安全客户端强制接管网络;对故障恢复时间敏感,希望出问题时一键关闭即可恢复。
还有一种中间情况值得单独说明:设备频繁在办公网与家庭网之间切换的用户。办公网通常有内网域名与固定网段,TUN 的默认路由改写会让这些内网资源访问变得不稳定。这类用户更适合用系统代理配合精细的规则配置,而不是把整机流量下沉到网络层。
十五、最佳实践检查表
落地时按下面的顺序逐项确认,可以把试错成本压到最低。
- 先确认需求:是否真的存在系统代理覆盖不到的程序,这一步决定要不要继续。
- 再确认内核:所用内核是否具备 TUN 入站能力,必要时先切换内核并验证基础连通性。
- 再确认权限与驱动:以管理员身份运行,观察日志中虚拟网卡是否创建成功。
- 启用后立刻配置分流:至少加上局域网例外,避免打印机、NAS、内网服务被误伤。
- 同步配置 DNS:明确哪些域名走代理解析、哪些走本地解析,别留空。
- 做一次对照测试:用不支持系统代理的程序验证接管是否生效。
- 记录回退步骤:记住关闭开关的位置,以及路由异常时查看与恢复的方法。
这套顺序的核心思想是「先验证可行性,再扩大接管范围」。反过来做——先开开关再找问题——往往会把一个小配置项的问题放大成整机断网。
十六、常见问题
TUN 模式和系统代理可以同时开启吗?
启用 TUN 后必须用管理员权限运行吗?
TUN 模式会影响局域网设备访问吗?
关闭 TUN 后网络没有立刻恢复怎么办?
手机上有没有和 TUN 模式等价的设置?
十七、小结与下一步
回到最初的问题:V2RayN 的 TUN 模式之所以能实现全局代理流量转发,靠的不是某个开关,而是「虚拟网卡创建 + 路由改写 + 协议栈接管」这一套组合拳。它把接管点从应用层挪到了网络层,因此覆盖面更广,代价是权限要求更高、与其它虚拟网络组件的冲突面更大、故障后的恢复路径更长。
判断是否值得启用的标准并不复杂:当且仅当确实存在系统代理覆盖不到的程序,并且你愿意为这份覆盖面承担相应的排错成本时,TUN 才是合适的选择。否则,把系统代理用好、把路由规则写细,往往能以更低的复杂度达到同样可用的效果。
下一步建议按这个顺序推进:先在不影响日常使用的时段试用一次,完成前置检查清单中的四项确认;启用后立刻补上局域网例外与 DNS 配置;最后用不支持系统代理的程序做一次对照验证。整个流程走完,你会对这套机制的实际边界有清晰感受,而不是停留在「开关打开就完事」的层面。至于后续版本如何演进,请以官方发布的说明为准,不要依据来源不明的预告做配置决策。