MAATRIX / Блог / IKEv2 на Android встроенными средствами

IKEv2 на Android встроенными средствами

MAATRIX

Если IKEv2 уже поднят на сервере, отдельное приложение для подключения с телефона обычно не нужно — Android умеет работать с IPSec IKEv2 из коробки, через стандартный экран «Настройки → VPN». Сложность не в самом подключении, а в двух местах: CA-сертификате, который нужно правильно установить на устройство, и разночтениях между версиями Android и прошивками, где пункты меню называются и расположены по-разному. Разберём путь от файла сертификата до рабочего туннеля.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что понадобится перед началом

Встроенный клиент Android поддерживает несколько типов IPSec-подключений, нас интересует IPSec IKEv2 RSA — вариант через сертификаты, надёжнее общего ключа (PSK), который легко скомпрометировать при пересылке. Соберите заранее:

  • Адрес сервера — домен (предпочтительно) или статический IP. Если в SAN сертификата прописан домен, а вы вводите IP, аутентификация не пройдёт независимо от остальных настроек.
  • CA-сертификат .crt/.pem, скопированный на телефон — во внутреннюю память, на карту или в загрузки. Файл не секретный, передать можно любым способом.
  • Клиентский сертификат (.p12 с приватным ключом), если сервер требует аутентификации клиента по сертификату.
  • Логин и пароль, если схема гибридная (сертификат сервера + EAP для клиента) — частый вариант для strongSwan.

Если сервер настраивали сами через strongSwan, порядок выпуска сертификатов и обязательные EKU разобраны в статьях про установку IKEv2 strongSwan на Ubuntu 24.04 и про multi-user сертификаты для IKEv2 на strongSwan — без Server Authentication и Client Authentication в EKU Android откажется завершать handshake, а диагностика на телефоне куда скупее, чем на десктопе.

Установка CA-сертификата на устройство

Этот шаг закрывает большинство проблем с аутентификацией ещё до попытки подключения. Android не доверяет серверу автоматически, даже если файл сертификата лежит на устройстве — его нужно явно добавить в системное хранилище.

Порядок для Android 12–15 (в старых версиях пункты меню называются иначе):

  1. Скопируйте .crt в память телефона — кабелем или через ссылку в облаке, скачанную прямо на устройстве.
  2. Настройки → Безопасность и конфиденциальность → Другие настройки безопасности (на части прошивок раздел называется просто «Безопасность»).
  3. «Шифрование и учётные данные» → «Установить сертификат» → «Сертификат CA».
  4. Система предупредит о снижении безопасности — это стандартное сообщение для любого добавляемого корневого сертификата. Подтвердите.
  5. Выберите файл, дайте сертификату понятное имя — так проще будет найти и удалить его позже.

Если производитель спрятал доступ к хранилищу сертификатов (кастомные прошивки), тот же результат даёт установка сертификата прямо с экрана настройки VPN — часть версий Android предлагает это на шаге выбора CA.

Для клиентского сертификата (.p12) шаги те же, но на шаге 3 выбирайте «Сертификат VPN и приложений». Android попросит пароль от .p12 и потребует PIN или пароль экрана блокировки, если его ещё нет — без блокировки система не хранит приватные ключи для VPN.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Настройка подключения через «Настройки → VPN»

  1. Настройки → Сеть и интернет → VPN (на части прошивок — «Подключения → Ещё → VPN»).
  2. Нажмите «+» / «Добавить VPN-профиль».
  3. Тип: IKEv2/IPSec RSA (может называться IPSec IKEv2 RSA).
  4. Имя — любое, для себя.
  5. Адрес сервера — тот же домен/IP, что в SAN сертификата.
  6. Идентификатор IPSec — обычно совпадает с адресом сервера, если не задан отдельный leftid=.
  7. Сертификат CA пользователя — установленный на предыдущем шаге.
  8. Сертификат пользователя — клиентский .p12, если аутентификация клиента по сертификату.
  9. При гибридной схеме появятся поля логина и пароля — заполните их.
  10. Сохранить.

Первое подключение — касанием по имени профиля. Система запросит логин/пароль, если они не сохранены, и покажет ключ VPN в шторке уведомлений после установления туннеля.

Если варианта с сертификатами нет, а есть только IPSec Xauth PSK — это старая версия Android (до 9) или урезанная прошивка без сертификатного IKEv2. Выход — strongSwan VPN Client из Google Play (тот же протокол, но с логами) либо WireGuard, который тоже требует стороннего приложения на Android, но стабильнее при жёстком NAT.

