Почему у Netrunner VPN пока нет приложения для iPhone?
Нам часто задают этот вопрос, и со стороны действительно кажется, что всё должно быть просто: есть VPN, есть сервер, остаётся только сделать приложение для iOS.
На практике с VPN всё немного сложнее.
Apple позволяет создавать VPN-клиенты с собственными протоколами через Network Extension и Packet Tunnel Provider. Поэтому проблема не в том, что Apple запрещает кастомные VPN-протоколы.
Основная сложность начинается с самой реализации.
Клиентскую часть собственного протокола нужно отдельно адаптировать под iOS и встроить в системную VPN-архитектуру Apple.
Это уже не просто перенос интерфейса с другой платформы. Нужно реализовать VPN-туннель, обработку маршрутизации и DNS, передачу трафика через виртуальный интерфейс, восстановление соединения после потери сети, работу в фоне и корректное поведение на разных версиях iOS и устройствах.
Для распространённых протоколов задача во многих случаях проще, потому что вокруг них уже существуют готовые библиотеки, реализации и инструменты для разных платформ.
С собственным протоколом такой готовой инфраструктуры может не быть, поэтому значительную часть клиентской части приходится разрабатывать и тестировать отдельно.
Есть и вторая сторона вопроса: App Store Review.
Для VPN-приложений у Apple существуют отдельные требования к API, публикации приложения и работе с пользовательскими данными и приватностью. Поэтому после разработки ещё нужно пройти весь процесс проверки Apple.
Получается, что дело не в формуле «Apple не разрешает свой протокол».
Скорее так:
Apple позволяет кастомные VPN-протоколы, но для них нужна полноценная отдельная реализация под iOS и соблюдение требований Apple.
На других платформах Netrunner уже работает на Windows, Linux и Android. Для iOS нам нужно сделать отдельный клиент, который будет использовать именно наш протокол и корректно работать в реальных сетевых сценариях.
Поэтому мы не хотим выпускать приложение только ради того, чтобы появилась ещё одна иконка в App Store.
Нам важно сделать его нормально: чтобы соединение стабильно держалось, восстанавливалось после потери сети и не требовало от пользователя ручной настройки.
Именно поэтому iOS пока в разработке.
А если здесь есть разработчики, которые работали с Network Extension и Packet Tunnel Provider, интересно узнать, с какой частью интеграции пришлось возиться больше всего.
https://i.redd.it/gk9tweu2vijh1.png
Source: r/IVPN · by /u/Helpful-Claim7235
