VPN для отдельных приложений iOS не подключен к Интернету - PullRequest
1 голос
/ 21 марта 2019

Мы разрабатываем приложение с Per-App VPN, работающим на iOS. Это контейнерное приложение предназначено для того, чтобы наши определенные приложения могли подключаться к сети через VPN в определенное время, тогда как все остальные приложения - нет.

Мы хотим, чтобы эти конкретные приложения подключались к сети до включения VPN, после установки приложения контейнера и профиля конфигурации. И эти конкретные приложения подключаются к сети через VPN, как только VPN вручную включается в приложение контейнера.

У меня есть вопросы, не могу найти ответы.

  1. Я добавил ключ NETestAppMapping в Info.plist моего контейнерного приложения в разработке. И идентификаторы пакетов этих конкретных приложений добавляются в NETestAppMapping. После создания приложения-контейнера и установки профиля конфигурации с помощью Apple Configurator 2 я обнаружил, что эти конкретные приложения не могут подключаться к Интернету, пока я не включил VPN в приложении-контейнере. Это нормально?

  2. NETestAppMapping - это способ настройки этих конкретных приложений в разработке. Интересно, производственный механизм для определения сопоставлений приложений.

Более того, однажды произошло нечто действительно странное. Я удалил профиль конфигурации с iPhone, а NETestAppMapping из приложения контейнера. Затем я включил VPN в контейнерном приложении обычным способом. После этого я обнаружил, что функция, которую мы хотим, реализована.

Большое спасибо.

1 Ответ

1 голос
/ 22 марта 2019

Приложение, связанное с VPN для каждого приложения, будет направлять свой трафик только через VPN для каждого приложения. Если On-Demand отключен, а VPN отключен, из приложения не будет проходить трафик.

Таким образом, я вижу два способа добиться того, что приложения будут перенаправляться через Per-App VPN только иногда:

  1. Реализация VPN с использованием NEPacketTunnelProvider таким образом, чтобы VPN всегда запускала On-Demand и оставалась «активной», но приложение VPN можно использовать для переключения, действительно ли NEPacketTunnelProvider маршрутизирует трафик через VPN или просто действует как пересылка TCP / UDP.

  2. Использование MDM и его SDK (при условии поддержки) для связи и разъединения ваших приложений с VPN для каждого приложения при переключении переключателя в приложении VPN. Обратите внимание, что это, вероятно, будет неуклюжим, с задержкой по времени и может привести к тому, что ваше приложение будет убито, если оно запущено. Я не буду рекомендовать этот подход.

Стоит отметить, что NETestAppMapping работает только для сборок разработки и не будет работать для сборок дистрибутива (например, Enterprise (In-House) или App Store). Вам потребуется MDM для использования VPN для каждого приложения.

В качестве примера использования NEPacketTunnelProvider с переадресацией пакетов я хотел бы взглянуть на этот документ: Ваш телефон шпионит за вами? Северин Амрейн .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...