Архитектура VPN
Прикладные разработчики имеют возможность реализовать своё клиентское VPN-приложение. На данный момент архитектура VPN состоит из следующих компонентов:
- VPN-приложение — десктопная программа, предоставляющая интерфейс для управления VPN-соединениями конкретного VPN-провайдера. Не обязательна для реализации.
- VPN-плагин — модуль, предназначенный для запуска и выключения VPN-провайдера и конфигурации виртуального интерфейса с помощью ConnMan VPN API.
- VPN-провайдер — программа, реализующая защищенный туннель.
- QML-плагин для системного приложения "Настройки" — qml страницы, с помощью которых пользователь может конфигурировать VPN-соединение из приложения "Настройки".
В обычном сценарии пользователь может указать данные для VPN подключения с помощью VPN-приложения или через приложение "Настройки". Далее данные будут обработаны в ConnMan и попадут для обработки в VPN плагин, где с ними могут быть произведены какие-либо действия (например, запись необходимых данных в Persistent Storage). Когда пользователь инициирует подключение через VPN-приложение или через "Настройки", ConnMan вызовет определенный метод VPN-плагина, где VPN-плагин должен будет запустить VPN-провайдер и настроить сетевой интерфейс и таблицу маршрутизации с помощью VPN API. После этого исходящий и входящий трафик будет поступать на tun/tap интерфейс для последующей обработки в VPN-провайдере.
Для успешной установки и работы .rpm-пакета со всеми перечисленным компонентами необходимо соблюдать требования ОС к VPN-пакету. Подробные требования указаны в разделах, посвящённым каждому из компонентов. Сам пакет должен быть подписан подписью Extended разработчика.