强制所有 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。
相似文章
推出VPN服务器出口IP指纹缓解措施
Mullvad VPN 正在推出一种新的缓解措施,以防止VPN服务器之间的出口IP指纹识别,该措施已应用于多个地点的多台服务器。
@q1ngyang: 才发现iPhone蜂窝网络中 “限制 IP 地址跟踪” 设置选项,是导致蜂窝网络下mihomo配置文件无法使用Apple 智能的罪魁祸首…… 它优先级似乎高于ClashMi,会将自家服务还有未加密的DNS请求之类的流量发到Apple运营的…
发现iPhone蜂窝网络中的“限制IP地址跟踪”设置会导致mihomo配置无法正常使用Apple智能,因为该设置优先级高于代理工具,会将未加密的DNS请求等流量直接发送至Apple服务器,从而暴露中国IP被拒绝服务。
近期 Android 版本中的任意应用都可能泄露特定流量
研究人员在近期的 Android 版本中发现了一项安全漏洞,该漏洞可能导致任何已安装的应用泄露特定的网络流量。
@itsharmanjot: 防火墙无法阻止这一点。一位开发者刚刚开源了一个隧道,可通过端口53走私你的整个互联网……
一位开发者开源了MasterDnsVPN,这是一款通过DNS端口53创建加密隧道的工具,可绕过必须保持该端口开放的防火墙。它提供了可靠性、多个解析路径,并支持多种加密算法,充当免费的VPN替代方案。
Barflare
Barflare 是一款 macOS 菜单栏应用,用于管理 Cloudflare Tunnels。