MAATRIX / Блог / OpenConnect или OpenVPN: какой enterprise-VPN выбрать

OpenConnect или OpenVPN: какой enterprise-VPN выбрать

MAATRIX

Когда VPN нужен не «для себя», а для отдела или всей компании, выбор протокола перестаёт быть вопросом вкуса. У сотрудников уже стоит корпоративный ноутбук с преднастроенным Cisco AnyConnect, у ИТ-отдела — политики MDM, а у вас — сервер, который нужно поднять так, чтобы не переустанавливать клиенты на полусотне машин. Разберём, чем ocserv (реализация OpenConnect) отличается от OpenVPN на практике и когда каждый из них — правильный выбор.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Зачем вообще сравнивать OpenConnect и OpenVPN

OpenVPN — де-факто стандарт для VPN на своём сервере: огромная экосистема, клиенты под всё, гибкая настройка через один текстовый конфиг. Но у него есть слепое пятно — совместимость с корпоративными клиентами, которые уже развёрнуты в организациях с историей Cisco.

OpenConnect (протокол) и ocserv (открытая серверная реализация под Linux) решают конкретную задачу: сервер, который говорит на языке Cisco AnyConnect SSL VPN. Официальный клиент Cisco AnyConnect, встроенный клиент OpenConnect в NetworkManager на Linux, приложения OpenConnect для iOS и Android — все они умеют подключаться к ocserv без танцев с бубном.

Разница на практике простая:

  • OpenVPN — вы контролируете обе стороны, протокол свой собственный, клиент почти всегда OpenVPN Connect или совместимый (Tunnelblick, встроенная поддержка в роутерах).
  • ocserv/OpenConnect — сервер говорит протоколом Cisco AnyConnect (по сути, TLS/DTLS handshake, совместимый с AnyConnect SSL VPN), а на клиентской стороне может быть как открытый OpenConnect, так и официальный проприетарный клиент Cisco.

Это не «один протокол лучше другого» — это вопрос, что уже стоит на компьютерах ваших людей и как быстро вам нужно раскатить доступ.

Совместимость с Cisco AnyConnect — главный довод в пользу ocserv

Если в компании когда-то был или есть Cisco ASA / Cisco Secure Client, у сотрудников почти наверняка уже установлен клиент AnyConnect (сейчас он называется Cisco Secure Client, но ядро протокола то же). ИТ-отдел его администрирует через GPO, у пользователей есть привычка «открыть AnyConnect и ввести логин».

Замена сервера Cisco ASA (дорогая лицензия, оборудование, поддержка) на VPS с ocserv позволяет сохранить этот клиент как есть — просто поменять адрес сервера в профиле подключения. Никакой переустановки, никакого переобучения пользователей.

Практическая проверка совместимости перед миграцией:

# На клиенте с Cisco AnyConnect/Secure Client — просто меняете
# адрес VPN-шлюза на IP или домен нового сервера с ocserv.
# Протокол TLS handshake должен пройти прозрачно, если
# на сервере настроен валидный сертификат (не self-signed).

Важный нюанс: официальный клиент Cisco строже проверяет сертификат и иногда — group-url и banner-сообщения, чем открытый OpenConnect-клиент. Если планируете держать именно проприетарный Cisco Secure Client на части машин, тестируйте подключение с ним отдельно, а не только с openconnect из командной строки — расхождения в поведении встречаются на нюансах TLS-версий и cipher suite.

Открытый клиент OpenConnect для Linux/macOS/Windows подключается так:

sudo openconnect --protocol=anyconnect vpn.example.com

Он же лежит в основе интеграции с NetworkManager — то есть на Linux-ноутбуках сотрудников подключение настраивается через системный GUI, без терминала.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Протоколы и порты: TLS/DTLS против OpenVPN на UDP/TCP

С точки зрения сетевого администратора разница в транспорте тоже важна.

