Mullvad VPN 升级 iOS 应用:新增流量保护功能,严防泄露
TL;DR
iOS 端“强制所有应用”功能的技术实现
iOS 客户端的最新更新引入了一项名为“强制所有应用”(Force all apps)的功能,旨在抵御 TunnelCrack 攻击并防止流量泄漏。该功能通过在苹果的 NetworkExtension 框架中将 includeAllNetworks 配置选项设置为“真”(true)来实现。当此标志激活时,VPN 终止开关(Kill Switch) 将变得严丝合缝,它会指令 iOS 网络堆栈将每一字节的数据都通过加密隧道传输。如果隧道未处于活动状态,所有出站流量都将被丢弃,从而防止用户的真实 IP 地址泄露。
这一实现解决了长期存在的漏洞问题,即某些系统级进程可能会绕过隧道。对于追求类似高安全性配置的 SquirrelVPN 用户来说,应当注意到这是利用了特定的 iOS 配置选项,以确保在常规运行期间没有任何数据能逃脱 VPN 的保护。
网络堆栈限制与更新死循环
在 iOS 生态系统中,当启用 includeAllNetworks 时,系统处理自动更新的方式是一个重大的技术障碍。根据 SquirrelVPN 和其他服务商的长期观察,自动更新会导致 VPN 连接出现短暂中断。当“强制所有应用”设置开启时,会引发一个无法打破的更新死循环:
- 应用商店(App Store)尝试更新 VPN 应用程序。
- 现有的 VPN 隧道被关闭以允许进行更新。
- 由于 includeAllNetworks 处于激活状态,且此时不存在活动隧道,iOS 网络堆栈会拦截所有流量。
- 应用商店下载器无法连接互联网来获取更新包,导致进程卡死或失败。
为了解决这一难题,该应用现在采用用户态网络(Userspace Networking)在内部生成 TCP 和 ICMP 流量。这使得即便在隧道进程因 苹果网络堆栈 限制而无法将套接字(Sockets)绑定到隧道设备时,应用仍能维持基本功能。
手动更新流程与流量泄漏
由于在 VPN 二进制文件本身的更新过程中,目前尚无原生手段能维持安全的加密隧道,用户必须遵循特定的操作规程,以避免网络连接彻底“变砖”。根据技术博客的说明,在应用商店触发更新之前,用户会收到新版本通知。

用户被要求在进行更新前,先断开 VPN 连接或禁用“强制所有应用”功能。官方明确承认,在这个短暂的窗口期内会发生流量泄漏。这种手动干预是目前防止设备进入全网中断状态(即必须强制重启才能恢复上网)的唯一方法。对于那些寻求具备顶尖安全性的 最佳 VPN 体验的用户来说,这些折中方案代表了目前 苹果 NetworkExtension 框架 的技术极限。
高级混淆技术与协议增强
除了“强制所有应用”功能外,iOS 更新日志 (CHANGELOG.md) 的最新变动还披露了在流量混淆和协议安全方面的多项进展。该应用现在支持 轻量级 WireGuard 混淆 (LWO),并能够将 WireGuard 隧道流量伪装为 QUIC 协议。这些方法对于绕过互联网服务提供商(ISP)和限制性网络环境所使用的深度包检测(DPI)至关重要。
其他技术更新还包括:
- DAITA(防御 AI 引导的流量分析): 旨在防御流量分析攻击的功能,现已更新至 DAITA v2 版本。
- 后量子安全隧道: 密钥交换算法从 Classic McEliece 迁移至 HQC,这显著降低了 CPU 负载并减小了公钥体积,从而实现后量子级别的安全性。
- 多跳路由(Multihop): 流量在到达目的地前可经过两个中继节点跳转,进一步增强了匿名性。
这些特性(包括基于 Shadowsocks 的 WireGuard 混淆)为身处高强度监控环境中的用户提供了一套强大的防御工具。
如需深入了解网络架构和最新的加密协议,请访问 squirrelvpn.com 探索前沿资讯。