VPN 与代理的主要区别在于怎样接管联网流量:应用代理由支持代理的应用把连接交给代理服务器;VPN 可以通过虚拟网络接口和路由接管指定流量。**VPN 不一定覆盖整个设备,代理客户端也不一定只处理一个应用。**选择时,应分别确认哪些应用被接管、目标连接走哪条路、DNS 如何解析,以及哪一段连接受到加密保护。
系统代理、VPN 和 TUN 是不同层面的概念
| 名称 | 描述什么 | 使用时需要确认什么 |
|---|---|---|
| 应用代理设置 | 应用把连接交给代理的方式 | 应用是否支持并使用该设置 |
| 系统代理设置 | 系统提供的代理配置入口 | 目标应用是否遵循设置,是否存在绕过规则 |
| VPN | 虚拟专用网络连接方案 | 接管哪些应用或目标,远端能访问哪些网络 |
| TUN | 供程序读写 IP 数据包的虚拟网络接口 | 哪些流量进入接口,程序随后怎样转发 |
| 商业服务名称 | 服务或套餐的称呼 | 实际协议、客户端模式与配置 |
应用代理依赖应用使用代理连接。假设浏览器使用了代理,而另一个应用没有使用该设置,就不能用浏览器的联网结果判断另一个应用的路径。这是解释机制的假设场景,不是对某款浏览器或系统版本的实测结论。
TUN 则提供另一种接管入口。Android 官方指南说明,应用可以通过 VpnService 建立本地 TUN 接口,读取发出的 IP 数据包,再由应用处理与网关之间的传输。接口负责交付数据包,后续连接由应用实现。
因此,TUN 不是某一种远端代理协议,也不能仅凭“TUN 模式”判断流量是否全部经过远端服务器。还要看路由范围和客户端的转发规则。
🔥 推荐:VPN与代理有什么区别?看流量接管方式、分流与加密边界相关的稳定 VPN 方案
如果你正在了解“VPN与代理有什么区别?看流量接管方式、分流与加密边界”,可以结合节点稳定性、客户端兼容性、连接失败排查和隐私安全,选择更适合长期使用的网络加速方案。
VPN 可以分流,TUN 也有接管范围
Microsoft 的 VPN 路由文档适用于 Windows 10 和 Windows 11,区分了两种配置:
- 分流:指定路由经过 VPN,其余流量通过物理网络接口。
- 强制隧道:通过 VPN 默认路由扩大覆盖范围;物理接口上的更具体路由仍可能影响实际路径。
例如,公司内网地址经过 VPN,普通网页直连,是一种分流场景。此时浏览器没有使用 VPN 出口,不能据此认定公司内网连接失效。
Android 官方指南还介绍了按应用筛选 VPN 流量的能力。路由回答“哪些目标进入连接”,应用筛选回答“哪些应用可以使用连接”,两者需要一起看。
代理客户端的接管方式也不局限于应用设置。sing-box 的 TUN 文档提供默认路由、自定义路由和排除路由等选项,说明虚拟接口接管同样可以限定范围。打开 TUN,并不自动证明所有目标都使用同一个远端出口。
这里引用 sing-box 仅用于解释机制。抓取页面包含多个版本的字段变更,不能直接作为已安装版本的配置模板,也不能把其中的能力泛化为所有代理客户端的能力。
Android 的 VPN 图标能证明什么
Android 官方指南说明,首次启用 VPN 应用时,系统会请求用户授权;连接活动时,状态栏会显示 VPN 图标。
这个图标表示系统中的 VPN 连接处于活动状态。它没有直接说明远端使用哪种协议、哪些应用被纳入、哪些目标直连,也不能替代对加密方式的核对。
如果一个客户端请求 VPN 授权,应继续查看它的连接模式、应用范围和路由配置。本文依据的是 VpnService 应用开发指南,不据此推断各 Android 版本的内置协议支持情况,也不保证具体产品兼容性。
加密要分清两条连接
先把路径拆开:
设备 → 代理服务器或 VPN 网关 → 目标网站
设备到中转服务器的加密,与设备到目标网站的 HTTPS 保护,是两个不同条件。
HTTP 代理也可以承载网站 HTTPS
RFC 9110 的 CONNECT 规范说明,CONNECT 请求代理建立通往目标的隧道;成功后,代理在两个方向转发数据。客户端可以通过这条隧道建立到目标的 TLS 连接。
因此,通过支持 CONNECT 的 HTTP 代理访问 HTTPS 网站时,不能把后续网页内容概括为“设备到代理之间全部是明文”。在正常验证目标证书、没有 TLS 拦截的场景下,网站 TLS 保护的是客户端与目标网站之间的通信。
但建立隧道的 CONNECT 请求与后续网站 TLS 数据不同。CONNECT 请求包含目标主机和端口;网站内容受到 TLS 保护,不等于这项隧道建立信息也被 HTTP 代理连接加密。代理还可以限制允许建立隧道的目标或端口,不能仅凭 CONNECT 推断任意连接都能通过。
HTTPS 代理保护设备到代理这一段
在 everything curl 的术语中,HTTPS 代理指客户端使用 HTTPS 连接代理服务器。它为客户端到代理这一段增加 TLS,其他主要工作方式仍与 HTTP 代理相似。
这层 TLS 的另一端是代理服务器。它不能被当作“代理也无法读取普通 HTTP 请求”的依据:是否另有客户端到目标网站的 TLS,要看目标连接是否使用 HTTPS,以及是否通过隧道建立该连接。
可以按下面的方式区分:
| 连接方式 | 设备到代理的 TLS | 客户端到网站的 TLS |
|---|---|---|
| HTTP 代理访问 HTTP 网站 | 没有由 HTTP 代理连接提供 | 没有由 HTTP 网站提供 |
| HTTP 代理通过 CONNECT 访问 HTTPS 网站 | 代理连接本身没有额外 TLS | 可以在隧道中建立 |
| HTTPS 代理访问 HTTP 网站 | 有,终止于代理 | 没有由 HTTP 网站提供 |
| HTTPS 代理通过 CONNECT 访问 HTTPS 网站 | 有,终止于代理 | 可以另行在隧道中建立 |
表格描述的是上述协议连接模型,不包含企业 TLS 检查或其他额外封装。具体软件界面中的“HTTPS”标签含义,仍需核对其文档。
VPN 也有保护边界。Android 官方指南要求应用与 VPN 网关之间使用强加密;这项要求不能扩展成“网关到任何网站都自动加密”。访问网站时,仍应确认网站使用 HTTPS 并正常验证证书。
出口 IP、DNS 和路由分别判断
这三个检查项对应不同环节:
- 出口 IP:某个请求到达目标服务时,使用什么来源地址?
- DNS 路径:域名由谁解析,查询通过哪条连接发送?
- 目标路由:访问该目标的连接是否进入代理或 VPN?
SOCKS5 规范允许请求携带 IPv4 地址、域名或 IPv6 地址。因此,“使用 SOCKS5”本身不足以证明域名一定在本地解析,或一定交给远端处理,需要继续核对客户端实际发送的地址类型与解析设置。
同样,浏览器中某个请求的出口结果不能代表其他应用或所有目标。发现出口不符合预期时,应先确认该请求是否进入预期路径,再单独检查 DNS;不能直接把出口 IP 未改变归因于 DNS 泄漏。
以下是只读诊断顺序,本文没有执行这些检查:
- 查看目标应用使用的代理设置和绕过列表。
- 查看客户端连接模式、应用范围、目标路由与排除项。
- 对具体目标查看已有连接记录,确认客户端选择的路径或出口。
- 单独查看 DNS 配置和已有解析记录,判断解析位置与查询路径。
如果记录不足以说明实际路径,应保留“不确定”,不要把“已连接”状态当成全部流量已被接管的证明。
按实际需求选择
| 需求 | 优先确认的能力 | 选择前要核对什么 |
|---|---|---|
| 只让浏览器使用指定出口 | 浏览器或应用代理 | 应用支持情况、绕过范围、目标连接方式 |
| 只接管一个应用 | 应用代理或按应用 VPN | 客户端是否提供应用筛选 |
| 接管不支持代理设置的应用 | 虚拟接口与路由接管 | 流量是否进入接口,客户端能否处理相关流量 |
| 访问公司内网 | 公司提供的接入方案 | 账号权限、网关可达范围、内网路由和 DNS 要求 |
| 内网走公司连接,普通网页直连 | 分流配置 | 内网目标是否被纳入,其余流量是否按预期直连 |
访问公司内网,应以公司提供的接入配置为准;服务名称相似,不代表它能到达公司的网络。只需要浏览器代理时,先确认应用支持情况;需要扩大接管范围时,再核对虚拟接口、路由和应用筛选。
安全性与速度也不能仅凭“VPN”或“代理”名称排序。明确实际流量路径和加密边界,才有条件比较具体方案。