Профиль OpenVPN, который работает в другом месте, сообщает, что AES-256-GCM не найден, или что у сторон нет общего шифра, и первая мысль — править профиль. Эти два сообщения описывают разные отказы. Одно говорит, что в локальной программе нет такого алгоритма; другое — что у обеих сторон есть алгоритмы, но нет общего выбора. Правка профиля не решает ни одного, пока вы не знаете, какое из них у вас.

Прочитайте точный текст ошибки и программу, которая её выдала.

Определите, какая ошибка у вас

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

Различие важно, потому что одно — проблема версии программы, а другое — проблема конфигурации. Первое решается номером версии. Второе решается сравнением двух списков.

Локальный пробел в возможностях

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

openvpn --version
openvpn --show-ciphers | grep -i gcm
openvpn --show-tls | head -5

Если AES-256-GCM нет в этом списке, ни одна строка профиля его не добавит. Решение — более новый клиент или другая сборка, а ограничения более старой стороны становятся отдельным вопросом проектирования.

В клиентах на основе OpenVPN 3 движок и принимаемые директивы отличаются от общественной линии 2.x, поэтому тот же текст профиля может не работать по причинам, не связанным со списком шифров.

Пробел при согласовании

Когда обе стороны перечисляют алгоритм, остаётся вопрос, какой список предлагает каждая. Общественный OpenVPN переименовал директиву согласования: ncp-ciphers в 2.4 стал data-ciphers в 2.5, а в 2.6 старая строка cipher служит в основном совместимости и откату, а не определению согласованного набора.

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

openvpn --version | head -2
grep -n -E '^(data-ciphers|ncp-ciphers|cipher|tls-cipher)' server.conf client.ovpn

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

Держите совместимость явной

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

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

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

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