基础概念 · 系统代理与TUN

系统代理与 TUN 的区别:选择、验证与恢复

浏览器能打开网页,终端却连不上,问题可能出在应用没有读取系统代理。系统代理和 TUN 是两种把流量交给客户端的方法,先选适合应用的入口,再检查出站。

全部概念工具使用教程引用资料

系统代理:应用先读取代理设置

开启系统代理后,客户端会把代理地址和端口写入系统设置。读取这组设置的应用会连接该入口;使用自己网络配置的应用,可能仍沿原来的路径访问。

不同软件使用的网络库、自身设置和运行环境可能不同。浏览器能打开网页,命令行工具却失败,首先要检查命令行工具是否读取系统代理或代理环境变量,而不是直接判断节点失效。应用也可能自行设置代理,覆盖系统设置。

微软对WinINet与WinHTTP的比较说明,不同网络接口的配置方式有区别。这只是Windows中的一个例子,不能据此推断所有Windows应用的行为,更不能套用到macOS、Linux或手机。

TUN:由路由把数据包交给虚拟网卡

TUN 是供程序读写 IP 数据包的虚拟网络接口。系统路由把相应流量交给它,再由客户端处理;系统代理则需要应用主动连接代理入口。

Linux内核TUN/TAP文档区分了处理IP包的TUN与处理以太网帧的TAP。代理客户端还需要处理这些包、建立出站连接并转发数据。创建了接口,只完成了接管链路中的一部分。

在Android上,客户端通常通过系统的VpnService接口建立本地TUN并请求用户授权。桌面系统可能需要服务或管理权限,具体以客户端官方说明为准。同样叫TUN的开关,在不同平台上也可能有不同的权限和实现条件。

系统代理让支持设置的应用主动连接入口;TUN 由路由接收 IP 包。两者进入客户端后仍需选择出站。
两种接管方式的入口不同,进入客户端后的去向仍由规则和出站决定。

按需要接管的应用选择

先列出需要使用的应用。浏览器和支持代理设置的工具,可以先试系统代理或显式代理;没有代理选项的程序,再检查客户端是否提供合适的 TUN 接管。

两种接管方式的使用差别
观察项系统代理TUN
流量进入方式应用采用系统提供的代理配置被系统路由到虚拟接口的IP流量交给程序
常见排查起点应用是否读取设置、入口地址和端口是否正确接口和路由是否建立、权限与排除规则是否符合预期
需要关注的影响代理例外、应用自带设置、退出后的设置恢复局域网访问、其他VPN、DNS、IPv4与IPv6覆盖范围

例如,只需要浏览器和一个支持显式代理的开发工具,可以先分别确认它们的代理设置。某个应用没有代理选项,再检查客户端是否提供适用的TUN接管。客户端的安装和权限步骤可参考Clash Verge Rev指南或v2rayN指南。

接管范围与出站选择

流量进入 TUN 后,仍然要经过分流选择。规则可能让它直连、连接远端或被拒绝;客户端切到全局,也不会自动接收原本没有进入它的应用流量。

v2rayN官方说明明确区分系统代理入口与核心路由。不同客户端的“全局”含义还要看其实现和配置,不能把一个工具中的标签当成所有工具的统一标准。

TUN接管本身也可能有限制。IPv4与IPv6的路由、应用排除、目标地址排除和DNS处理都会影响实际范围。比如sing-box TUN配置支持自动路由、指定路由和排除路由等选项。因此“网卡已创建”与“某个应用的请求已经过指定出口”是不同的验证结果。

VPN 图标、TUN 与加密的关系

手机上的 VPN 图标反映系统接口状态。要判断连接是否受到保护,还得看网站 HTTPS、客户端到远端的协议,以及证书校验是否正常。

TUN 本身不是远端加密协议。TLS 1.3保护通信双方之间的通道;需要结合每一段连接,而不是根据一个开关判断。

实用的判断方法是分别看接管状态、真实请求结果与证书错误。如果网页报告证书不可信,应核对设备时间、目标域名和证书链。保留证书校验,再修正时间、域名或信任链。

对照应用请求与连接记录

用出问题的应用发一次请求,并在客户端里找同一时间、同一目标的连接记录。记录中的规则和出口,比连接开关更适合解释这次访问的路径。

  1. 先记录当前接管方式、分流模式和选中的出口,暂停其他会改变路由的客户端,减少相互影响。
  2. 客户端提供本机HTTP或SOCKS入口时,确认入口正在监听;需要显式验证时,到验证命令工具填写客户端显示的实际协议和端口,不套用别人的默认值。仅提供TUN的工具可直接用实际应用与连接记录对照。
  3. 对同一个可用目标发起一次显式代理请求,再用需要排查的应用访问。记录时间、域名、报错和成功或失败。
  4. 在客户端连接记录中查看该目标是否出现、命中了什么规则、最终使用哪个出口。应用缓存或连接复用会影响观察,可重新发起连接再比较。

如果显式代理请求成功,应用请求却不出现在记录中,重点查应用接管。如果记录已经显示代理出站但目标仍失败,就继续查DNS、远端连接或目标服务。出口IP变化可以补充证据,但只代表这次请求的出口。

切换方式和断网恢复

切换前记下已经能用的设置。先验证当前入口,只在需要接管额外应用时再试 TUN;出现断网后,先停止接管并检查残留系统代理。

启用TUN前,记下原有VPN、代理和局域网访问情况。办公室网络、远程桌面、打印机或开发容器可能依赖特定路由,测试时应一起检查,而不能只验证公网网页。TUN与系统代理是否可以同时开启,要看客户端是否设计为支持该组合。

退出后断网的恢复顺序

发生断网时,先从客户端停止接管并正常退出,检查系统代理是否仍指向已停止的本机入口,再确认其他VPN和网络连接状态。不要直接删除所有网络接口或把路由表清空。恢复后回到上一个可用配置,保留脱敏错误信息,按网络故障分层排查逐步定位。

常见问题

系统代理和TUN可以同时开吗?

部分客户端支持同时启用,但不是通用要求。遵循具体客户端的说明,先分别验证再组合;其他VPN、重复接管和不合适的路由可能造成冲突。

TUN模式是不是一定比系统代理更快?

没有这种保证。两者首先是接管方式的区别。实际性能还取决于实现、设备、协议、出站网络和目标;应在相同目标与配置下测量,不能根据开关名称判断。

为什么TUN已开启,但局域网设备反而访问不到?

检查局域网地址是否被新路由接管,以及客户端是否有适当的排除或直连规则。先停用TUN比较现象,再核对实际路由和配置,避免直接改动整张路由表。

参考资料

原理和协议定义可查以下标准与官方文档。文中的流程图由 AFQKit 绘制。

HTTP与SOCKS5 →HTTP 代理与 SOCKS5:端口、DNS 和 CONNECT客户端、内核与订阅 →客户端、内核与订阅:从安装到连接代理与 VPN →代理与 VPN 有什么区别?从请求路径看起

返回基础概念 · 按症状排查问题