iOS Per-App VPN未连接到互联网

时间:2019-03-21 06:03:39

标签: ios vpn mdm

我们正在使用在iOS上运行的Per-App VPN开发一个应用。此容器应用程序旨在让我们的某些特定应用程序在某些时间通过VPN连接网络,而所有其他应用程序则不能。

我们希望这些特定的应用程序在安装容器应用程序和配置文件后,在打开VPN之前能够正常连接网络。并且,一旦在容器应用中手动打开了VPN,这些特定的应用就会通过VPN连接网络。

我有些问题找不到答案。

  1. 我已将NETestAppMapping键添加到“开发”中我的容器应用程序的Info.plist中。这些特定应用程序的捆绑标识符被添加到NETestAppMapping中。在构建了容器应用程序并通过Apple Configurator 2安装了配置文件之后,我发现那些特定的应用程序无法连接到Internet,直到我在容器应用程序中打开了VPN。正常吗?

  2. NETestAppMapping是在开发中配置那些特定应用程序的方法。我想知道用于指定应用程序映射的生产机制。

此外,曾经发生过一件很奇怪的事情。我从iPhone删除了配置文件,从容器应用程序删除了NETestAppMapping。然后,我以常规方式在容器应用中打开了VPN。完成此操作后,我发现我们想要的功能已实现。

非常感谢您。

1 个答案:

答案 0 :(得分:1)

与Per-App VPN关联的应用程序将仅通过Per-App VPN路由其流量。如果禁用了“按需”功能,并且VPN处于关闭状态,则该应用程序将没有流量。

这样,我看到两种方法可以使应用仅在某些时间通过Per-App VPN路由:

  1. 使用NEPacketTunnelProvider来实现VPN的方式,即VPN始终按需启动并继续处于“活动”状态,但是VPN应用程序可用于切换NEPacketTunnelProvider是否实际上是通过VPN路由流量,或者是否只是充当TCP / UDP转发器。

  2. 在VPN应用中切换时,利用MDM及其SDK(假定支持)将应用与Per-App VPN关联或取消关联。请注意,这可能会很笨拙,且会有时间延迟,并且如果您的应用正在运行,可能会导致其被终止。我不推荐这种方法。

值得注意的是,NETestAppMapping仅适用于开发版本,不适用于发行版本(例如Enterprise(内部)或App Store)。您将需要使用MDM来利用Per-App VPN。

以结合使用NEPacketTunnelProvider和数据包转发的示例为例,我看一下本文:Does your phone spy on you? by Severin Amrein