Параметрocserv (OpenConnect)OpenVPN
Основной каналTLS (TCP/443)TLS поверх UDP/1194 (по умолчанию) или TCP
Ускоренный канал данныхDTLS (UDP/443)UDP-датаграммы того же порта
Маскировка под HTTPSДа, из коробки (порт 443, TLS)Нужна ручная настройка (port 443 + tls-crypt)
Мультиплексирование с веб-серверомПоддерживается через nginx/Apache reverse proxyТребует stunnel/отдельного порта
Клиент на мобильныхШтатный OpenConnect AppOpenVPN Connect

Ключевое преимущество ocserv здесь — он изначально рассчитан на работу на 443-м порту одновременно с обычным HTTPS-трафиком, потому что так делал оригинальный Cisco ASA. Это удобно там, где исходящий трафик компании фильтруется прокси и разрешены только 80/443. OpenVPN тоже можно перевести на TCP/443, но маскировка под легитимный HTTPS-трафик получается менее естественной без дополнительных обвязок вроде obfs4 или stunnel.

Для сравнения производительности самих протоколов однозначных цифр давать не буду — она сильно зависит от загрузки CPU сервера, MTU, качества канала и конкретной версии ПО. На практике оба варианта в TCP/UDP-режиме дают ощутимо схожую скорость на современном VPS с 1-2 vCPU для десятков одновременных пользователей; узкое место обычно не протокол, а канал сервера и шифрование на слабом CPU.

Установка ocserv на Ubuntu 24.04: быстрый практический пример

Если решили попробовать ocserv, вот минимальный рабочий конфиг для теста на чистом VPS.

sudo apt update
sudo apt install -y ocserv gnutls-bin

# Генерация самоподписанного сертификата для быстрого теста
# (для продакшена — сертификат от Let's Encrypt на реальный домен)
sudo mkdir -p /etc/ocserv/ssl
cd /etc/ocserv/ssl
sudo certtool --generate-privkey --outfile server-key.pem
sudo certtool --generate-self-signed --load-privkey server-key.pem \
  --outfile server-cert.pem

Базовый /etc/ocserv/ocserv.conf (ключевые строки):

auth = "plain[passwd=/etc/ocserv/ocpasswd]"
tcp-port = 443
udp-port = 443
run-as-user = ocserv
run-as-group = ocserv
socket-file = /run/ocserv-socket
server-cert = /etc/ocserv/ssl/server-cert.pem
server-key = /etc/ocserv/ssl/server-key.pem
max-clients = 128
max-same-clients = 4
ipv4-network = 10.10.10.0
ipv4-netmask = 255.255.255.0
dns = 1.1.1.1
route = default

Создание пользователя и запуск:

sudo ocpasswd -c /etc/ocserv/ocpasswd ivanov
sudo systemctl enable --now ocserv
sudo systemctl status ocserv

Не забудьте про NAT и форвардинг пакетов на сервере — без включённого net.ipv4.ip_forward=1 и правила MASQUERADE в iptables/nftables клиенты подключатся, но не получат доступ в интернет. Подробный пошаговый разбор установки ocserv, включая работу с Let's Encrypt и группами доступа, есть в отдельном материале — ocserv (OpenConnect) на Ubuntu 24.04: пошаговая установка.

OpenVPN: когда гибкость важнее совместимости

Если совместимости с Cisco-клиентами не требуется, а важна максимальная управляемость — OpenVPN обычно удобнее для бизнеса по нескольким причинам.

  • Готовые системы управления сертификатами. Easy-RSA из коробки закрывает выпуск и отзыв клиентских сертификатов — для команды из 20-100 человек это проще, чем ручное управление паролями.
  • Гибкость маршрутизации. Split-tunnel, отдельные маршруты по отделам, разные конфиги для разных групп пользователей настраиваются через client-config-dir без внешних систем.
  • Больше проверенных интеграций. Плагины аутентификации через RADIUS, LDAP, Google Authenticator для OpenVPN обкатаны годами на большем числе инсталляций, чем аналоги для ocserv.
  • Прозрачная отладка. Логи OpenVPN подробнее «из коробки», сообщества и готовых разборов ошибок больше.

