Профиль скачивается, импортируется, а затем останавливается на 12-й строке файла с сообщением Unrecognized option, в котором названа keysize. В аккаунте ничего не изменилось, и сервер по-прежнему принимает других клиентов. Изменился сам клиент: в Ubuntu 24.04 ставится OpenVPN 2.6, тогда как экспорт был написан для 2.4. Починка — это короткая серия удалений, и порядок важен, потому что каждая устаревшая опция обрывает разбор ещё до того, как следующая вообще будет прочитана.

Прочитайте строку ошибки, прежде чем трогать файл

OpenVPN называет файл и строку, на которой разбор остановился, поэтому за один запуск можно исправить только одну проблему. Запускайте профиль из терминала, а не из апплета рабочего стола, потому что апплет обычно проглатывает stderr, а номер строки — единственный надёжный указатель, который вы получите: sudo openvpn --config /etc/openvpn/client/provider.ovpn. Исправьте эту строку, запустите снова и ждите, что следующий сбой назовёт другую опцию.

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

Три класса сбоев, три разных починки

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

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

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

Удалите опции, которые убрали в 2.6, в таком порядке

Каждая из этих строк сама останавливает разбор, поэтому клиент сообщает о них по одной. Идите по списку вниз и запускайте заново после каждого удаления.

Сначала удалите keysize, потому что у неё нет современного эквивалента и её наличие обычно указывает на шифр, от которого текущий клиент всё равно отказывается. Затем удалите ncp-disable, которая управляла согласованием шифров, была объявлена устаревшей в 2.5 и исчезла в 2.6. Замените ns-cert-type server на remote-cert-tls server, которая выражает то же намерение через поддерживаемую проверку.История изменений 2.6 перечисляет оставшиеся удаления рядом с их заменами, поэтому всё, что парсер ещё отвергает, имеет документированный ответ.

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

Держите BF-CBC рабочим только как ограниченный запасной вариант

Некоторые провайдеры всё ещё завершают на BF-CBC, который OpenVPN 2.6 не станет согласовывать без помощи, потому что у этого шифра 64-битный блок. Узкая починка — это список запасных вариантов плюс legacy-провайдер OpenSSL, а не понижение версии всего клиента.

providers legacy default
data-ciphers AES-256-GCM:AES-128-GCM
data-ciphers-fallback BF-CBC

Первая строка загружает legacy-провайдер, чтобы OpenSSL всё ещё мог создать этот шифр, вторая сохраняет современное согласование для пиров, которые его поддерживают, а третья применяется только когда сервер не предлагает ничего лучше. Это осознанное ослабление туннеля, поэтому запишите рядом с файлом, почему оно существует. Одновременно попросите у провайдера пересозданный экспорт, поскольку запасной вариант — мост, а не конечная цель.

Не хватайтесь за --compat-mode как за универсальный ответ. Он меняет сразу несколько поведений, включая умолчания согласования и пересогласования, поэтому вы так и не узнаете, какое изменение имело значение. Предпочтите три явные строки выше, потому что каждая заявляет свой эффект.

Проверяйте по тому профилю, который клиент действительно загружает

Импортированные подключения часто копируются в системный каталог, поэтому правка файла в папке загрузок может вообще ничего не изменить. Найдите копию, которая работает: sudo grep -rl "remote " /etc/NetworkManager/system-connections /etc/openvpn. Затем запустите туннель и прочитайте строку журнала, где указан фактически выбранный шифр канала данных. Подключение, которое завершает рукопожатие на запасном варианте, говорит о том, что сервер так и не предложил ничего современного.

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

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

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