Особенности разных версий и прошивок

Встроенный клиент — часть AOSP, но производители переносят пункты меню и иногда меняют логику работы с сертификатами:

Производитель/версияОсобенность
Android 12+ (чистый AOSP, Pixel)Безопасность → Шифрование и учётные данные
Samsung One UIРаздел «Другие настройки безопасности», интерфейс VPN визуально другой
Xiaomi/MIUI, HyperOSНужно включить «Расширенные настройки» в безопасности, чтобы увидеть установку сертификатов
Android 9–11Экран VPN на уровень глубже: Система → Дополнительно → VPN
Android до 9Часть современных proposal'ов может не поддерживаться

Если сервер настроен строго (короткий список ike=/esp=), держите в нём набор, который тянут все версии Android, с которыми работаете:

ike=aes256gcm16-prfsha384-ecp384,aes256-sha256-modp2048!
esp=aes256gcm16-ecp384,aes256-sha256-modp2048!

Первый вариант — для современных устройств, второй — запасной для старых. Без запаса согласование на старом телефоне может провалиться молча — просто бесконечное «Подключение...».

Диагностика и типичные проблемы

Android скупо показывает причину сбоя — обычно просто «Не удалось подключиться». Смотреть глубже помогает adb logcat с компьютера при включённой отладке по USB (показывает, на каком этапе, IKE_SA_INIT или IKE_AUTH, обрывается обмен) и серверные логи strongSwan:

adb logcat | grep -iE "ikev2|strongswan|ipsec|vpn"

journalctl -u strongswan -f на сервере покажет встречную сторону почти в реальном времени. Метки: NO_PROPOSAL_CHOSEN (не совпали алгоритмы), AUTHENTICATION_FAILED (проблема с сертификатом или PSK), TS_UNACCEPTABLE (несовпадение traffic selector'ов). Отдельно стоит проверить время на телефоне — если часы сильно разошлись с реальными (эмуляторы, устройства, долго пролежавшие без сети), сертификат может выглядеть ещё недействующим или уже просроченным.

Частые причины сбоя:

Зависает на «Подключение...» и обрывается по таймауту. Чаще всего дело в NAT — мобильная сеть почти всегда за carrier-grade NAT, а IKEv2 использует UDP 500 для первичного обмена и UDP 4500 для NAT-T. Если файрвол не пропускает 4500/UDP, туннель не установится: sudo ss -ulnp | grep -E ":500|:4500" на сервере должен показать оба порта слушающими.

«Сертификат не подтверждён» сразу после выбора CA. Почти всегда — несовпадение SAN сертификата с адресом в поле «Адрес сервера». Android строже десктопных клиентов: домен вместо IP (или наоборот) ломает проверку, даже если сам CA установлен верно.

Работает по Wi-Fi, но не в мобильной сети. Тот же carrier-grade NAT — операторы агрессивнее фильтруют нестандартный UDP на мобильных тарифах, чем домашние роутеры на Wi-Fi.

После обновления Android подключение перестало работать. Google периодически меняет минимальный набор поддерживаемых алгоритмов между релизами. Решение то же, что и с разными версиями Android: держать на сервере запасной набор ike=/esp= с современными и классическими алгоритмами одновременно.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Нужен ли root для настройки встроенного IKEv2-клиента?

Нет, весь процесс — от установки CA-сертификата до создания VPN-профиля — делается через обычные настройки.

Можно ли настроить IKEv2 без сертификатов, только по логину и паролю?

Да, через IPSec Xauth PSK с общим ключом, но это заметно менее безопасный вариант — для постоянного использования лучше сертификатная схема.

Разрывается ли VPN при переключении между Wi-Fi и мобильной сетью?

IKEv2 поддерживает MOBIKE — переустановку туннеля при смене IP без пересоздания сессии — и Android поддерживает его штатно, обычно с задержкой в несколько секунд.

Как удалить или изменить уже настроенный профиль?

В разделе «Настройки → VPN» — шестерёнка рядом с профилем (или долгое нажатие) → «Изменить»/«Удалить». Сертификаты не удаляются вместе с профилем, их нужно чистить отдельно в разделе «Учётные данные».

Почему в списке типов VPN нет пункта с сертификатами вообще?

Встречается на упрощённых прошивках и старых версиях Android. Проще поставить strongSwan VPN Client из Google Play — тот же протокол без ограничений системного клиента.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →