Hoe om 'n VPN-doodskakelaar te toets sonder jou regte rekeninge
Voer 'n doodskakelaartoets uit met 'n lokbladsy en 'n ekstra profiel: dek elke soort onderbreking, lees curl se uittitekodes en skei 'n werklike blok van 'n DNS-fout.
Jy het nie 'n regte rekening nodig om uit te vind of 'n doodskakelaar hou nie; dit is juis wat 'n toets in gevaar stel. Die kontrole skep 'n kort venster waarin verkeer dalk buite die tonnel kan verlaat of nie, so die loonvrag moet iets wees wat jy kan verloor. Ek doen dit nou met 'n lokbladsy en 'n ekstra blaaierprofiel, en dit gee 'n duideliker antwoord as die blaaier-plus-webpos-roetine wat ek voorheen gebruik het. Wat volg, volg dieselfde orde as wat die kliënt aanbied: die instelling, die bestemming, die oorgang, dan die bewyse.
Die toets beantwoord een eng vraag: kan hierdie toepassing tydens hierdie oorgang die netwerk buite die tonnel bereik? Dit sê niks oor of die res van die beleid sinvol is nie. Hou die omvang so klein, en die resultaat is die moeite werd om neer te skryf.
Vind die skakelaar en sy omvang in die kliënt
Maak die kliënt oop en vind die blokkeerinstelling voordat jy enige netwerktoestand verander. Verskaffers noem dit verskillend: doodskakelaar, toesluitmodus, netwerkslot, blokkeer verkeer buite die tonnel. Die etiket sê minder as die opsies daarbinne. Wat saak maak, is of die blok altyd geld, of net wanneer die toepassing besluit 'n tonnel het pas misluk, en of dit elke toepassing of 'n gekose lys dek.
Lys dan die oorgange wat jou kliënt werklik kan uitvoer. 'n Gebruiker-geïnisieerde ontkoppeling, die toepassing verlaat en kontak met die bediener verloor is drie verskillende kodepaaie in die meeste kliënte, en hulle deel nie een blokkeerbeleid nie. Sommige laat die blok los wanneer die toepassing afsluit. Ander laat filterreëls geïnstalleer totdat iets hulle verwyder. Lees die verskaffer se instellingsverwysing vir die bou wat jy hardloop in plaas daarvan om aan te neem, en skryf dan neer watter van die drie jy toets.
Teken ook die profiel aan: protokol, adresfamilies en of gesplete tonneling geaktiveer is. 'n Heeltoestel-eis is betekenisloos as die profiel doelbewus 'n paar toepassings uitsluit, en 'n uitsluiting wat jy opgestel het, is nie 'n lek nie. OpenVPN Connect se instellingsverwysing is die soort bladsy wat noem watter skakelaar watter gedrag verander, al verskil die etikette per kliënt.
Kies 'n lokbestemming wat ook sonder die tonnel werk
Die lok het twee eienskappe nodig, en as jy een daarvan oorslaan, kry jy 'n onleesbare resultaat. Dit moet direk bereikbaar wees wanneer die tonnel af is en die blok af is, anders kan “dit het opgehou antwoord” bloot beteken die gasheer is weg. En dit moet nie 'n aanmelding, 'n koekie of 'n betaling nodig hê nie, sodat 'n lek jou 'n logreël kos eerder as 'n sessie.
'n Statiese bladsy op 'n gasheer wat jy beheer, is die skoon keuse. 'n Ekstra virtuele masjien wat 'n gewone HTTP-bediener hardloop, is byna net so goed, en 'n publieke verbindingstoetsbladsy werk as jy aanvaar dat die beskikbaarheid daarvan buite jou beheer is. Let op die adres, die poort, die adresfamilie en of die versoek 'n naamopsoeking nodig het, want elkeen daarvan word 'n veranderlike wat jy later dalk moet isoleer.
Stel die basislyn vas voordat jy aan die skakelaar raak. Met die tonnel op moet die lok deur die tonnel antwoord, wat bewys die beleidroete werk. Met die tonnel af en die blok af moet dit direk antwoord, wat bewys die bestemming leef. Eers dan sê 'n mislukking in die geblokkeerde toestand vir jou iets.
Voer die oorgange in 'n vaste volgorde uit
Neem die oorgange een op 'n keer en gee elkeen 'n paar sekondes om te stabiliseer, want kliënte breek en herbou dikwels reëls in daardie gaping. Om elke keer dieselfde kort kontrole te hardloop, hou die waarnemings vergelykbaar:
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 |
Die ry oor die toepassing verlaat verdien sy eie lopie, selfs al sluit jy die kliënt nooit in normale gebruik nie. As die blok by afsluiting losgelaat word, gee 'n ineenstorting of 'n gedwonge opdatering jou dieselfde blootstelling, en dit is 'n feit oor die ontplooiing, nie oor jou geduld nie. Op Windows is die ekwivalente ondersoeke Resolve-DnsName decoy.example en curl.exe -s -o NUL -w "%{http_code}" http://decoy.example/.
Skei 'n blok van 'n stukkende oplosser
'n Bladsy wat nie laai nie, het verskeie oorsake, en net een daarvan is die skakelaar wat werk. As die naam nie oplos nie, het jy geleer dat DNS geblokkeer of stukkend is, nie dat die datapad geblokkeer is nie. Ondersoek ook 'n letterlike adres, sodat die antwoord hoegenaamd nie van oplossing afhang nie.
curl se uittitekodes hou daardie gevalle uitmekaar: 6 is 'n naamoplossingsfout, 7 beteken die verbinding is geweier, 28 is 'n time-out. 'n Geblokkeerde roete wys gewoonlik as 'n time-out of 'n weiering teen 'n letterlike adres. 'n Slegs-DNS-blok laat 6 agter en verberg alles anders. 'n Gekasde bladsy of 'n vasgevangde portaal mislei die oog, en daarom is die uittitekode, nie die skerm nie, die bewys.
Herhaal die ondersoek oor IPv6 met 'n letterlike adres. 'n Blok wat IPv4 dek en IPv6 ignoreer, is algemeen genoeg om sy eie reël in jou notas te verdien, en 'n kliënt wat IPv6 buite die tonnel deaktiveer, behoort skoon op beide families te misluk.
Teken die omvang aan wat die resultaat dek
Wanneer die tonnel terug is, bevestig herstel: die lok antwoord deur die tonnel, die oplosser gee antwoorde, en die beleid sit waar jy dit gelaat het. Maak dan die eksperimente ongedaan. 'n Tydelike firewall-reël, 'n ontfoutroete of 'n toetsprofiel wat bly staan, sal die volgende lopie verwar en kan die toepassing oorleef.
'n Enkele lopie dek een kliëntbou, een profiel, een oorgang en een adresfamilie. Skryf daardie vier neer saam met die uitkoms:
- Kliëntbou en platform, en of die instelling per profiel of globaal is.
- Profiel, protokol en enige gesplete-tonnel-uitsluitings.
- Oorgang getoets, en hoe jy dit geaktiveer het.
- Adresfamilies en DNS, met curl se uittitekodes vir die geblokkeerde en ongeblokkeerde toestande.
As enige reël leeg is, is die toets nie klaar nie. Swerf beteken om die netwerkverandering-ry te herhaal. 'n Onbewaakte herlaai beteken om te kontroleer dat die reëls terugkom, wat 'n vraag is oor herstelorde eerder as oor die skakelaar. Hardloop die reeks weer ná 'n kliëntopdatering, want die skakelaars verander selde terwyl die gedrag daaronder dit wel doen. Hou die lok byderhand: niks om te roteer nie, en die volgende kontrole neem vyf minute.