Два имени участвуют ещё до подключения клиента: имя файла на ноутбуке (nuc.ovpn) и идентичность, которую сервер выводит из учётных данных. Поиск в client-config-dir использует вторую. Переименование профиля на клиенте или добавление .conf к файлу на сервере ничего не меняет в том, какой файл откроет сервер.

Полезное сравнение — не «какое имя я использовал», а «какое правило применяет сервер», потому что аутентификация по сертификату и аутентификация по имени пользователя и паролю могут давать разные действующие имена при одном и том же входе.

Имя профиля и общее имя сертификата

В стандартной конфигурации на основе сертификатов сервер берёт общее имя X.509 и ищет файл ровно с таким именем внутри client-config-dir. Профиль с именем nuc.ovpn, в сертификате которого указано tester, разрешается в /etc/openvpn/server/ccd/tester. Имя клиентского файла никогда не участвует в вычислении. Это первое место, где прячется несоответствие.

Поэтому каталог, полный аккуратно названных профилей, может промахиваться каждый раз. Файл сопоставляется не по subject, не по адресу электронной почты и не по имени в графическом интерфейсе, а по строке общего имени.

В файловой системе, различающей регистр, Tester и tester — два разных файла, и открывается только один. Проверяйте общее имя в сертификате, который клиент действительно предъявляет, а не в копии из своих заметок.

username-as-common-name переворачивает правило

Когда сервер выполняет аутентификацию по имени пользователя и паролю с параметром username-as-common-name, аутентифицированное имя пользователя заменяет общее имя сертификата для этого поиска.

Сравните два случая напрямую: при идентичности из сертификата файл следует за сертификатом, и смена пароля не важна; при идентичности из имени пользователя файл следует за именем входа, и перевыпуск сертификата не важен. Поле, которое подставляет сервер, и определяет, по какому имени переименовывать. Перевыпущенный сертификат с новым CN молча меняет цель поиска, а старый файл CCD остаётся на диске и выглядит правильным.

Бывают смешанные конфигурации, и именно там начинается большая часть путаницы. Если один блок службы включает подстановку, а другой нет, действующее имя зависит от того, какой экземпляр обслужил соединение. Подтверждайте активную конфигурацию, а не предполагайте, что действует глобальный файл. Исходный справочник по серверным параметрам описывает поиск по названному файлу и необязательный резервный вариант.

Что сервер читает и что молча пропускает

Выбор файла решают два небольших отличия. Первое — добавленное расширение. Второе — случайный символ в имени.

OpenVPN не добавляет .conf к имени, которое ищет, поэтому tester.conf не совпадает с tester. Редактор, скрывающий расширения, может оставить файл, который в списке выглядит правильно и никогда не совпадает.

Если подходящего файла нет, сервер может перейти к файлу с именем DEFAULT. Поэтому приход части настроек не доказывает, что использовался файл для конкретного клиента. Сравните выданный адрес или протолкнутые маршруты с тем, что дал бы файл для конкретного клиента. Третий фильтр — права, потому что сервер открывает файл после отказа от привилегий; оболочка root, которая может его прочитать, ничего не доказывает.

Правильное имя файла не подтверждает содержимое

Выбор и содержимое — разные сбои. После открытия нужного файла его директивы всё ещё должны быть допустимы для этого клиента.

ifconfig-push должен выдать адрес, который топология действительно может использовать, а iroute имеет смысл только для маршрутизируемой подсети за этим клиентом.

Одна идентичность, несколько устройств

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

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

Похожие статьи