UMGUM.COM 

Apple (iOS) OpenVPN клиент ( Инсталляция и настройка клиента OpenVPN для Apple (iOS) iPhone, iPad и iPod. )

22 февраля 2014  (обновлено 15 февраля 2017)

Hard: Apple iPad v.1.
OS: iOS 7.0.4 (32-bit).
Application: "OpenVPN Connect iOS", "iPhone / iPad / iPod" client OpenVPN v.1.0.3.

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

Как и в случае с операционными системами производства Microsoft, в iOS для мобильных устройств нет встроенной поддержки протокола OpenVPN. Но есть приложение "OpenVPN Connect iOS", делающее то, что нам требуется. Собственно, первым делом инсталлируем таковое, отыскав в "магазине приложений" (оно бесплатное):


У OpenVPN-клиента, предназначенного для работы в среде iOS для "iPhone / iPad / iPod" имеются некоторые ограничения, обусловленные особенностями операционной системы мобильных устройств фирмы Apple. В частности, файловая системы мобильных устройств Apple скрывается от пользователя и привычная методика размещения в таковой конфигурационных файлов и файлов сертификатов не подходит. Есть способ прикрепить сертификаты OpenVPN-сервера к профилю пользователя сервисов Apple, а потом в настройках приложения OpenVPN-клиента указать месторасположение сервера и ряд вручную настраиваемых параметров, но мне это представляется нерациональным с точки зрения повышенной сложности для пользователя - в итоге настроить соединение оказывается сложнее, чем для платформ под уравлением "MS Windows" и даже Linux. Я предпочитаю сделать это иначе, благо формат файла конфигурации OpenVPN-клиента поддерживает включение в себя содержимого сертификатов (главное, чтобы итоговый размер не превысил заданное ограничение в 256 килобайт - что практически нереально), позволяя в итоге всего-лишь каким-либо образом передать на мобильное устройство один файл конфигурации и применить его в приложении "OpenVPN Connect iOS".


И так, в случае необходимости организации OpenVPN-туннеля для пользователя устройств "Apple iPhone / iPad / iPod", администратору 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 iOS".

Если целевой iPad доступен для синхронизации через iTunes, то воспользуйтесь этим для загрузки итогового ключевого конфигурационного файла. Если нет, то отправьте его на почту (что гораздо проще), которая доступна с iPad, открыв по получению вложенный файл с помощью приложения "OpenVPN Connect iOS".

Далее немного картинок, иллюстрирующих применение приложения "OpenVPN Connect iOS" в деле.

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

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

Сделать в самом приложении ничего нельзя, разве что почитать весьма подробный и понятную подборку FAQ (от "Frequently Asked Questions", переводимого на русский как "часто задаваемые вопросы"), из которой собственно я и почерпнул всё мне необходимое:

OpenVPN Connect iOS: Страница FAQ приложения.
OpenVPN Connect iOS: Страница FAQ приложения.

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

OpenVPN Connect iOS: Выбор приложения для применения OpenVPN-профиля.
OpenVPN Connect iOS: Выбор приложения для применения OpenVPN-профиля.

Автоматически будет запущено приложение "OpenVPN Connect iOS", в котором следует подтвердить добавление нового профиля конфигурации VPN-соединения, нажав на зелёную кнопочку. После этого в дополнение к двум неудаляемым ссылкам снизу на платные сервисы мы будем видеть ещё и наше VPN-соединение:

OpenVPN Connect iOS: Одобрение нового профиля OpenVPN-соединения.
OpenVPN Connect iOS: Одобрение нового профиля OpenVPN-соединения.

Далее очевидное - двигаем ползунок включателя VPN-соединения и ожидаем его установления. На хорошем канале это занимает пару секунд:

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

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

OpenVPN Connect iOS: OpenVPN-соединение установлено.
OpenVPN Connect iOS: OpenVPN-соединение установлено.

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


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


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