Документация
ОС Аврора 5.1.5

Разработка VPN-расширений

Данный набор статей описывает процесс реализации поддержки VPN-подключений в ОС Аврора. Они представляют интерес в первую очередь для разработчиков VPN-решений, которые хотят обеспечить подключение устройств с установленной ОС Аврора к своим серверам.

Особенности работы VPN-подключений в ОС Аврора

ConnMan представляет собой систему управления всеми поддерживаемыми ОС технологиями связи, включая работу устройства в мобильных сетях и сетях Wi-Fi, поддержку Bluetooth. Также ConnMan имеет отдельный процесс-демон connman-vpnd, запускаемый родительским процессом connmand, для управления доступными VPN-соединениями различных провайдеров — OpenVPN, L2TP и т. д.

ConnMan имеет расширяемую архитектуру через механизм плагинов, которые представляют собой динамически подключаемые .so-библиотеки.

Для управления состоянием VPN-подключений через графический интерфейс используется приложение «Настройки». Взаимодействие между данным приложением и ConnMan происходит через шину обмена сообщениями D-Bus. Другие приложения не имеют доступа к данному интерфейсу. Модуль управления VPN-соединениями приложения настроек можно расширить поддержкой новых типов VPN-соединений.

В рамках процесса установления VPN-соединения участвуют следующие компоненты:

  • VPN-клиент — фоновое приложение для установления подключения к VPN-провайдеру, получения от него сетевых настроек, которые он передает в connman-vpnd.
  • connman — управляющий процесс, запускаемый при старте ОС Аврора.
  • connman-vpnd — процесс-демон, запускаемый ConnMan и служащий для управления VPN-соединениями различных провайдеров, инициализацией и деинициализацией tun-интерфейса, назначением на него сетевых настроек (IP-адресов, маршрутов, DNS-серверов), полученных по D-Bus.
  • VPN-плагин — библиотека, имеющая макро-объявление для загрузки в runtime и функции, вызываемые в процессе установления соединения. Выступает связующим звеном между ConnMan и фоновым приложением.
  • ConnMan Task — процесс для запуска, остановки и контроля запущенного фонового приложения.
  • D-Bus-api — представляет connman-vpnd, а именно net.connman.vpn с интерфейсами net.connman.vpn.Manager, net.connman.vpn.Connection.
  • Jolla Settings — приложение «Настройки», предоставляющее графический интерфейс для формирования VPN-профилей подключения, активации и деактивации VPN-соединений. Реализовано с использованием фонового процесса jolla-settings.

Установка VPN-соединения в ОС Аврора

В общем случае последовательность операций в ОС при установке VPN-соединения следующая:

  1. Пользователь формирует профиль подключения в приложении «Настройки». В профиле он указывает тип провайдера и все необходимые параметры для подключения к серверу.
  2. Пользователь активирует сформированный профиль VPN-соединения.
  3. Приложение «Настройки» посылает D-Bus-сигнал connman-vpnd на активацию соответствующего подключения.
  4. ConnMan активирует VPN-плагин, вызывая метод инициализации плагина.
  5. ConnMan вызывает метод VPN-плагина для инициализации VPN-соединения. Данному методу передаются параметры подключения, которые необходимо установить.
  6. VPN-плагин разбирает параметры и формирует задачу (ConnMan Task) на запуск VPN-клиента.
  7. ConnMan запускает VPN-клиент согласно сформированной задаче.
  8. VPN-клиент выполняет задачу по установлению соединения и запускает скрипт ConnMan, который оповещает ConnMan об удачном установлении соединения.
  9. Данное оповещение передаётся в VPN-плагин, который преобразует его в данные конфигурации сети для ConnMan.

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

Компоненты VPN-расширения

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

  • VPN-клиент, позволяющий устанавливать VPN-подключение к серверу VPN-провайдера.
  • VPN-плагин для ConnMan, позволяющий запускать данное приложение и передавать ему конфигурацию для выполнения подключения.
  • Если стандартные скрипты не подошли, то скрипт ConnMan, позволяющий оповестить об успешном установлении соединения.
  • Расширение для приложения «Настройки», позволяющее пользователю сформировать профиль VPN-подключения с нужными параметрами подключения.

Вопрос разработки VPN-клиента остаётся за рамками данных руководств. Данное приложение должно поддерживать работу в рамках окружения GNU/Linux.

Процесс разработки расширения для приложения «Настройки» описан в соответствующем руководстве.

Процесс создания VPN-плагина для ConnMan и скрипта ConnMan описаны в руководстве по разработке VPN-плагина.

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

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.