Паспорт проекта
- Тип
- Технические модули
- Задача
- Заявленное назначение — удалённый доступ организаций с управлением пользователями и контролем VPN-сеансов.
- Для кого
- Организации, которым нужен удалённый VPN-доступ с управлением пользователями; операторы сервера, задающие аутентификацию, маршруты, правила firewall и…
- Технологии
- См. описание механизма
- Что потребуется
- Основная платформа — Linux с IPv4/IPv6.
- Основание
- 22 первоисточников
За 30 секунд
Заявленное назначение — удалённый доступ организаций с управлением пользователями и контролем VPN-сеансов.
Принимает клиентов, проверяет выбранный способ аутентификации и передаёт IP-адрес и маршруты.
Выход — аутентифицированное VPN-подключение, TUN и выделенный адрес, клиентские маршруты и передаваемые пакеты.
Как это работает
На входе
Входы — подключения OpenConnect/AnyConnect, серверная конфигурация, IP-пул, маршруты и учётные данные выбранного backend. Поддержаны PAM или простой парольный файл, сертификаты и GSSAPI; сертификат требует CA/CRL и настройки поля идентификатора. Дополнительные INI-файлы пользователя и группы переопределяют настройки его сеанса. Отдельное OIDC-расширение предназначено только для Microsoft Intune VPN.
Механизм
Принимает клиентов, проверяет выбранный способ аутентификации и передаёт IP-адрес и маршруты. TLS/TCP служит каналом управления и резервным транспортом данных, DTLS/UDP — основным каналом данных; при недоступности UDP используется TCP/TLS. Настройки различаются по SNI-виртуальному хосту, пользователю и группе. occtl позволяет наблюдать состояние и завершать сеанс с аннулированием cookie, чтобы тот не возобновился автоматически.
Результат
Выход — аутентифицированное VPN-подключение, TUN и выделенный адрес, клиентские маршруты и передаваемые пакеты. Управляющая утилита предоставляет сведения о сервере, а RADIUS accounting описывает длительность логического сеанса через переподключения. Административное завершение отключает worker и делает cookie недействительным. Это документированные результаты, не результаты выполненного здесь сетевого теста.
Что важно понять
Техническое устройство
Архитектура разделяет main, sec-mod и отдельные workers. Main принимает TCP/UDP и передаёт аутентифицированному worker TUN; sec-mod хранит приватные ключи, состояние аутентификации и SID, выполняет ключевые операции и accounting; worker ведёт TLS/HTTP и мост TUN↔TLS/DTLS. SNI выбирает виртуальный хост, а файлы пользователя/группы накладывают настройки сеанса. Cookie позволяет возобновление в пределах timeout, тогда как terminate аннулирует его. Это описание процесса, с оговорками AUTH-008 и REVIEW о границах доверия.
Для чего создано
Заявленное назначение — удалённый доступ организаций с управлением пользователями и контролем VPN-сеансов. Cookie-механизм предназначен для перехода мобильного клиента между сетями без значительного разрыва сервиса; это цель конструкции, а не подтверждённый SLA.
Для кого
Организации, которым нужен удалённый VPN-доступ с управлением пользователями; операторы сервера, задающие аутентификацию, маршруты, правила firewall и прекращение сеансов. Поддержка конкретного клиента зависит от протокола и режима, особенно для Intune OIDC.
Сценарии использования
Настроить удалённое подключение с PAM/паролем или сертификатом; выбрать разные конфигурации по домену SNI и группе; сохранить логический сеанс при мобильном переподключении; посмотреть состояние и прекратить конкретный сеанс через occtl. Для скриптов документация рекомендует полный safe_id: неоднозначный короткий префикс отвергается. Отдельный режим Microsoft Intune не расширяет OIDC на все OpenConnect-клиенты.
Идея решения
Отделить жизненный цикл VPN-сеанса от одной сетевой связи: security module хранит состояние аутентификации и VPN-сеанса, worker обслуживает транспорт и TUN, main выдаёт ресурсы. Поэтому временное переподключение и административное прекращение — разные операции; TCP/TLS сохраняет путь передачи при проблеме UDP. Устройство не следует считать доказательством абсолютной изоляции.
Какую задачу описывает источник
Документы прямо выделяют две задачи: удалённый доступ с управлением пользователями и роуминг мобильных клиентов между сетями. Резервный TLS/TCP-канал отвечает на недоступность UDP. Оценка распространённости этих проблем, спроса и достигнутой производительности не приводится.
Что известно из описания
Что потребуется
- Основная платформа — Linux с IPv4/IPv6.
- Для сборки описаны Meson и Ninja; настройке нужны серверный сертификат, отдельный пользователь/группа непривилегированных процессов и параметры выбранной аутентификации.
- Маршрутизацию и правила firewall должен обеспечить оператор; restrict-user-to-routes/ports дополнительно вызывает ocserv-fw с nftables либо iptables, выбранным при сборке.
- seccomp зависит от наличия библиотеки и не гарантирован во всех сборках.
Что учитывать
- Сертификатная аутентификация сама по себе не получает полного разделения привилегий: документация советует сочетать её с паролем, а AUTH-008 явно исключает независимое восстановление сертификатной личности в sec-mod.
- Требование меж-vhost привязки ключа помечено REVIEW и прямо названо невыполненным в описанной реализации.
- OIDC не поддерживается открытым клиентом openconnect.
- Без procfs конфигурацию меняют только при остановленном сервере; часть опций всегда требует restart.
- RADIUS timeout overrides требуют groupconfig=true.
Из первоисточников
Редакционный обзор NeoBridge Insight по материалам источников ниже. Права на исходные тексты, код и изображения принадлежат их правообладателям. Условия использования указаны в первоисточниках.
Автор документа по источнику: Nikos Mavrogiannopoulos
Независимое тестирование проекта не проводилось.
gitlab.com
- openconnect/ocserv↗
- README.md↗
- doc/DCO.txt↗
- doc/README-cisco-svc.md↗
- doc/README-oidc.md↗
- doc/README-radius.md↗
- doc/design.md↗
- doc/occtl.8.md↗
- doc/ocpasswd.8.md↗
- doc/ocserv.8.md↗
- doc/requirements/README.md↗
- doc/requirements/internal/authentication.md↗
- doc/requirements/internal/config.md↗
- doc/requirements/internal/general.md↗
- doc/requirements/internal/ipc.md↗
- doc/requirements/internal/main.md↗
- doc/requirements/internal/sec-mod.md↗
- doc/requirements/internal/testing.md↗
- doc/requirements/internal/worker.md↗
- doc/requirements/protocol/sources/anyconnect.md↗
- doc/requirements/protocol/sources/openconnect.md↗
- doc/requirements/protocol/unified.md↗

Комментарий NeoBridge
Общая справка
Что стоит уточнить