Du vel ein tenar som ser nærare ut, trykker kople til, og nettlesaren sluttar å lasta før den nye tunnelen er oppe. Ikonet skiftar til ein tilkoplingsstatus og blir der medan kvar fane renn ut. Den pausen er som regel kill switchen som verkar som tenkt: trafikken er blokkert medan klienten ikkje har nokon tunnel å senda han gjennom. Om pausen er akseptabel kjem an på kva klienten gjer i dei sekunda, og om blokkeringa blir lyft når han seier at ho blir det.

Kva klienten gjer mellom to tenarar

Eit byte av endepunkt er fleire steg, ikkje éin brytar. Klienten riv ned den gjeldande tunnelen, oppdaterer blokkeringsreglane sine, slår opp og når det nye endepunktet utanfor tunnelen, og installerer deretter dei nye rutene og lyfter blokkeringa. Gapet du kjenner ligg mellom første og siste steg.

Rekkjefølgja tel meir enn farten her. Viss blokkeringsreglane trer i kraft før unntaket for det nye endepunktet, kan ikkje klienten fullføra handtrykket og blir ståande på koplar til til det kjem ein tidsavbrot. Viss unntaket er ein kopi av adressa til den gamle tenaren, ser det nye handtrykket ut som ein kvar annan utgåande pakke og blir droppa. Begge tilfella ser like ut frå nettlesaren, og difor kan eit byte som kjem seg etter seks sekund og eit som aldri kjem seg dela same årsak.

Det nye endepunktet treng eit hol i blokkeringa

For å byggja tunnelen må klienten senda pakkar til adressa og porten til den nye tenaren på det fysiske grensesnittet, til dømes UDP 51820 for ein typisk WireGuard-profil eller 1194 og 443 for OpenVPN, kva din eigen profil no enn seier. Den trafikken er ikkje inne i tunnelen som er i ferd med å bli laga, så ei blokkering for heile eininga svelgjer han med mindre det finst ein tilsvarande løyveregel.

Profilar baserte på vertsnamn legg til eit andre krav: sjølve oppslaget. Viss klienten slår opp endepunktet før blokkeringa går opp, kan han bruka ei bufra adresse, men når profilen roterer adresser eller den bufra oppføringa blir utdatert, går handtrykket mot ei adresse som løyveregelen ikkje dekkjer. IPv6 gjer dette synleg, fordi eit endepunkt med dobbel stakk kan publisera både ein A- og ein AAAA-oppføring, og ein løyveregel som berre dekkjer v4-adressa lèt klienten prøva på nytt mot ei blokkert v6-adresse.

Namn på val og standardverdiar varierer etter klient og versjon, så les den dokumenterte lista for din i staden for å gjetta frå skjermbilete. Referansen for OpenVPN Connect-innstillingane på openvpn.net/connect-docs/app-settings-windows er eitt døme på korleis ein klient skildrar blokk- og delt-tunnel-vala sine.

Fail-closed er ein tilstandsmaskin, ikkje ein brytar

Dei fleste klientar uttrykkjer blokkeringa som brannmurpolitikk i tre tilstandar: tunnel oppe, med trafikk gjennom tunnelen og inga blokkering; tunnel nede, med blokkeringa aktiv; og overgang, med blokkeringa aktiv pluss mellombelse unntak for endepunktet. Det er i den tredje tilstanden feila bur, fordi han må endra seg to gonger i løpet av nokre sekund, og å ikkje koma seg ut av han ser nøyaktig ut som ei permanent blokkering.

Mekanismen varierer etter plattform, og feilen òg. Windows Filtering Platform-filter har vekter, så eit blokkeringsfilter som overgår løyvet ditt held fram med å droppa pakkar sjølv om løyvet finst, og filter som ein drepen klientprosess har late etter seg kan halda maskina offline etter at appen er borte. macOS-klientar skriv vanlegvis pf-reglar i eit anker, der rekkjefølgja til reglane og raske avgjerder avgjer kva regel som gjeld. Linux-klientar styrer vanlegvis ei nftables- eller iptables-kjede med drop-politikk og eksplisitte løyve for endepunktet, tunnelgrensesnittet og loopback. Androids alltid-på-VPN med valet om å blokkera tilkoplingar utan VPN er den strengaste i gruppa, fordi operativsystemet brukar blokkeringa på heile eininga i staden for per app.

WireGuard treng sitt eige notat, fordi AllowedIPs er ein ruteveljar, ikkje ein blokkerar. Han avgjer kva destinasjonar som går i tunnelen; han gjer ingenting for å hindra ein pakke utan tunnel i å gå ut over Wi-Fi. I eit oppsett med berre WireGuard og ingen brannmurregel er kill switchen i røynda fråværet av ei rute, og etter eit droppa handtrykk kan ein ekte pakke gå ut over det fysiske grensesnittet.

Mål gapet i staden for å sjå på ikonet

Fylg med på pakkar, ikkje statuslampa. På Linux startar du ein langsam ping mot ei offentleg adresse i eitt terminalvindauge og fangar transportporten til tunnelen på det fysiske grensesnittet i eit anna:

ping -i 0.2 -c 100 1.1.1.1 | tail -5

sudo tcpdump -ni eth0 'udp port 51820'

Byt tenar i klienten medan begge køyrer. Tre ting tel: kor lenge pinga stoggar, om fangsten viser at handtrykket når det nye endepunktet, og om trafikken kjem tilbake før eller etter at tilstanden til klienten skiftar til tilkopla. Viss ping-gapet sluttar først, er blokkeringa anten lyft for tidleg, eller tunnelen er oppe før indikatoren innrømmer det. Viss gapet sluttar seinare, er indikatoren optimistisk.

På Windows skriv netsh wfp show state eit augeblikksbilete der du kan søkja etter blokkeringsfilter som framleis finst medan klienten hevdar å vera fråkopla. På macOS listar sudo pfctl -sr dei innlasta reglane og rekkjefølgja deira. Kopla eitt av augeblikksbileta til eigen logg for klienten; tidslinja frå pinginga di fortel om blokkeringa slutta seint eller aldri.

Normalt utfall mot ei fastlåst blokkering

Litt avbrot er heile poenget med funksjonen, så gjer ei vurdering før du endrar noka innstilling:

What you seeUsually meansNext check
Two or three seconds of timeouts, then normal browsingExpected fail-closed gapNothing to fix
State says connected, traffic stays deadBlock filter or route left behindFirewall snapshot, client log
One app dead while others workTCP session bound to the old exit addressRestart the app
LAN devices unreachable after the switchLAN exception not reappliedAllow-LAN or split-tunnel setting
New server hangs, the old one reconnectsPermit covers only the old addressResolved address of the new host, including AAAA

Hamnar du i andre eller femte rad, ikkje slå av kill switchen for å testa, for det gjer ein rutefeil om til ei lekkasje. Start klienttenesta på nytt, eller start maskina på nytt der filter overlever at ein prosess blir drepen, og sjå om blokkeringa forsvinn. Gjer ho det, ligg feilen i oppryddinga under bytet og ikkje i blokkeringa sjølv.

Før ditt neste byte, stadfest fire ting: løyvet for endepunktet dekkjer kvar adressefamilie profilen din slår opp, klientloggen viser at overgangen blir fullført, pingtesten din måler gapet og ikkje ikonet, og å avslutta klienten gjev normal tilkopling tilbake. Ein kill switch som held under bytet og slepp etterpå, gjer jobben sin. Ein som slepp tidleg, eller aldri, er verdt å feilsøkja.

Relaterte artiklar