【问题标题】:iOS Per-App VPN Not Connected To InternetiOS Per-App VPN 未连接到 Internet
【发布时间】:2019-08-11 23:07:22
【问题描述】:

我们正在开发一款在 iOS 上运行的带有 Per-App VPN 的应用。这个容器应用程序是为我们的一些特定应用程序设计的,可以在特定时间通过 VPN 连接网络,而所有其他应用程序则不能。

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

我有些问题找不到答案。

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

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

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

非常感谢。

【问题讨论】:

    标签: ios vpn mdm


    【解决方案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 仅适用于开发版本,不适用于分发版本(例如企业(内部)或 App Store)。您需要使用 MDM 才能使用 Per-App VPN。

    有关使用NEPacketTunnelProvider 进行数据包转发的示例,我会看一下这篇论文:Does your phone spy on you? by Severin Amrein

    【讨论】:

    • 非常感谢。进一步的问题,我如何使用 MDM 来配置特定应用程序的列表?您能否提供有关这方面的任何文件或经验?
    • 您的意思是如何配置 MDM 以将应用与 Per-App VPN 相关联?如果是这样,长答案是需要将 Per-App VPN 的 VPNUUID 作为应用程序的 ApplicationAttribute 提供。 Apple 的“配置文件参考”和“移动设备管理器配置文件参考”对此进行了概述。简短的回答是,每个 MDM 对该过程的管理略有不同,但通常会使用户变得简单(例如,点击几下按钮)。您最好只寻找支持 Per-App VPN 配置的 MDM。
    • 嗨@JordanJohnson 我需要类似的解决方案,我已经在 MDM 上部署了应用程序,并关联了 Per-App-VPN。但应用无法自动调用 VPN 连接。
    • @JordanJohnson - 我是否需要实现任何代码库才能在打开我的应用程序时调用 vpn。目前我已经监督了设备,其中已经有企业 VPN,我只想在打开我的应用程序时调用它。
    • 请注意:我在内部使用 EMM 解决方案而不是 AppStore 部署应用程序。它适用于我的内部应用吗?
    猜你喜欢
    • 2016-06-21
    • 2022-01-11
    • 1970-01-01
    • 2013-09-11
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2010-10-14
    相关资源
    最近更新 更多