Минимальный установочный путь для сравнения — на том же VPS ставится за несколько команд, конфиг клиента генерируется одним скриптом. Подробная инструкция с нуля — в статье как установить и настроить OpenVPN на VPS, а если сервер уже работает и возникают проблемы с подключением — частые ошибки OpenVPN на сервере и их решения.

Единственный серьёзный минус для enterprise-сценария: сотрудникам придётся ставить отдельный клиент OpenVPN Connect, даже если у них уже есть AnyConnect. Для компании с 10 людьми это не проблема. Для 200 человек с жёсткими политиками ИТ-отдела — уже вопрос согласований и времени на раскатку.

Аутентификация, MFA и AD/LDAP в обеих системах

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

ocserv поддерживает несколько бэкендов аутентификации одновременно (можно комбинировать):

  • plain — локальный файл паролей (только для теста, не для продакшена);
  • pam — через системный PAM, а через него — интеграция с LDAP/AD (модуль pam_ldap или sssd);
  • сертификаты клиента (cert-user-oid) — тот же принцип, что и в OpenVPN;
  • связка сертификат + пароль/OTP для честного двухфакторного входа.

OpenVPN решает то же самое через:

  • сертификаты Easy-RSA как основа (обязательный первый фактор);
  • плагин openvpn-plugin-auth-pam для второго фактора через PAM → LDAP/AD или Google Authenticator (TOTP);
  • сторонние решения вроде OpenVPN-AS для веб-консоли управления пользователями (платная часть).

На практике для среднего бизнеса рабочая связка в обоих случаях — сертификат на устройство плюс пароль от корпоративной учётки через LDAP, и по возможности TOTP-код как третий фактор. Разница в том, что в OpenVPN сертификат — обязательное звено цепи с самого начала, а в ocserv можно стартовать с логина/пароля и добавить сертификаты позже, не пересобирая всю схему.

Если компания уже использует WireGuard параллельно с OpenVPN и выбирает между ними для нового проекта — вопрос решается по другим критериям, разбор в статье WireGuard или OpenVPN: что выбрать для сервера. Здесь же сравнение именно про совместимость с Cisco-инфраструктурой, где WireGuard не участвует — под него нет клиента, совместимого с AnyConnect.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли использовать официальный клиент Cisco AnyConnect с сервером на ocserv?

Да, это и есть основной сценарий использования ocserv — сервер реализует протокол AnyConnect SSL VPN, поэтому проприетарный клиент Cisco подключается к нему так же, как к настоящему Cisco ASA. Из нюансов — сервер должен отдавать валидный сертификат (не self-signed) и совпадающие TLS-параметры, иначе клиент Cisco может отказаться от соединения раньше, чем открытый openconnect.

ocserv медленнее OpenVPN?

Заметной разницы в реальной нагрузке для типичного бизнес-сценария (десятки одновременных пользователей) обычно нет — оба используют похожий стек TLS/DTLS. Итоговая скорость на VPS сильнее зависит от CPU сервера и качества сети, чем от выбора между этими двумя протоколами. Точные цифры без замеров на вашем железе и канале давать не будем — слишком много переменных.

Что проще поддерживать одному ИТ-специалисту без отдела?

OpenVPN — больше готовых гайдов, скриптов автоматизации выпуска сертификатов и разборов типовых ошибок. Если совместимость с Cisco-клиентами не требуется, для маленькой команды это обычно менее трудозатратный выбор.

Можно ли держать оба сервера — ocserv и OpenVPN — на одном VPS?

Технически да, если развести порты (например, ocserv на 443/TLS, OpenVPN на 1194/UDP) и ресурсов сервера хватает. Практический смысл есть, если часть сотрудников использует AnyConnect, а часть — уже настроенные клиенты OpenVPN, и миграция всех сразу нежелательна.

Нужен ли отдельный домен и сертификат Let's Encrypt для ocserv?

Для теста хватит self-signed, но для продакшена — да, нужен реальный домен с валидным сертификатом, особенно если планируете подключать официальный клиент Cisco: он строже проверяет цепочку доверия, чем открытая реализация OpenConnect.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →