Viešoji VPN konfigūracija nustojo veikti? Skaitykite gedimo etapą
Atsisiųstas profilis aprašo vieną hostą vieną dieną. Skaitykite, kuri prielaida žlugo, patikrinkite priešinės pusės pateiktą sertifikatą ir niekada neišjunkite tikrinimo.
Profilis veikė antradienį, o penktadienį klientas sukasi trisdešimt sekundžių ir pasiduoda. Jūsų kompiuteryje niekas nepasikeitė. Būtent tai ir yra esmė: atsisiųsta konfigūracija aprašo vieną hostą vienu momentu, o operatorius kitoje pusėje neprivalo išlaikyti to aprašo teisingo. Pagunda pradėti redaguoti saugos nustatymus, kol tunelis vėl pakils. Būtent šis instinktas lemia, kad žmonės galiausiai paleidžia profilį su išjungtu sertifikatų tikrinimu, o tai blogiau nei iš viso neturėti tunelio.
Failas aprašo akimirką, o ne sutartį
Konfigūracijos failas yra teiginių rinkinys: šis hosto vardas klausosi šiame porte su šiuo protokolu, pateikia šį vardą atitinkantį sertifikatą ir priima šiuos prisijungimo duomenis. Kai kuris nors iš jų nustoja būti teisingas, failas pasenęs, o taisymas priklauso operatoriui už ribos, ne jūsų nustatymams.
Viešieji mazgų sąrašai tai daro akivaizdu savo prigimtimi. Mazgus valdo savanoriai, jie atsiranda ir dingsta, adresai pernaudojami, o portus blokuoja tinklas, už kurio jie yra. Sąrašas yra momentinė nuotrauka, kuri generuojama iš naujo, o jūsų diske esanti kopija yra senesnės momentinės nuotraukos fotografija.
Komercinės paslaugos keičiasi lėčiau, bet ne niekada. Sertifikatų institucijos keičiasi, klausytojas persikelia iš bendro adreso į atskirą, senas protokolas atšaukiamas ir atkeliauja naujas šifrų sąrašas. Kiekvienas iš jų nematomas tol, kol jūsų klientas pabando prisijungti ir gauna kitokį atsakymą nei tikisi failas.
Skaitykite gedimo etapą prieš liesdami nustatymą
Klaidos pranešimas pasako, kuri prielaida žlugo, o kiekviena prielaida turi visiškai kitokį taisymą. Šifrų redagavimas, kai hosto vardas jau nesprendžiamas, praranda popietę ir nieko nieko neišmoko.
| 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/nullVidurinė eilutė atskiria užblokuotą kelią nuo sulaužyto rankos paspaudimo, o trečioji rodo faktiškai pateikto sertifikato išdavėją ir galiojimo datas. Jei tas išdavėjas nėra tas, kurį profilis prisegė, sertifikatas pasikeitė, ir jokia kliento pusės parinktis nepadarys seno prisegimo vėl teisingo.
Sertifikato ir tapatybės pokyčiai yra tylieji
Dauguma gedimų patys apie save praneša. Tapatybės pokyčiai ne, nes klientas, prisegantis sertifikato vardą, atmes visiškai gerą naują sertifikatą su pranešimu, kurį daugelis skaito kaip programinės įrangos klaidą. Tunelis tvarkingas. Prisegimas pasenęs.
Prieš darydami išvadas ieškokite tapatybės parinkčių:
grep -nE '^(remote|proto|auth|verify-x509-name|tls-crypt|key-direction|ca) ' profile.ovpn
openssl x509 -in profile-ca.crt -noout -subject -datesJei profilyje yra įterptas CA ir operatorius perėjo prie naujos institucijos, senas failas negali patvirtinti naujo serverio. CA bloko pakeitimas operatoriaus paskelbtu yra teisėtas taisymas. Tikrinimo direktyvos ištrynimas nėra, ir tai tie patys klavišų paspaudimai su visai kitu rezultatu.
Kliento atnaujinimas gali sukelti tą patį simptomą be jokio operatoriaus pakeitimo. Parinktys, kurios buvo tyliai toleruojamos, dabar atmetamos, arba pašalinamas pasenęs protokolas. Tai jūsų programinės įrangos suderinamumo riba, ir verta išbandyti antrą profilį su tuo pačiu klientu prieš kaltinant serverį.
Tik operatorius gali paskelbti galiojantį pakaitalą
Kai mazgas dingsta, pakaitalas turi ateiti iš to paties šaltinio, kuris paskelbė originalą. Profilis, atkeliavęs tiesiogine žinute todėl, kad „naudoja tą patį serverio vardą“, yra nepatikrinta nežinomos šalies konfigūracija, o jo importavimas suteikia tai šaliai jūsų maršrutizavimo kontrolę.
Patikra pigi. Paimkite dabartinį failą iš paskelbtos vietos, palyginkite galinį tašką ir protokolą su sąrašu ir patvirtinkite CA medžiagos piršto atspaudą, o ne pasitikėkite failo vardu:
curl -sS -o current.ovpn https://example.org/nodes/current.ovpn
sha256sum current.ovpn profile.ovpn
grep -nE '^(remote|proto) ' current.ovpnJei du maišos kodai skiriasi tik tarpais, turite formatavimo pakeitimą. Jei jie skiriasi galiniais taškais, operatorius kažką perkėlė ir paskelbtas failas yra autoritetas. Jei paskelbtas failas senesnis už jūsų, tikriausiai žiūrite į podėlį, ir pasenęs atsakymas nukreips jus ne ta linkme.
Išimkite seną įrašą ir užrašykite, kas įvyko
Patvirtinus veikiantį pakaitalą, ištrinkite seną profilį, o ne laikykite jo kaip atsarginio. Pasenęs įrašas, kuris jungiasi pusiau, yra spąstai: jis bus pasirinktas sutrikimo metu, jis lėtai žlugs, o derintojas pirmąsias dešimt minučių praleis prie netinkamo failo.
Laikykite trumpą įrašą už konfigūracijos ribų: datą, seną galinį tašką, gedimo etapą ir kas jį pakeitė. Viešieji mazgai kinta, o po šešių savaičių tas pats klausimas ateina su kitu žmogumi. Viena eilutė užrašų faile atsako į jį per sekundes.
Jei iš vieno tinklo kiekvienas mazgas žlunga vienodai o iš kito – nė vienas, nustokite redaguoti profilius ir pažiūrėkite į vietinį kelią. Užkardintasis portalas, filtruojamas portų diapazonas arba perimantis tarpinis serveris sukels identiškas klaidas nesusijusiems tiekėjams, ir būtent šis modelis yra vienintelis signalas, kad problema niekada nebuvo faile.