VPN-приложение или встроенный IKEv2 на iPhone: как выбрать
VPN-приложение для iPhone и встроенный клиент IKEv2 решают разные задачи. Сначала сравните поддержку протоколов, аутентификацию, контроль устройства и восстановление.
На прошлой неделе коллега протянул мне свой iPhone с двумя записями VPN в «Настройках»: одну оставило приложение провайдера, другую — профиль IKEv2, вставленный со страницы поддержки. Это не конкурирующие версии одного и того же. Приложение провайдера — контейнер, который может нести собственный код туннеля, а встроенный клиент Apple — это клиент IKEv2, настроенный вручную или профилем. Протокол, работа с учётными данными, контроль устройства и восстановление определяют выбор.
Приложение и встроенный клиент находятся на разных уровнях
Встроенный VPN-клиент Apple на практике является клиентом IKEv2. Ручная форма по-прежнему перечисляет устаревший L2TP поверх IPsec и параметры Cisco IPsec, но поля для транспорта провайдера нет, и вставить конфигурацию OpenVPN или WireGuard некуда. Вы либо заполняете форму в «Настройки > Основные > VPN & Управление устройством», либо импортируете профиль с полезной нагрузкой VPN; на поверхности — адрес сервера, две идентичности, метод аутентификации и необязательные правила по требованию.
Приложение провайдера работает на уровень выше. Оно поставляет провайдера пакетного туннеля Network Extension, поэтому код протокола и логика маршрутизации живут в приложении, а iOS только передаёт пакеты. Некоторые приложения реализуют WireGuard или OpenVPN, другие — собственный замаскированный транспорт, а немногие лишь устанавливают профиль IKEv2 и управляют встроенным клиентом за более приятным экраном. Из-за последней группы выбор «приложение или профиль» иногда ложный.
Последствие практично: файл .ovpn или WireGuard не заменяет эти поля, потому что рукопожатие — другой протокол.
Прочитайте полезную нагрузку, прежде чем сравнивать функции
Когда профиль — IKEv2, ключи полезной нагрузки объясняют больше сбоев, чем любое сравнение функций. Справочник Apple по настройкам IKEv2 документирует каждый ключ; сокращённая нагрузка выглядит так:
<key>VPNType</key><string>IKEv2</string>
<key>RemoteAddress</key><string>vpn.example.net</string>
<key>RemoteIdentifier</key><string>vpn.example.net</string>
<key>LocalIdentifier</key><string>[email protected]</string>
<key>AuthenticationMethod</key><string>Certificate</string>
<key>ServerCertificateIssuerCommonName</key><string>Example Issuing CA</string>
Три поля несут основную диагностическую нагрузку. RemoteIdentifier — имя, которое клиент ожидает увидеть от сервера, поэтому шлюз за NAT или балансировщик, сертификат которого называет пул вместо адреса, терпит неудачу, хотя адрес верен. LocalIdentifier — идентичность, которой сервер вас считает, и при аутентификации по сертификату она должна совпадать с идентичностью, привязанной к вашей учётной записи. ServerCertificateIssuerCommonName закрепляет издателя CA, поэтому профиль может отказать в день перевыпуска сертификата, и ни одно сообщение об ошибке не упомянет сертификаты.
Если AuthenticationMethod равно SharedSecret, сервер выполняет пользовательскую аутентификацию EAP, а полученный секрет на самом деле является учётными данными аккаунта. Это важно, когда провайдер присылает два документа: один для имени пользователя и пароля, другой для сертификата, и только один совпадает с импортированным.
Что приложение умеет, а встроенный клиент нет
Выбор протокола — очевидное преимущество. Если ваш сервер говорит на WireGuard или OpenVPN, приложение — единственный клиент iOS, который может это использовать, и правка встроенной формы это не согласует. Приложение также может реализовать раздельный туннель по назначению или приложению, собственную обработку DNS, блокировку в стиле kill switch, выбор сервера и переподключение, настроенное под свою сеть.
Цена — программное обеспечение, которое вы не проверяли, работающее с правами сетевого расширения. Качество колеблется сильнее, чем предполагают карточки в магазине: одно приложение переподключается чисто, другое несколько секунд утекает после смены сети, а kill switch внутри приложения — функция этого приложения, а не iOS. На управляемом устройстве сначала проверьте утверждённый список.
Что встроенный профиль IKEv2 делает правильно
Меньше движущихся частей — весь аргумент. Клиент IKEv2 и его стек IPsec поставляются с системой, поэтому нет расширения, которое может упасть, нет процесса на каждое приложение, который нужно поддерживать живым, и нет цикла обновлений третьей стороны между вами и работающим туннелем. Профиль можно и заблокировать: на наблюдаемом устройстве пользователь не может удалить то, что установило управление, а Always On VPN, который переподключается в любой сети без пользовательского переключателя, существует только в такой наблюдаемой, управляемой профилем форме.
Чего встроенный путь не даёт — гибкости. Нет VPN на приложение без управляемых приложений, нет kill switch для пользователя и нет транспорта, который в сети, блокирующей IPsec, выглядел бы как HTTPS. В гостиничных сетях, отбрасывающих UDP 500 и 4500, у встроенного IKEv2 нет запасного пути.
Таблица решений, которая закрывает большинство случаев
На практике вопрос протокола решает большинство случаев ещё до того, как функции начинают иметь значение.
| What you were given | Device situation | What to use |
|---|---|---|
| An .ovpn or WireGuard config | Personal phone | Provider app; the native form cannot load it |
| IKEv2 host plus CA name | Personal or managed | Profile, or the app's own IKEv2 mode |
| IKEv2 with username and secret | Personal phone | Either; the profile is simpler if you never switch servers |
| A management-installed profile | Supervised, MDM | Native client; do not add a second app entry |
| A per-app tunnelling requirement | Personal phone | App, or accept a full tunnel; iOS cannot split by app without management |
| IPsec blocked on your main network | Any | App with a transport that survives the block |
Две строки заслуживают второго взгляда. Требование «на приложение» на личном телефоне — случай, который люди читают неправильно: параметр существует в iOS, но управляется системой управления, поэтому неуправляемое устройство его не предложит. Заблокированная сеть — не повод не доверять IKEv2; это причина, по которой приложение провайдера существует.
Проверьте выбор одним тестом
Проверяйте режимы отказа, а не кнопку подключения. Подключитесь один раз, убедитесь, что появился индикатор VPN, затем откройте страницу, возвращающую ваш публичный адрес, и сравните с прежним. Переключитесь с Wi-Fi на мобильные данные, не трогая VPN, и следите за переподключением, затем проведите телефон через авиарежим. Перезагрузите и посмотрите, вернётся ли туннель сам: профиль с OnDemandEnabled должен, а многие приложения нужно сначала открыть.
Если туннель не вернулся, разделите отказ по тому, существует ли он вообще. Отсутствие индикатора VPN означает, что туннель не поднялся: либо рукопожатие сорвалось на RemoteIdentifier, закреплённом CA или учётных данных, либо подключение вообще не пытались, потому что правило по требованию не совпало и ни одно приложение его не запустило. Индикатор при падающем трафике означает маршрутизацию, DNS или политику на стороне сервера, и переустановка клиента ничего из этого не затрагивает.
Короткий список, чтобы устройство было объяснимо следующему человеку:
- одна запись VPN, а не две;
- профиль или приложение названы по серверу, к которому подключаются;
- значения идентичности записаны там, где вы их найдёте.
Начните со строки протокола в таблице и остановитесь там, если она отвечает на вопрос.