MAATRIX / Блог / Подключение к OpenVPN с Android: OpenVPN Connect

Подключение к OpenVPN с Android: OpenVPN Connect

MAATRIX

Файл конфигурации .ovpn готов, но на телефоне подключение то и дело обрывается, приложение просит логин, которого никто не выдавал, или просто не видит импортированный профиль. Причина почти всегда в том, что на Android есть два разных клиента с похожим названием и разной логикой работы, и путаница между ними — источник половины вопросов в поддержке. Разберём, как правильно импортировать .ovpn в официальный OpenVPN Connect, чем он отличается от стороннего OpenVPN for Android и как добиться, чтобы туннель держался, а не отваливался при блокировке экрана.

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

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

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

Что нужно перед подключением

Для подключения нужен файл конфигурации, обычно с расширением .ovpn, и приложение-клиент. Если конфиг генерировался на сервере вручную, в нём должны быть встроены (inline) сертификат CA, клиентский сертификат и ключ — так проще всего перенести настройки на телефон одним файлом, без отдельной пересылки .crt и .key. Проверить, что всё внутри одного файла, можно, открыв его текстовым редактором: должны быть блоки <ca>, <cert>, <key> и, если используется, <tls-crypt> или <tls-auth>.

Если конфиг собирался автоматически скриптом на сервере (например, через easy-rsa и openvpn-install), он уже почти всегда идёт единым файлом. Если у вас на руках раздельные файлы — сертификаты придётся объединить вручную или указать пути к ним внутри .ovpn перед переносом на телефон, потому что Android-клиенты умеют работать с отдельными файлами хуже, чем с inline-конфигом.

Файл нужно доставить на телефон одним из способов:

  • переслать себе в мессенджер или почту и открыть на телефоне;
  • скопировать через кабель (adb push profile.ovpn /sdcard/Download/);
  • открыть облачное хранилище (Google Drive, Диск, Dropbox) и скачать оттуда.

Если конфигурацию и сам сервер вы ещё не разворачивали, порядок действий описан в статье про установку и настройку OpenVPN на VPS — там же показано, как сгенерировать .ovpn для клиента.

Импорт .ovpn в OpenVPN Connect

OpenVPN Connect — официальное приложение от OpenVPN Inc., доступно в Google Play и как APK на сайте разработчика. Это закрытый (не open-source) клиент, ориентированный в первую очередь на подключение к OpenVPN Access Server, но прекрасно работает и с обычным community-сервером на VPS.

Порядок импорта:

  1. Установите приложение из Google Play (пакет net.openvpn.openvpn).
  2. При первом запуске примите лицензионное соглашение — экран можно пролистать, регистрация не обязательна для локального импорта файла.
  3. На вкладке Profiles нажмите + внизу экрана, выберите File.
  4. В системном проводнике укажите путь к скачанному .ovpn (обычно Download/).
  5. Приложение покажет содержимое профиля: сервер, порт, протокол. Если конфиг требует логин/пароль (директива auth-user-pass без встроенных значений), появятся поля для их ввода — их нужно узнать у администратора сервера или ввести те, что задавали сами при настройке аутентификации.
  6. Нажмите Add, затем Connect.
  7. Система Android покажет системный диалог «OpenVPN Connect запрашивает разрешение на создание VPN-соединения» — подтвердите его. Это стандартный запрос Android VPN API, он появляется один раз для каждого нового клиента.

После подключения в шторке уведомлений появится значок ключа — это системный индикатор активного VPN-соединения, он не убирается и не прячется, так задумано в Android из соображений безопасности: пользователь должен видеть, что трафик идёт через туннель.

Если при подключении возникает TLS handshake failed или ошибка аутентификации — это чаще проблема на стороне сервера (расхождение сертификатов, неверное время, закрытый порт), а не клиента. Частые причины разобраны в статье про TLS handshake failed в OpenVPN.

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

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

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

OpenVPN Connect и OpenVPN for Android: в чём разница

Здесь и возникает основная путаница: в Play Store есть два похожих по названию, но разных приложения.

OpenVPN ConnectOpenVPN for Android
РазработчикOpenVPN Inc. (официальный)Arne Schwabe (сообщество, open-source)
ЛицензияЗакрытая (проприетарная)Открытая, исходники на GitHub
ДвижокСобственная реализация OpenVPN Inc.Основан на форке ics-openvpn
Источники установкиGoogle Play, сайт openvpn.netGoogle Play, F-Droid
Поддержка Access ServerПолная, с автообновлением профиляНет
Импорт нескольких конфиговОграничен (в бесплатной версии — один активный профиль без подписки)Без ограничений, можно хранить много профилей
Тонкая настройка (up/down-скрипты, кастомные опции)МинимальнаяРасширенная, ближе к десктопному OpenVPN
Разбивка трафика по приложениям (split tunneling)Есть (allowed/disallowed apps)Есть, более гибкая
Логирование для отладкиБазовоеПодробное, удобно для диагностики

Если вы просто подключаетесь к своему серверу и конфигурация стандартная — разницы почти не будет, оба клиента одинаково честно держат туннель. OpenVPN Connect логичнее выбрать, если вы уже используете Access Server или хотите минимум настроек и официальную поддержку. OpenVPN for Android удобнее, если нужно держать несколько профилей одновременно (например, для разных серверов) или конфигурация нестандартная — с нетипичными директивами, которые официальный клиент может проигнорировать или не понять.

