3

我正在开发一个 NetworkExtension,它使用NEPacketTunnelProvider来提供类似 VPN 的隧道,以便我可以修改流量。

这对我迄今为止尝试过的所有应用程序都非常有效,但 Facebook Messenger 似乎可以忽略它。我首先看到流量通过隧道,应该被阻止(用于测试),但随后消息仍然成功发送。

对我来说,这表明 Messenger 首先通过隧道,当它不起作用时,它有某种回退。无论我是使用 Wifi 还是蜂窝数据,都会发生这种情况。起初我认为当 WiFi 不工作时它可能会以某种方式回退到蜂窝网络,但即使我在 iOS 级别禁用蜂窝网络,当隧道处于活动状态时,Messenger 仍然可以工作。

我尝试获取所有系统路由(即 IP 和掩码)并手动将它们设置为includedRouteson ,NEIPv4Settings但这没有效果。

这看起来像 Messenger 确实绕过了 VPN 隧道吗?或者也许还有别的东西在起作用?

到目前为止,我基本上已经尝试了所有配置组合,似乎没有任何方式影响 Messenger。Signal、Instagram、YouTube 等应用程序可以通过隧道成功切断网络。

编辑:在苹果官方论坛上找到这个:https ://developer.apple.com/forums/thread/122330

实际上,Facebook 信使将流量发送到 iOS 中的所有活动接口。当从设置中禁用移动数据时,它甚至会通过蜂窝网络发送流量。

编辑 2:我尝试了新的 iOS 14 配置选项includeAllNetworks,它似乎适用于 Messenger,但不知何故弄乱了 Signal 或 WhatsApp 等其他应用程序。

当我没有打开此标志时,Signal 与我的 VPN 一起工作,我可以看到它的流量,但是当我启用此标志时,Signal 不会发送消息也不会接收它们。

4

1 回答 1

2

应用程序可以使用低级 API 并通过某些接口(例如使用绑定)强制流量,并超出您的 VPN。

强制使用 VPN 的方法是在您的 VPN 配置中启用标志 includeAllNetworks -

manager.protocolConfiguration!.includeAllNetworks = true

于 2021-04-05T11:59:39.617 回答