Публічны канфіг VPN перастаў працаваць? Чытайце стадыю збою
Спампаваны профіль апісвае адзін хост у адзін дзень. Прачытайце, якое сцвярджэнне не вытрымала, праверце сертыфікат, які падае суразмоўца, і ніколі не адключайце праверку.
Профіль працаваў у аўторак, а ў пятніцу кліент круціцца трыццаць секунд і здаецца. На вашай машыне нічога не змянілася. У тым і справа: спампаваная канфігурацыя апісвае адзін хост у адзін момант, і аператар на іншым канцы не абавязаны трымаць гэтае апісанне праўдзівым. Спакуса — пачаць правіць налады бяспекі, пакуль тунель не ўзнімецца зноў. Менавіта гэты інстынкт прыводзіць да таго, што людзі запускаюць профіль з адключанай праверкай сертыфіката, а гэта горш, чым зусім без тунеля.
Файл апісвае момант, а не дамову
Канфігурацыйны файл — гэта набор сцвярджэнняў: гэтае імя хоста слухае гэты порт з гэтым пратаколам, падае сертыфікат, які адпавядае гэтаму імені, і прымае гэтыя ўліковыя даныя. Калі хоць адно з гэтага перастае быць праўдай, файл састарэў, і выпраўленне належыць на бок аператара за мяжой, а не ў вашыя налады.
Публічныя спісы вузлоў па сваёй прыродзе робяць гэта відавочным. Вузлы трымаюць валанцёры, яны з’яўляюцца і знікаюць, адрасы перадаюцца паўторна, а парты блакуюцца той сеткай, за якой яны стаяць. Спіс — гэта здымак, які перагенерыруецца, а копія на вашым дыску — фатаграфія старэйшага здымка.
Камерцыйныя сэрвісы змяняюцца павольней, але не ніколі. Цэнтры сертыфікацыі змяняюцца, слухач пераязджае з агульнага адраса на выдзелены, стары пратакол выводзіцца з эксплуатацыі, і з’яўляецца новы спіс шыфраў. Кожнае з гэтага нябачнае, пакуль ваш кліент не паспрабуе падключыцца і не атрымае іншы адказ, чым чакае файл.
Прачытайце стадыю збою, перш чым кранаць наладу
Паведамленне пра памылку кажа, якое сцвярджэнне не вытрымала, і кожнае сцвярджэнне мае зусім іншае выпраўленне. Правіць шыфры, калі імя хоста ўжо не развязваецца, — страціць паўдня і нікога нічаму не навучыць.
| What happens | The assertion that broke | Supported response |
|---|---|---|
| Name never resolves | The host still exists under that name | Get a current endpoint from the operator |
| TCP connect times out | The listener is on that port and reachable | Check the current published port, then the local network |
| TLS or key exchange fails | The peer presents the expected identity | Compare the certificate, not the cipher list |
| Authentication rejected | The account is still valid | Get 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Калі два хэшы адрозніваюцца толькі прабеламі, у вас змена фарматавання. Калі яны адрозніваюцца канчатковымі кропкамі, аператар нешта перамясціў, і апублікаваны файл — гэта аўтарытэт. Калі апублікаваны файл старэйшы за той, што ў вас, вы, хутчэй за ўсё, глядзіце ў кэш, і састарэлы адказ павядзе вас у няправільным кірунку.
Вывядзіце стары запіс і запішыце, што адбылося
Пасля праверкі працоўнай замены выдаліце стары профіль, а не трымайце яго як запасны. Састарэлы запіс, які падключаецца напалову, — гэта пастка: ён будзе выбраны падчас збою, ён будзе адмаўляць паволі, і той, хто будзе шукаць прычыну, правядзе першыя дзесяць хвілін з няправільным файлам.
Трымайце кароткі запіс па-за канфігурацыяй: дату, старую канчатковую кропку, стадыю збою і тое, што яе замяніла. Публічныя вузлы змяняюцца, і праз шэсць тыдняў тое ж пытанне прыходзіць з іншым чалавекам. Адзін радок у файле нататак адказвае на яго за секунды.
Калі з адной сеткі кожны вузел збоіць аднолькава, а з іншай — ніводны, спыніце правіць профілі і паглядзіце на лакальны шлях. Захоплены партал, адфільтраваны дыяпазон партоў або перахопліваючы проксі дадуць аднолькавыя памылкі ў незалежных правайдараў, і менавіта гэтая заканамернасць — адзіны сігнал, што праблема ніколі не была ў файле.