Ошибка OpenVPN: неизвестный параметр tls-remote или keysize
Более новый клиент OpenVPN отвергает старые строки профиля, такие как tls-remote и keysize. Прочитайте имя параметра, замените проверку и не отключайте верификацию.
Обычно всё начинается с профиля, который подключался годами, но после открытия в более новом клиенте падает ещё до запуска туннеля. Терминал печатает что-то вроде Options error: Unrecognized option ... in client.ovpn:130: tls-remote с версией в скобках в конце. Читайте это как жалобу парсера: в файле есть директива, которую этот клиент больше не знает.
Одно это сообщение объясняет, почему перегенерация ключей, повторный ввод пароля или проверка сервера ничего не дают. Сбой происходит, пока клиент читает собственную конфигурацию, ещё до открытия сокета. Полезной работой будет найти отвергнутую директиву и заменить её текущим эквивалентом.
Прочитайте строку с ошибкой, прежде чем что-то менять
Запускайте клиент сами, а не из значка в трее, чтобы сообщение было видно, а путь к профилю однозначен. Откройте файл на указанной строке и посмотрите на токен, который назвал клиент. Номер строки — это строка профиля, а не версия; людей это путает, потому что то же число стоит в скобках как идентификатор выпуска.
Старые генераторы профилей выдавали не одну плохую директиву, а несколько. Исправьте первую ошибку, запустите клиент снова и ожидайте следующую. Такая последовательность нормальна и не означает, что правки сделали хуже.
Что случилось с keysize и tls-remote
keysize задавал длину ключа шифра в те времена, когда профиль явно выбирал шифр. OpenVPN 2.4 объявил его устаревшим, а более поздние клиенты убрали его из таблицы параметров, поэтому парсер теперь отвергает строку, а не игнорирует её. Современное согласование выводит длину ключа из выбранного шифра, поэтому директиве больше нечем управлять.
tls-remote удалён в версии 2.4. Он сравнивал сертификат сервера с ожидаемым именем, а его замена — verify-x509-name, которая строже подходит к тому, как сопоставляется имя. Старой директивы больше нет, поэтому профиль, который её содержит, никогда не разберётся текущим клиентом.
Исправляйте по одной директиве за попытку. Если профиль также указывает шифр, который клиент не предлагает, это даст другую ошибку позже, а смешивание обеих правок в одной не позволит понять, какая сломала рукопожатие. Переподключайтесь после каждой правки и сохраняйте текст ошибки. Эта привычка ещё и оставляет рабочий запасной вариант, если правка сделает хуже.
Перепишите проверку подлинности сервера
Замена принимает ожидаемое имя и режим сравнения. verify-x509-name vpn.example.edu name требует, чтобы субъект сертификата в точности совпадал с этим значением. Другие режимы сопоставляют префикс или полную строку субъекта, и выбор неверного режима превращает рабочий профиль в чистую ошибку проверки.
Если старый аргумент tls-remote был полным common name сервера, точное сравнение name обычно верно. Если это было частичное значение, используйте режим префикса, а не сокращайте ожидаемое имя, потому что более короткое точное совпадение не пройдёт проверку. Когда исходное значение не записано, спросите у того, кто обслуживает сервер, какой субъект они публикуют.
Не отключайте проверку, чтобы ошибка исчезла. Удаление проверки подлинности сервера превращает исправимую проблему профиля в непроверенный туннель, а это ровно тот риск, ради предотвращения которого существовала директива.
Исправленный профиль, локальная правка или старый клиент
Когда сервер принадлежит кому-то другому, самый чистый путь — актуальный профиль от него. Ваша копия пришла из старого генератора, а их экспорт уже использует текущие директивы. Одна загрузка убирает всю категорию ошибок и оставляет будущие правки в одном месте.
Когда вам принадлежат оба конца, правьте копию и храните оригинал. Меняйте одну директиву, сохраняйте, подключайтесь и записывайте протестированную версию клиента. Держите короткую заметку рядом с каждой правкой, потому что профиль, редактировавшийся в течение нескольких сеансов, трудно проверять по памяти. Запуски из командной строки по отредактированному файлу ускоряют этот цикл, потому что ошибка идёт прямо в терминал.
Закрепление или откат к клиенту до 2.4 тоже заставляет сообщение исчезнуть, и с устройством, которое никогда не будет обновлено, это может быть единственной рабочей мерой. Считайте её временной: старый клиент на современном рабочем столе обычно означает старую библиотеку и неподдерживаемую конфигурацию, то есть отложенную, а не решённую проблему.
После поднятия туннеля прочитайте весь профиль ещё раз. Профили, содержавшие одну удалённую директиву, часто содержат и другую, и вторая проявляется только после исчезновения первой.