你在 iPhone 上第一次打开小火箭、Stash 这类代理 App,系统弹出「想要添加 VPN 配置」,这不是 App 在偷偷装东西,而是 iOS 的硬性规定:任何想接管整台手机网络流量的 App,都必须通过 Apple 的 Network Extension(网络扩展)框架,在系统里登记一个 VPN 类型的配置。你点「允许」,等于让系统知道「这个 App 可以建一条隧道,把手机的流量交给它处理」。
很多人看到「VPN」三个字就犯嘀咕:我买的是机场订阅,不是 VPN 啊?简单讲,「VPN 配置」是 iOS 对这类连接的统一叫法,里面跑的可以是传统 VPN 协议,也可以是 Shadowsocks、Trojan 之类的代理协议。下面咱们按顺序把这件事讲透:弹窗背后的机制是什么、你点了允许以后系统里多了什么、哪些担心是多余的、哪些确实该留心。
说明一下信息来源:技术原理部分来自 Apple 开发者文档中 Network Extension 的几个页面(我们在 2026 年 10 月 27 日查阅),App 信息来自 App Store 公开页面。我们没有做任何速度或稳定性测试,也不评价哪家机场好坏。文档里没写的细节,下文会明确说「文档没写」,不替 Apple 脑补。
为什么代理 App 一定要「添加 VPN 配置」
在 iOS 上,普通 App 只能管好自己那一摊网络请求,没法随便看别的 App 在联网干什么,更没法替它们转发流量。想做「全局代理」,就得走 Apple 提供的官方通道:Network Extension 框架。
Apple 开发者文档对这个框架的概述里提到,它能让开发者「创建和管理 VPN 配置,使用内置的 VPN 协议(Personal VPN)或自定义 VPN 协议」。其中给自定义协议准备的有两类:
| 类型 | 文档里的定位 | 和你有什么关系 |
|---|---|---|
| Personal VPN | 系统内置的 IPsec 或 IKEv2 协议 | 手动在系统设置里填服务器信息的那种传统 VPN |
| Packet Tunnel Provider(数据包隧道) | 「面向数据包的自定义 VPN 协议」 | 大多数代理客户端用的就是这条路:自己实现协议,系统负责把数据包交给它 |
| App Proxy Provider(应用代理) | 「面向数据流的自定义 VPN 协议」 | 按流(flow)而不是按数据包处理,适合另一类场景 |
注意:Apple 文档讲的是机制,并没有点名某个具体的代理 App 用了哪一类。所以「小火箭用的就是数据包隧道」这类说法,咱们这里不下结论,只用它来说明这个机制是怎么回事。
数据包隧道是怎么工作的
Packet Tunnel Provider 这一页写得比较清楚,大意是这样一个流程:
- 系统启动 App 里内置的一个「App 扩展」(app extension),并创建隧道提供程序的实例。
- 系统开始把网络数据包转发给这个提供程序。
- 提供程序负责打开一条通往服务器的隧道,把数据包发出去;服务器那边回来的数据包,它再交还给系统。
文档在 NEPacketTunnelProvider 页面里进一步说,它通过 packetFlow 属性访问一块「虚拟网络接口」。提供程序可以设置这块虚拟接口的虚拟 IP 地址、DNS 解析配置、HTTP 代理配置、要包含和排除的目的网段,以及接口的 MTU。目的地址匹配的数据包会被分流到这个提供程序,由它按自己的隧道协议封装后发给服务器;收到服务器回来的包以后,再注入系统的网络栈。
说白了,你可以把它想成:系统在你的手机里临时「插了一块虚拟网卡」,凡是被设置为走这块网卡的流量,都先到代理 App 的扩展里过一遍,再由扩展决定怎么发出去。这就是为什么你打开代理之后,不只是 Safari,微信、地图、各种 App 的联网都可能受影响,因为接管发生在系统网络层,而不是某个 App 里。
文档里还有一个常被忽略的细节:Packet Tunnel Provider 可以运行在「目的 IP 模式」或「源应用模式」,后者是按应用走 VPN 的一种形式。不过 NETunnelProviderManager 页面写明,按应用 VPN(Per-App VPN)要通过 MDM(设备管理)来配置,开发调试阶段才有别的办法,所以咱们普通用户自己装的代理 App,默认就是「按目的地址」那一种。
你点「允许」,系统里多了什么
开发者要用 NETunnelProviderManager 这个类来创建和管理 VPN 配置。文档里有几条和你直接相关:
- 配置跟着创建它的 App 走。文档原话是,每一份配置都「与创建它的 App 关联」,App 只能看到自己创建的配置,看不到别的 App 的。
- 同一时间只能启用一个。文档说这类配置属于「常规企业 VPN 配置」,系统上同一时间只能启用一个。所以你同时装了好几个代理或 VPN App 时,打开一个,另一个就会被顶掉,这是系统规则,不是谁的 bug。
- 开发者需要特定权限。使用这个类需要 com.apple.developer.networking.networkextension 权限,开发者要在开发者账号里创建 App ID 时启用。文档没有写这个权限需不需要 Apple 单独审批,也没写具体的审核标准,咱们别随便下结论。
- VPN 开着的时候,iCloud 专用代理会让位。文档在数据包隧道那页提到:当 VPN 配置处于活动状态时,连接使用 VPN,而不是 iCloud 专用代理(Private Relay)。
至于「点允许」时系统具体弹什么文案、要不要验证面容 ID 或密码,Apple 开发者文档的这几页没有写。界面细节以你手机上的 iOS 版本为准,不同版本措辞可能不一样。
「VPN」「代理」「机场」到底是什么关系
这三个词在聊天里经常混着用,其实说的不是同一层东西:
| 词 | 指的是 | 举例 |
|---|---|---|
| VPN 配置 | iOS 系统里登记的一条「网络隧道入口」 | 你点「允许」时创建的那个东西 |
| 代理客户端 | 装在手机上、负责按规则转发流量的 App | 小火箭、Stash、Surge 等 |
| 机场(订阅) | 服务商提供的一批服务器节点和订阅链接 | 你导入客户端的那串链接 |
举个例子:小火箭的 App Store 页面把它描述成「面向 iPhone/iPad 的基于规则的代理工具」,能「捕获设备上任何应用的 HTTP/HTTPS/TCP 流量,并重定向到代理服务器」。页面也明确写了:Shadowrocket 是独立的网络工具,不包含任何代理服务或服务器资源,用户需要自己提供配置。也就是说,App 负责「接管并转发」,节点从哪来是另一回事,这正是机场订阅的位置。
如果你还没选好客户端,可以看《iPhone 代理客户端哪个好?小火箭 Stash Surge 对比》,里面按价格、系统要求和公开功能做了对照;装好之后想自己写分流,可以接着看《小火箭规则怎么设置?iPhone 分流:域名、IP、GeoIP 写法》。
点允许之前,值得看的五件事
系统机制本身是 Apple 设计的,这条隧道一旦建起来,进出手机的流量就会先经过那个 App 的扩展。所以真正该谨慎的不是「弹窗」,而是「你把流量交给了谁」。点允许之前,可以过一遍这个清单:
- 确认是从 App Store 下载的。来路不明的安装包、企业签名包不要装。不同地区的 App Store 上架情况不同,你自己的商店里搜不到,就别去找「破解版」。
- 看开发者和隐私标签。例如 Shadowrocket 的开发者是 Shadow Launch Technology Limited,Stash 的开发者是 Stash Networks Limited。隐私标签是开发者自己申报的,参考即可,不等于第三方审计。
- 看有没有官方网站和文档。一个接管全部流量的工具,连像样的说明文档都没有,就别用。
- 订阅链接当账号密码保管。别发群里、别贴论坛,泄露后要去服务商那里重置。
- 机场按月买。服务商可能随时停运或跑路,不要一次买很长周期。
已经点过允许,想看、想删怎么办
在 iPhone 上一般可以在「设置 → 通用 → VPN 与设备管理 → VPN」里看到已添加的配置,需要时可以删除,具体界面以你的 iOS 版本为准。删除之后,再次打开代理 App 并开启连接,系统会重新请求添加配置。
如果开关一打开就自动关闭,或者怎么都连不上,可以直接按《小火箭连不上怎么办?iPhone 节点超时、订阅更新失败排查清单》一层层排查。想彻底清空网络配置的话,要留意「还原网络设置」会清掉手动添加的 VPN 配置,细节见《iPhone 怎么重置网络设置》。
常见问题(FAQ)
点了允许,我的手机就被「监控」了吗?
不能这么简单下结论。机制层面,流量确实会先交给那个 App 的扩展处理,所以它理论上能看到经过它的数据(HTTPS 加密内容另当别论)。能不能放心,取决于你信不信这个 App 和它的开发者,而不是弹窗本身。这也是上面强调看开发者、隐私标签和官方文档的原因。
我拒绝了弹窗,会怎样?
系统里不会创建这份配置,App 也就没法接管流量,连接开关打不开或者打开又弹回去。想用的话需要重新开启连接并允许。
为什么同时装两个代理 App,只能开一个?
按 Apple 文档,这类自定义 VPN 配置属于常规企业 VPN 配置,系统同一时间只能启用一个。所以先关掉一个再开另一个,别指望叠加。
开了代理,iCloud 专用代理还生效吗?
Apple 文档写明,VPN 配置处于活动状态时,连接使用 VPN,而不是 iCloud 专用代理。两者不是同时用的关系。
这个「VPN」和手动填服务器地址的 VPN 是一回事吗?
不一样。手动填的是系统内置的 IPsec 或 IKEv2(Personal VPN);代理 App 走的是 Network Extension 里的自定义隧道,协议由 App 自己实现。两者在设置里都会以「VPN」的名字出现。
换新手机后还要重新允许吗?
配置是登记在你那台手机的系统里的,新手机上重新装 App 并开启连接,通常需要重新允许,订阅也要重新导入。换机迁移可以参考《iPhone 如何从备份恢复》。
总结与提醒
一句话:「添加 VPN 配置」是 iOS 给全局代理工具开的唯一正规入口,弹窗本身是系统机制,不是 App 的花招;该谨慎的是你把流量交给了哪个 App、连着哪个服务商。点允许前看开发者与隐私标签,订阅链接当密码保管,机场按月买。
请遵守你所在地的法律法规,本文只做技术原理说明,不构成法律意见。
信息来源(查询日期:2026 年 10 月 27 日):Apple 开发者文档 Network Extension、Packet Tunnel Provider、NEPacketTunnelProvider、NETunnelProviderManager;Shadowrocket 与 Stash 的 App Store 页面。文档未写明的内容(如弹窗具体文案、权限审批标准)本文均未作结论,发现信息有出入请以官方页面为准。