UMGUM.COM 

Android OpenVPN клиент ( Инсталляция и настройка клиента OpenVPN для телефонов и планшетов на базе ОС Android. )

20 января 2017  (обновлено 5 марта 2017)

Hard: Android-совместимый смартфон или планшет.
OS: Android 5.0.2 (32-bit).
Application: "OpenVPN Connect" client OpenVPN v.1.1.17.

Задача: осуществить подключение к "виртуальной частной сети" (VPN), доступ к которой предоставляется сервером OpenVPN посредством одноимённого протокола, с мобильного устройства функционирующего под управлением операционной системы Android. Три года назад я написал во многом повторяющуюся здесь инструкцию применительно к мобильным устройствам Apple, но сейчас количество пользователей ОС Android существенно подросло, так что пишу памятку и для них.

В Android отсутствует встроенная поддержка протокола OpenVPN, так что приходится использовать приложение "OpenVPN Connect" непосредственно от разработчиков протокола. Первым делом инсталлируем таковое, отыскав в "магазине приложений" (оно бесплатное) по ключевому слову "openvpn":



Привычная методика использования раздельных конфигураций и сертификатов в Android-приложении не применяется. Чтобы не рассыпать по системе кучки разномастных файлов (до пяти на каждое соединение), управляться с которыми на небольшом экране мобильного устройства попросту неудобно, всё используемое для подключения собирается в единый файл-профиль (главное, чтобы итоговый размер не превысил заданное ограничение в 256 килобайт - что практически нереально), который после загружается на устройство любым удобным способом и включается в приложении "в один щелчок".

Всё, что было нужно, почерпнуто из сопроводительной документации от разработчиков.

И так, в случае необходимости организации OpenVPN-туннеля для пользователя устройства на ОС Android, администратору OpenVPN-сервера (или квалифицированному пользователю сервиса, получившему на руки пакет сертификатов), кроме всего прочего: генерации файлов сертификатов пользователя и задании для него параметров туннеля - следует подготовить единый конфигурационный файл, внедрив внутрь такового все необходимую ключевую и сертификационную информацию. Теперь это будет не просто файл конфигурации, а "ключевой файл конфигурации".

Обычно предварительный набор данных клиента включает в себя следующий набор файлов:

Статический ключ "HMAC": ta.key
Открытый ключ сервера: ca.crt
Открытый ключ клиента: client.name.crt
Закрытый ключ клиента: client.name.key

Элементарно открываем (лучше в режиме только для чтения, во избежание случайных корректировок содержимого) программой просмотра текстов (plain text) полученные ключевые файлы и переносим оттуда наборы символов, ограниченные соответствующими метками (далее об этом подробнее), собственно говоря и представляющих собой те самые ключи, в конфигурационный файл OpenVPN, в соответствующим образом тегированные контейнеры.

Создаём на обычном компьютере "ключевой файл конфигурации", представляющий собой обычный текстовый файл (plain text) с зарезервированным для конфигураций OpenVPN расширением ".ovpn":

$ touch ./client.name.ovpn

# Включаем режим работы в качестве клиента VPN
client

# Включаем режим IP-туннелирования "Layer 3"
dev  tun

# Используем транспортный протокол с проверкой целостности
proto  tcp

# Указываем адрес OpenVPN-сервера (IP или доменное имя) и прослушиваемый сервером порт
remote  vpn.example.net  443

# Включаем сжатие трафика между сервером и клиентом
comp-lzo

# Включаем шифрование повышенного уровня относительно стандартного
cipher  AES-256-CBC

# Содержимое открытого ключа OpenVPN-сервера (CA, сертификата сервера)
<ca>
-----BEGIN CERTIFICATE-----
Laiv8aiTh1iz1aequ1ae....
....
-----END CERTIFICATE-----
</ca>

# Содержимое открытого ключа OpenVPN-клиента (сертификата клиента)
<cert>
-----BEGIN CERTIFICATE-----
....
</cert>

# Содержимое закрытого ключа OpenVPN-клиента
<key>
-----BEGIN RSA PRIVATE KEY-----
....
</key>

# (Опционально) Включаем поддержку согласования статического ключа "HMAC" при инициировании соединения я сервером (помогает для защиты от DDoS за счёт того, что соединение на порту принимается только в том случае, если клиент будет обращаться к серверу используя точно такой же статический ключ "HMAC" и отбрасывать соединения не "подписанные" этим ключом)
key-direction  1

# (Опционально) Содержимое статического ключа "HMAC" предварительной аутентификации
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
....
</tls-auth>

Итоговый файл в моём случае обычно получается размером не более 10 (десяти) килобайт, что более чем укладывается в ограничение на 256 килобайт для конфигурационного файла клиента "OpenVPN Connect".

Обычно я отправляю получившийся "ключевой файл конфигурации" на клиентское устройство по электронной почте. Далее немного картинок, иллюстрирующих применение приложения "OpenVPN Connect" в деле.

Первый запуск приложения может смутить ненужными нам в данном случае ссылками на платные сервисы туннелирования (разработчики предлагают подключение по протоколу OpenVPN к готовым VPN-серверам в самых разных странах для нужд клиентов готовых платить за удобство) и абсолютным отсутствием каких-либо настроек:

размер: 320 400 640 800 1024 1280
OpenVPN Connect for Android: вид ещё не настроенного приложения.
OpenVPN Connect for Android: вид ещё не настроенного приложения.

Меню приложения спрятано в верхнем правом углу, за "вертикальным троеточием". Всё, что нам там нужно, это выбрать пункт "Импорт (Import)" и следом подпункт "Импорт профиля с SD-карты (Import Profile from SD card)". Если в загружаемом файле не было допущено синтаксических ошибок, то мы немедленно будем уведомлены об успешном импорте набора пользовательских настроек (если их загружается несколько, то выбирать соединение можно будет через выпадающее меню):

OpenVPN Connect for Android: уведомление об успешной загрузке набора настроек VPN-соединения.
OpenVPN Connect for Android: уведомление об успешной загрузке набора настроек VPN-соединения.

Далее просто жмём кнопочку "Подключить (Connect)", и в течении секунды-другой, в зависимости от скорости доступа и производительности VPN-сервера, ждём подключения:

OpenVPN Connect for Android: в процессе установления VPN-соединения.
OpenVPN Connect for Android: в процессе установления VPN-соединения.

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

OpenVPN Connect for Android: табло информации о состоянии установленного VPN-соединения.
OpenVPN Connect for Android: табло информации о состоянии установленного VPN-соединения.

Выключается VPN-туннель той-же кнопкой в приложении "OpenVPN Connect", что и включался, естественно. В настройках программы есть параметр, предписывающий восстанавливать VPN-туннель при запуске устройства автоматически, без вмешательства пользователя.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )