Kaip išbandyti VPN jungiklį be tikrų paskyrų
Atlikite jungiklio testą su masalu ir atsarginiu profiliu: apimkite kiekvieną trikdžio tipą, perskaitykite curl išėjimo kodus ir atskirkite tikrą blokavimą nuo DNS gedimo.
Norint sužinoti, ar blokavimo jungiklis laiko, tikros paskyros nereikia; būtent paskyrą testas ir stato į pavojų. Patikra sukuria trumpą langą, kai srautas gali, bet nebūtinai išeis už tunelio ribų, todėl našta turi būti tai, ką galite prarasti. Dabar tai darau su masalu ir atsarginiu naršyklės profiliu ir gaunu aiškesnį atsakymą nei anksčiau naudodamas naršyklės ir žiniatinklio pašto derinį. Toliau einu ta pačia tvarka, kurią siūlo klientas: nustatymas, tikslas, perėjimas ir tada įrodymas.
Testas atsako tik į vieną siaurą klausimą: ar šio perėjimo metu ši programa gali pasiekti tinklą už tunelio ribų? jis nieko nesako apie tai, ar likusi politika yra prasminga. Laikykite apimtį tokią siaurą, ir rezultatas bus vertas užrašymo.
Raskite jungiklį ir jo apimtį kliente
Atidarykite klientą ir raskite blokavimo nustatymą prieš keisdami bet kokią tinklo būseną. Gamintojai jį vadina skirtingai: blokavimo jungiklis, užrakinimo režimas, tinklo spyna, srauto už tunelio blokavimas. Etiketė pasako mažiau nei parinktys viduje. Svarbu, ar blokavimas taikomas visada, ar tik tada, kai programa nusprendžia, kad tunelis ką tik sugedo, ir ar jis apima visas programas, ar pasirinktą sąrašą.
Tada išvardykite perėjimus, kuriuos jūsų klientas iš tikrųjų gali atlikti. Vartotojo inicijuotas atjungimas, išėjimas iš programos ir ryšio su serveriu netektis daugumoje klientų yra trys skirtingi kodo keliai ir nesidalija viena blokavimo politika. Vieni atblokuoja išėjus iš programos. Kiti palieka filtro taisykles, kol kažkas jų nepašalina. Perskaitykite gamintojo nustatymų žinyną savo versijai, o ne spėliokite, ir užrašykite, kurį iš trijų atvejų tikrinate.
Užrašykite ir profilį: protokolą, adresų šeimas ir ar įjungtas skaidytas tunelis. Teiginys apie viso įrenginio apsaugą neturi prasmės, jei profilis sąmoningai išskiria kelias programas, o jūsų pačių sukonfigūruotas išskyrimas nėra nutekėjimas. OpenVPN Connect nustatymų žinynas yra būtent toks puslapis, kuriame nurodoma, kuris jungiklis keičia kurį elgesį, nors etiketės skirtinguose klientuose skiriasi.
Pasirinkite masalą, kuri veikia ir be tunelio
Masalui reikia dviejų savybių, o praleidus bet kurią gaunamas neįskaitomas rezultatas. Jis turi būti pasiekiamas tiesiogiai, kai tunelis išjungtas ir blokavimas neveikia, kitaip tai, kad jis nustojo atsakinėti, gali tiesiog reikšti, kad dingo serveris. Ir jam neturi reikėti prisijungimo, slapuko ar mokėjimo, kad nutekėjimas kainuotų vieną žurnalo eilutę, o ne sesiją.
Statinis puslapis jūsų kontroliuojamame serveryje yra švariausias pasirinkimas. Atsarginė virtualioji mašina su paprastu HTTP serveriu beveik tokia pat gera, o viešas ryšio patikros puslapis tinka, jei sutinkate, kad jo prieinamumas yra ne jūsų kontrolėje. Užrašykite adresą, prievadą, adresų šeimą ir ar užklausai reikia vardo paieškos, nes kiekvienas iš jų tampa kintamuoju, kurį vėliau gali tekti išskirti.
Nustatykite bazinę būseną prieš liesdami jungiklį. Kai tunelis įjungtas, masalas turi atsakyti per tunelį, o tai įrodo, kad politika pagrįstas maršrutas veikia. Kai tunelis išjungtas ir blokavimas neveikia, jis turi atsakyti tiesiogiai, o tai įrodo, kad tikslas gyvas. Tik tada nesėkmė užblokuotoje būsenoje ką nors pasakys.
Atlikite perėjimus nustatyta tvarka
Perėjimus atlikite po vieną ir kiekvienam duokite kelias sekundes nusistovėti, nes klientai dažnai būtent šiame intervale sugriauna ir iš naujo pastato taisykles. To paties trumpo testo kartojimas kiekvieną kartą daro stebėjimus palyginamus:
curl -sS -o /dev/null -w 'http=%{http_code}\n' --max-time 5 http://decoy.example/
echo "curl_exit=$?"
dig +short decoy.example
curl -6 -sS -o /dev/null -w 'v6_http=%{http_code}\n' --max-time 5 http://decoy.example/
echo "curl_v6_exit=$?"
| Transition | Expected with the block on | Failure signature |
|---|---|---|
| Manual disconnect | Decoy stops answering within seconds | Decoy still returns 200 |
| Server or path failure | Blocked, with no exemption for the old endpoint | Direct access during the gap |
| Quit the app | Client-dependent; record what happens | Block disappears with the process |
| Wi-Fi to Ethernet | Block holds until the tunnel returns | Traffic flows mid-change |
Eilutė su išėjimu iš programos nusipelno atskiro paleidimo, net jei įprastai kliento niekada neuždarote. Jei blokavimas atsileidžia išėjus, strigtis ar priverstinis atnaujinimas suteikia tą pačią ekspoziciją, ir tai faktas apie diegimą, o ne apie jūsų kantrybę. Windows sistemoje lygiavertės patikros yra Resolve-DnsName decoy.example ir curl.exe -s -o NUL -w "%{http_code}" http://decoy.example/.
Atskirkite blokavimą nuo sugedusio resolverio
Puslapis, kuris neįsikelia, turi kelias priežastis, ir tik viena jų yra veikiantis jungiklis. Jei vardas neišsprendžiamas, sužinojote, kad DNS blokuojamas arba sugedęs, o ne kad duomenų kelias blokuojamas. Patikrinkite ir tiesioginį adresą, kad atsakymas visai nepriklausytų nuo vardų sprendimo.
curl išėjimo kodai atskiria šiuos atvejus. 6 yra vardo sprendimo klaida, 7 reiškia atsisakytą ryšį, 28 yra laiko limitas. Užblokuotas maršrutas paprastai pasireiškia kaip laiko limitas arba atsisakymas tiesioginiam adresui, o blokavimas tik DNS palieka 6 ir paslepia visa kita. Podėlyje laikomas puslapis arba perėmimo portalas apgauna akį, todėl įrodymas yra išėjimo kodas, o ne ekranas.
Pakartokite patikrą per IPv6 su tiesioginiu adresu. Blokavimas, kuris apima IPv4 ir ignoruoja IPv6, yra pakankamai dažnas, kad nusipelnytų atskiros eilutės užrašuose, o klientas, išjungiantis IPv6 už tunelio, turėtų švariai nepavykti abiejose šeimose.
Užrašykite apimtį, kurią rezultatas apima
Kai tunelis grįš, patvirtinkite atsistatymą: masalas atsako per tunelį, resolveris grąžina atsakymus, o politika stovi ten, kur ją palikote. Tada atšaukite eksperimentus. Laikina ugniasienės taisyklė, derinimo maršrutas ar testinis profilis, palikti vietoje, supainios kitą paleidimą ir gali pergyventi programą.
Vienas praėjimas apima vieną kliento versiją, vieną profilį, vieną perėjimą ir vieną adresų šeimą. Užrašykite tuos keturis kartu su rezultatu:
- Kliento versija ir platforma bei ar nustatymas taikomas profiliui, ar visuotinai.
- Profilis, protokolas ir bet kokie skaidyto tunelio išskyrimai.
- Išbandytas perėjimas ir kaip jį sukėlėte.
- Adresų šeimos ir DNS su curl išėjimo kodais užblokuotai ir neužblokuotai būsenoms.
Jei kuri nors eilutė tuščia, testas nebaigtas. Tarptinklinis ryšys reiškia tinklo pakeitimo eilutės kartojimą. Neprižiūrimas perkrovimas reiškia patikrinimą, ar taisyklės grįžta, ir tai klausimas apie atkūrimo tvarką, o ne apie jungiklį. Kartokite seką po kliento atnaujinimo, nes jungikliai keičiasi retai, o elgesys už jų – dažnai. Masalą pasilikite: nieko nereikia keisti, o kita patikra užtrunka penkias minutes.