Обикновено всичко започва с профил, който се е свързвал с години, отворен в по-нов клиент, и се проваля още преди тунелът да стартира. Терминалът отпечатва нещо като 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 е бил пълното общо име на сървъра, точното сравнение name обикновено е правилно. Ако е било частична стойност, използвайте режима на префикс, вместо да съкращавате очакваното име, защото по-кратко точно съвпадение няма да се провери. Когато оригиналната стойност не е записана, попитайте този, който управлява сървъра, за субекта, който публикуват.

Не заглушавайте проверката, за да изчезне грешката. Премахването на проверката на идентичността на сървъра превръща поправим проблем с профила в непроверен тунел, което е точно рискът, който директивата е съществувала да предотврати.

Поправен профил, локална редакция или по-стар клиент

Когато сървърът е на някой друг, най-чистият път е актуален профил от него. Вашето копие идва от по-стар генератор, а неговият експорт вече използва текущите директиви. Едно изтегляне премахва цялата категория грешки и държи бъдещите редакции на едно място.

Когато притежавате и двете страни, редактирайте копие и запазете оригинала. Променете една директива, запазете, свържете се и запишете версията на клиента, която сте тествали. Дръжте кратка бележка до всяка редакция, защото профил, редактиран в няколко сесии, е труден за одит по памет. Пускането от командния ред срещу редактирания файл прави този цикъл бърз, защото грешката отива направо в терминала.

Застопоряването или връщането към клиент преди 2.4 също кара съобщението да изчезне и с устройство, което никога няма да бъде обновено, това може да е единственото работещо временно решение. Отнасяйте се към него като временно: стар клиент на съвременен настолен компютър обикновено означава стара библиотека и неподдържана конфигурация, което е отложен, а не решен проблем.

След като тунелът се вдигне, прочетете целия профил още веднъж. Профилите, носили една премахната директива, често носят и друга, а втората се появява само след като първата изчезне.

Подобни статии