Профіль працаваў у аўторак, а ў пятніцу кліент круціцца трыццаць секунд і здаецца. На вашай машыне нічога не змянілася. У тым і справа: спампаваная канфігурацыя апісвае адзін хост у адзін момант, і аператар на іншым канцы не абавязаны трымаць гэтае апісанне праўдзівым. Спакуса — пачаць правіць налады бяспекі, пакуль тунель не ўзнімецца зноў. Менавіта гэты інстынкт прыводзіць да таго, што людзі запускаюць профіль з адключанай праверкай сертыфіката, а гэта горш, чым зусім без тунеля.

Файл апісвае момант, а не дамову

Канфігурацыйны файл — гэта набор сцвярджэнняў: гэтае імя хоста слухае гэты порт з гэтым пратаколам, падае сертыфікат, які адпавядае гэтаму імені, і прымае гэтыя ўліковыя даныя. Калі хоць адно з гэтага перастае быць праўдай, файл састарэў, і выпраўленне належыць на бок аператара за мяжой, а не ў вашыя налады.

Публічныя спісы вузлоў па сваёй прыродзе робяць гэта відавочным. Вузлы трымаюць валанцёры, яны з’яўляюцца і знікаюць, адрасы перадаюцца паўторна, а парты блакуюцца той сеткай, за якой яны стаяць. Спіс — гэта здымак, які перагенерыруецца, а копія на вашым дыску — фатаграфія старэйшага здымка.

Камерцыйныя сэрвісы змяняюцца павольней, але не ніколі. Цэнтры сертыфікацыі змяняюцца, слухач пераязджае з агульнага адраса на выдзелены, стары пратакол выводзіцца з эксплуатацыі, і з’яўляецца новы спіс шыфраў. Кожнае з гэтага нябачнае, пакуль ваш кліент не паспрабуе падключыцца і не атрымае іншы адказ, чым чакае файл.

Прачытайце стадыю збою, перш чым кранаць наладу

Паведамленне пра памылку кажа, якое сцвярджэнне не вытрымала, і кожнае сцвярджэнне мае зусім іншае выпраўленне. Правіць шыфры, калі імя хоста ўжо не развязваецца, — страціць паўдня і нікога нічаму не навучыць.

What happensThe assertion that brokeSupported response
Name never resolvesThe host still exists under that nameGet a current endpoint from the operator
TCP connect times outThe listener is on that port and reachableCheck the current published port, then the local network
TLS or key exchange failsThe peer presents the expected identityCompare the certificate, not the cipher list
Authentication rejectedThe account is still validGet credentials reissued or stop using the service
dig +short vpn.example.net
curl -sS -o /dev/null -w 'connect=%{time_connect} tls=%{time_appconnect}\n' --max-time 8 https://vpn.example.net:443/
openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -brief </dev/null

Сярэдні радок аддзяляе заблакаваны шлях ад зламанага рукапаціску, а трэці паказвае выдаўцу і даты сапраўднасці сертыфіката, які фактычна падаецца. Калі гэты выдавец не той, які замацаваны ў профілі, сертыфікат змяніўся, і ніякая опцыя кліента не зробіць стары пін зноў слушным.

Змены сертыфіката і асобы — самыя ціхія

Большасць збояў абвяшчаюць пра сябе. Змены асобы — не, бо кліент, які замацоўвае імя сертыфіката, адхіліць цалкам добры новы сертыфікат з паведамленнем, якое шмат хто чытае як памылку ў праграме. Тунель у парадку. Пін састарэў.

Шукайце опцыі асобы, перш чым рабіць высновы:

grep -nE '^(remote|proto|auth|verify-x509-name|tls-crypt|key-direction|ca) ' profile.ovpn
openssl x509 -in profile-ca.crt -noout -subject -dates

Калі профіль нясе ўбудаваны CA, а аператар перайшоў на новы цэнтр, стары файл не можа праверыць новы сервер. Замена блока CA на апублікаваны аператарам — законнае выпраўленне. Выдаленне дырэктывы праверкі — не, і гэта тыя ж націскі з зусім іншым вынікам.

Абнаўленне кліента можа даць той жа сімптом без зменаў з боку аператара. Опцыі, якія маўкліва дапушчаліся, цяпер адхіляюцца, або састарэлы пратакол выдаляецца. Гэта мяжа сумяшчальнасці ў вашым праграмным забеспячэнні, і варта праверыць другі профіль на тым жа кліенце, перш чым вінаваціць сервер.

Толькі аператар можа апублікаваць сапраўдную замену

Калі вузел знікае, замена павінна прыйсці з таго ж крыніцы, што апублікавала арыгінал. Профіль, які прыйшоў у асабістым паведамленні таму, што «выкарыстоўвае тое ж імя сервера», — гэта неправераная канфігурацыя ад невядомага боку, і яго імпарт аддае гэтаму боку кантроль над вашай маршрутызацыяй.

Праверка танна. Атрымайце бягучы файл з апублікаванага месца, параўнайце канчатковую кропку і пратакол са спісам і пацвердзіце адбітак матэрыялу CA, а не давярайце імені файла:

curl -sS -o current.ovpn https://example.org/nodes/current.ovpn
sha256sum current.ovpn profile.ovpn
grep -nE '^(remote|proto) ' current.ovpn

Калі два хэшы адрозніваюцца толькі прабеламі, у вас змена фарматавання. Калі яны адрозніваюцца канчатковымі кропкамі, аператар нешта перамясціў, і апублікаваны файл — гэта аўтарытэт. Калі апублікаваны файл старэйшы за той, што ў вас, вы, хутчэй за ўсё, глядзіце ў кэш, і састарэлы адказ павядзе вас у няправільным кірунку.

Вывядзіце стары запіс і запішыце, што адбылося

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

Трымайце кароткі запіс па-за канфігурацыяй: дату, старую канчатковую кропку, стадыю збою і тое, што яе замяніла. Публічныя вузлы змяняюцца, і праз шэсць тыдняў тое ж пытанне прыходзіць з іншым чалавекам. Адзін радок у файле нататак адказвае на яго за секунды.

Калі з адной сеткі кожны вузел збоіць аднолькава, а з іншай — ніводны, спыніце правіць профілі і паглядзіце на лакальны шлях. Захоплены партал, адфільтраваны дыяпазон партоў або перахопліваючы проксі дадуць аднолькавыя памылкі ў незалежных правайдараў, і менавіта гэтая заканамернасць — адзіны сігнал, што праблема ніколі не была ў файле.

Падобныя артыкулы