强制所有 App 流量进入隧道
摘要
Mullvad VPN 的 iOS 版新增“强制所有 App”开关,通过启用 includeAllNetworks 阻止一切流量泄漏,并接受可能导致更新失败的苹果系统缺陷。
<p><a href="https://lobste.rs/s/2jqoor/force_all_app_traffic_into_tunnel">评论</a></p>
查看缓存全文
缓存时间: 2026/04/21 17:07
# 强制所有 App 流量进入隧道
来源:https://mullvad.net/en/blog/force-all-app-traffic-into-the-tunnel
一年前,我们曾撰文(https://mullvad.net/blog/why-we-still-dont-use-includeallnetworks)说明 Apple 网络栈的 bug 导致 iOS 版应用无法达到理想的安全性。这些 bug 至今仍在,但我们已设法让应用变得更安全。
### 问题所在
由于 Apple NetworkExtension 框架的复杂性,我们的 VPN 应用在 iOS 上始终存在特定场景下的流量泄漏。虽然已知修复方案,却伴随显著副作用——最严重的是它会破坏应用更新流程,使用户陷入“更新死循环”:
- AppStore 判断需要更新我们的应用
- iOS 在更新过程中“砖化”网络栈
- 用户重启手机
- 手机恢复联网
- AppStore 再次判断需要更新我们的应用
- iOS 再次在更新时“砖化”网络栈
### 临时方案
我们决定不再等待,优先为用户提供尽可能高的隐私与安全,即使这意味着牺牲部分体验。
随着越来越多用户亲身遭遇这些限制,问题被上游修复的可能性也会提高。
因此,我们即将发布新版 iOS 应用,其中包含“*强制所有应用*”功能。开启后,底层会将 *includeAllNetworks* 配置设为 true。我们已尽量让用户在不过度繁琐的前提下,明确知晓并主动启用该功能。手机仍可能陷入更新死循环,但现在用户会在自动更新前收到新版本可用通知。
### 更新应用
为避免陷入更新死循环,你必须采用以下任一方式:
- **更新时断开 VPN**。更新后应用不会自动重连,但“*强制所有应用*”依旧保持开启。
- **更新时关闭“强制所有应用”**。更新后应用会自动重连,但“*强制所有应用*”需手动重新开启。
两种情况下,更新期间流量都会泄漏——我们目前找不到规避办法。
我们预估仅有少数启用该功能的用户会遇到网络栈损坏,对此我们也无能为力。若你受到影响,我们唯一能做的就是鼓励你把痛苦经历整理成反馈报告,提交给 Apple。
至于另一个 bug:启用 *includeAllNetworks* 后,我们的隧道进程无法将套接字绑定到隧道设备——该问题依旧存在。因此,我们继续使用用户空间网络作为临时 workaround。
相似文章
GrapheneOS 修复了 Google 拒绝修补的 Android VPN 泄漏漏洞
GrapheneOS 发布了一项更新,修复了 Android 16 原生系统中一个被 Google 拒绝修补的严重 VPN 泄漏漏洞。该修复措施禁用了一项 QUIC 连接优化功能,此前该功能允许应用绕过 VPN 保护并暴露真实 IP 地址。
苹果无视DMA互操作性请求,与自家文档自相矛盾
FSFE报告显示,苹果拒绝了全部56项DMA互操作性请求,与其自身文档相悖,将第三方开发者挡在关键iOS/iPadOS功能之外。
苹果修复漏洞:警方曾借此从iPhone提取已删除聊天记录
苹果修补了iOS漏洞,该漏洞允许执法部门通过缓存长达一个月的通知,提取已删除的Signal消息;此前404 Media披露FBI已利用该漏洞。
欧盟将VPN称为年龄验证推进中"需要堵上的漏洞"
欧洲议会研究服务机构(EPRS)在网络年龄验证法的背景下,将VPN标记为"需要堵上的漏洞",并对儿童绕过地区内容限制表示担忧。这一举措引发了隐私倡导者和VPN服务商的强烈反对,凸显了儿童安全监管与数字隐私权之间的紧张关系。
masterking32/MasterDnsVPN
MasterDnsVPN 是一个开源的科学/研究项目,通过 DNS 查询和响应来隧道传输 TCP 流量,与 DNSTT 和 SlipStream 等同类工具相比,提供了多路径路由、ARQ 可靠性传输以及低协议开销等高级特性。