OpenVPN Access Server и Community: что на самом деле переносится
Community Edition и Access Server используют один протокол OpenVPN, но не один слой управления. Сравните, что переносится, что нужно строить заново и кто это поддерживает.
Профили переносятся; списки пользователей остаются. Команда, переходящая между Access Server и Community Edition, сталкивается с этим разрывом через час после переключения, когда её первый клиент проходит аутентификацию и не имеет ни групповой политики, ни маршрута для пользователя, ни самостоятельного сброса пароля. Оба продукта говорят на одном протоколе и принимают одного и того же клиента, и именно поэтому разрыв остаётся незаметным при планировании. На самом деле вы выбираете слой управления и людей, которые им владеют.
Относитесь к решению как к вопросу инвентаризации, а не к таблице функций. Спросите, кто создаёт пользователей, кто отзывает сертификаты и кто отвечает на звонок в 02:00.
Почему файл .ovpn не несёт настройку
Профиль .ovpn описывает отношения одного клиента с одним сервером: удалённый хост, протокол, CA, сертификат и ключ клиента, а также любой встроенный материал tls-crypt. Поместите этот файл в новую сборку, и клиент всё равно завершит рукопожатие, так что миграция выглядит законченной. Ничто в нём не перечисляет пользователей, их группы, их статические маршруты или политику, определявшую, кому вообще разрешено подключаться. Эти записи живут в собственном хранилище сервера, и оба продукта хранят их в разных формах.
В Community Edition эквиваленты — это файлы, которые вы держите сами: записи client-config-dir с параметрами для каждого клиента, такими как ifconfig-push и iroute, CRL для отзыва и ключ tls-crypt. Access Server хранит те же понятия в своей базе данных и предоставляет их через веб-консоль и инструмент командной строки sacli. Понятия сопоставляются один к одному; артефакты вовсе не переносятся.
Профили также контрабандой вносят поведение, которого никто не замечает, пока оно не изменится. Клиент с redirect-gateway def1 отправляет весь трафик через сервер; перенесите его в сборку без этой строки, и жалоба будет в том, что интернет сломался. Несовпадение CA или неверная настройка remote-cert-tls падает громко, и это хороший исход. Отсутствующий ключ tls-crypt падает как тихий тайм-аут, а это не так.
Чем владеет слой управления
Посчитайте то, что не является протоколом: создание учётных записей, сброс паролей, распределение по группам, регистрация MFA, права на подключение и журнал аудита, отвечающий, кто и когда подключался. Community Edition ничего из этого не предоставляет напрямую. Вы выбираете бэкенд аутентификации, подключаете PAM, LDAP или RADIUS через плагин или auth-user-pass-verify, а остальное обслуживаете сами. Access Server поставляет портал пользователя, консоль администрирования и интеграции с распространёнными поставщиками идентичности. Ни один из вариантов не безопаснее по умолчанию, потому что политику всё равно должен написать тот, кто знает сеть.
Права — самое острое операционное различие. Access Server лицензируется по числу одновременных подключений и обеспечивает это число программно. В Community Edition глобальный лимит — одна строка max-clients, тогда как всё, что на пользователя или на группу, означает больше работы с client-config-dir и ваше собственное обеспечение. Команда без желания заниматься этим обслуживанием покупает именно это, когда платит за коммерческий продукт.
Лицензирование и поддержка: статья, которую никто не закладывает в бюджет
Community Edition бесплатен и имеет открытый исходный код. Access Server коммерческий, и его бесплатный уровень исторически покрывал небольшое число одновременных подключений, а выше действует платная лицензия. Любая цифра из старого ответа на форуме уже устарела, поэтому сверьте текущие условия поставщика, прежде чем считать стоимость проекта. Честное сравнение добавляет часы, потраченные на построение управления пользователями, MFA и мониторинга на стороне сообщества, к строке лицензии на коммерческой стороне.
Ответственность за поддержку следует тому же разделению. С Community Edition вы — путь эскалации для каждого странного клиента и каждого обновления ядра. С Access Server у вас есть поставщик, которому можно позвонить, и вы наследуете его ритм выпусков, подходит он вашему окну изменений или нет.
Проверки перед переходом
Перед переходом в любую сторону проведите инвентаризацию того, что на самом деле хранит работающий сервер. На стороне Access Server экспортируйте список пользователей и назначения групп и отметьте, какие учётные записи зависят от MFA. На стороне Community Edition перечислите выданные сертификаты, CRL и каждый файл в client-config-dir. Сравните два списка строка за строкой, потому что разница между ними — это и есть работа по миграции.
Проверьте представительных клиентов, пока старый сервис ещё работает. openvpn --config client.ovpn --verb 4 на переднем плане печатает рукопожатие, переданные маршруты и параметры DNS, а openssl x509 -in client.crt -noout -subject -enddate показывает, какой сертификат клиент действительно предъявляет. Клиент, который подключается, но не достигает внутреннего хоста, имеет разрыв в маршруте или в iroute, а не сбой аутентификации.
Держите старый путь восстановления живым, пока замена не пройдёт и тест с отказом в доступе, и успешный. Запишите итоговую карту на одной странице: каждое требование, артефакт, который удовлетворяет его сегодня, и артефакт, который будет удовлетворять его потом.