Публичната 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Ако двата хеша се различават само по интервали, имате промяна във форматирането. Ако се различават по крайни точки, операторът е преместил нещо и публикуваният файл е авторитетът. Ако публикуваният файл е по-стар от този, който държите, вероятно гледате кеш и остарелият отговор ще ви изпрати в грешна посока.
Изведете стария запис и запишете какво се случи
След като работеща замяна е потвърдена, изтрийте стария профил, вместо да го пазите като резерва. Остарял запис, който се свързва наполовина, е капан: той ще бъде избран при прекъсване, ще се проваля бавно и човекът, който отстранява проблема, ще прекара първите десет минути с грешния файл.
Пазете кратък запис извън конфигурацията: датата, старата крайна точка, етапа на отказа и какво го е заменило. Публичните възли се менят и шест седмици по-късно същият въпрос идва с друг човек. Един ред във файл с бележки отговаря за секунди.
Ако от една мрежа всеки възел се проваля по същия начин, а от друга — нито един, спрете да редактирате профили и погледнете локалния път. Затворен портал, филтриран диапазон от портове или прихващащ прокси ще дадат идентични грешки при несвързани доставчици и точно този модел е единственият сигнал, че проблемът никога не е бил във файла.