Важно: у обоих клиентов нет поддержки TAP-интерфейса — Android в принципе не поддерживает TAP на уровне системы, только TUN (маршрутизация на 3-м уровне, без моста Ethernet). Если ваш серверный конфиг настроен именно под dev tap, на телефоне он не заработает независимо от выбора приложения — нужно генерировать отдельный клиентский конфиг с dev tun.

Настройка профиля вручную

После импорта профиль можно донастроить прямо в приложении, не трогая исходный .ovpn.

В OpenVPN Connect на экране профиля доступны:

  • Reconnect on reboot — переподключаться при перезагрузке телефона;
  • Seamless Tunnel — не пропускать трафик мимо VPN даже на долю секунды при переподключении (полезно, если приложениям на телефоне важно не «утекать» в обычный интернет);
  • Allowed apps / Disallowed apps — выбрать, какие приложения должны ходить через туннель, а какие — в обход (например, банковское приложение можно исключить, если сервер не в том же регионе, что и карта).

В OpenVPN for Android набор настроек шире — можно вручную переопределить:

  • MTU и mssfix, если провайдер режет пакеты и соединение работает нестабильно на мобильной сети;
  • порт и протокол (UDP/TCP), не пересобирая конфиг на сервере;
  • DNS-сервера, которые будет использовать телефон при активном VPN;
  • пользовательские опции OpenVPN построчно — то, что не покрыто интерфейсом.

Если сервер требует tls-crypt или tls-auth, а не просто TLS-сертификаты, убедитесь, что нужный блок ключа действительно попал в файл при экспорте с сервера — иначе рукопожатие не завершится, даже если сертификаты правильные. Обе директивы добавляют дополнительный слой обфускации и HMAC-проверки поверх обычного TLS, и без соответствующего ключа клиент не сможет даже начать handshake.

Автозапуск и работа в фоне

Android агрессивно оптимизирует батарею, и это главная причина, почему VPN «сам отключается» через несколько минут в фоне или после блокировки экрана. Чтобы туннель не рвался:

  1. Откройте Настройки → Приложения → OpenVPN Connect (или OpenVPN for Android) → Батарея.
  2. Выберите Без ограничений (или «Не оптимизировать» — формулировка зависит от прошивки).
  3. На устройствах с оболочками MIUI, ColorOS, One UI дополнительно есть отдельный переключатель «Автозапуск» и список «Защищённые приложения» — VPN-клиент нужно добавить и туда, иначе система выгрузит его из памяти при уходе в фон.
  4. Включите Always-on VPN в системных настройках Android (Настройки → Сеть → VPN → шестерёнка у профиля → Always-on VPN), если хотите, чтобы телефон вообще не пускал трафик без активного туннеля — заодно там же включается Block connections without VPN (kill switch на уровне ОС).

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

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

Типичные проблемы при подключении с Android

  • Подключение устанавливается, но интернета нет. Проверьте, не блокирует ли фаервол сервера трафик после подключения (правила iptables/nftables для NAT и форвардинга), и включён ли redirect-gateway в конфиге, если нужен полный туннель. Подробный разбор — в статье OpenVPN подключается, но нет сети.
  • Соединение обрывается через 1–2 минуты. Чаще всего — агрессивная оптимизация батареи (см. раздел выше) или переключение между Wi-Fi и мобильной сетью без persist-tun/persist-key в конфиге.
  • Ошибка сертификата или времени. Если на телефоне сбито системное время (актуально после долгой перезагрузки или смены часового пояса), TLS-хендшейк не пройдёт — сертификаты проверяются в том числе по сроку действия.
  • Высокий пинг или обрывы именно на мобильной сети. Попробуйте переключить протокол с UDP на TCP в настройках профиля — некоторые операторы шейпят или режут UDP-трафик на нестандартных портах жёстче, чем TCP-443.
  • После обновления Android клиент перестал подключаться. Обновите сам клиент из Google Play — новые версии Android периодически меняют поведение VPN API, и разработчики выпускают патчи вслед за этим.

Если проблема не в клиенте, а в сервере — стоит проверить конфигурацию по общему чек-листу частых ошибок OpenVPN на сервере, от неверных прав на файлы сертификатов до неправильно настроенного форвардинга.

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

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

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

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

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

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

Можно ли подключаться к одному серверу сразу с двух Android-клиентов?

Технически да, если сервер не ограничивает число одновременных сессий на сертификат (директива duplicate-cn на сервере разрешает или запрещает несколько подключений с одним и тем же сертификатом одновременно). Но обычно для каждого устройства проще выпустить отдельный клиентский сертификат — так проще потом отозвать доступ одного устройства, не трогая остальные.

Нужна ли Root-права для работы OpenVPN на Android?

Нет, оба клиента работают через штатный Android VPN API без root, начиная с очень старых версий системы. Root не требуется ни для одного из сценариев из этой статьи.

Почему в OpenVPN Connect нельзя добавить второй бесплатный профиль?

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

Разряжает ли VPN батарею телефона сильнее обычного?

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

Как узнать, что VPN точно работает и трафик не идёт напрямую?

Проще всего — открыть в браузере на телефоне любой сервис, показывающий внешний IP, при включённом и выключенном VPN и сравнить результат. Если IP совпадает с адресом вашего сервера — туннель работает.

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

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

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