Јавната 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Ако двата хаша се разликуваат само во празни места, имате промена во форматирањето. Ако се разликуваат во крајните точки, операторот нешто преместил и објавената датотека е авторитетот. Ако објавената датотека е постара од вашата, веројатно гледате во кеш и застарениот одговор ќе ве испрати во погрешна насока.
Повлечете го стариот запис и запишете што се случило
Откако ќе се потврди работна замена, избришете го стариот профил наместо да го чувате како резерва. Застарен запис што се поврзува на половина е замка: ќе биде избран за време на прекин, полека ќе пропадне, а лицето што отстранува грешка ќе ги помине првите десет минути на погрешната датотека.
Водете краток запис надвор од конфигурацијата: датумот, старата крајна точка, фазата на неуспех и што го заменило. Јавните јазли се менуваат и шест недели подоцна истото прашање доаѓа со друго лице. Еден ред во датотека со белешки одговара на него за секунди.
Ако од една мрежа секој јазол пропадне на ист начин, а од друга ниту еден, престанете да уредувате профили и погледнете го локалниот пат. Заробениот портал, филтриран опсег на порти или пресретнувачки прокси ќе создадат идентични грешки кај неповрзани даватели на услуги, и токму тој образец е единствениот сигнал дека проблемот никогаш не бил во датотеката.