To design lovar det same: når tunnelen fell, går ingenting ut i klartekst. Den eine køyrer eit skript ved nedriving og kuttar grensesnitt. Den andre lèt ein brannmurregel stå ved makt og ber ikkje VPN-klienten om noko. Dei skil seg i kven som har retten til å handle, i kva som skjer i gapet, og i korleis maskinen kjem tilbake på nettet etterpå. Å samanlikne dei på desse tre punkta er nyttigare enn å krangle om kven som er strengast.

Same arbeid gjennom to mekanismar

Klienten kan køyre krokar når tunnelen kjem opp og når han blir riven ned, føresett at profilen tillèt skriptkøyring. Den kroken køyrer inne i livssyklusen til klienten, i det augeblikket sambandet blir lukka. Ein brannmurregel derimot er eigd av systemet og bryr seg ikkje om klienten køyrer, har krasja eller vart drepen.

PropertyTeardown scriptFirewall unit
Runs when the client is killedNoYes
Needs privilege at teardown timeUsually yesConfigured once, at boot
Acts on the whole machineOften, including recovery pathsOnly on the flows it matches

Den tabellen er heile argumentet. Eit skript som berre køyrer ved ei pen avslutting, dekkjer tilfellet du var minst uroa for; tilfellet som tel er krasjet eller nettet som forsvinn, og ingen av dei gir ei rein nedriving.

Kva nedrivingskroken kan og ikkje kan

Det dokumenterte mønsteret går gjennom nettverksgrensesnitta og tek ned alt utanom loopback. Med den fysiske eininga nede kan ingenting sleppe ut utanfor tunnelen, og det er nettopp meininga.

#!/bin/sh
for dev in /sys/class/net/*; do
  name=$(basename "$dev")
  [ "$name" = lo ] || ip link set dev "$name" down
done

Det tek òg ned det lokale nettet, kvar teneste maskinen er vert for, og vegen du ville brukt til å reparere problemet. På ein berbar PC må den trådlause eininga stundom slåast av og på manuelt etterpå, så eit kort avbrot blir ei reparasjonsøkt. Verre, kroken har kanskje ikkje lov til å gjere noko av dette: når klienten gir frå seg rettar, køyrer nedskriptet som den uprivilegerte kontoen, og kvar grensesnittendring feilar med ein løyvefeil som blir skriven i det augeblikket ingen les loggen.

Sjekk korleis klienten blir starta før du stolar på kroken. Eit skript som verkar når du køyrer det manuelt som root, provar ingenting om tenesta som startar ved oppstart.

Kva brannmurregelen gjer annleis

Ein regel som berre tillèt tunneltrafikk, held fram med å verke når klientprosessen er borte, fordi kjernen ikkje er avhengig av den prosessen. Regelen er òg smalare: han blokkerer nøyaktig dei straumane han passar på og lèt loopback, det lokale subnettet og attopprettingsvegen vere i fred, og difor set han ikkje maskinen fast.

Prisen er at regelen må skrivast og vedlikehaldast av den som eig brannmuren til verten, og han må namngje tunneininga klienten faktisk opprettar. Det tyder at regelen og profilen må vedlikehaldast saman; eit omdøypt grensesnitt lèt att ein brannmur som blokkerer alt og ikkje forklarer noko.

Ingen av mekanismane gjer den andre overflødig. Ein brannmurregel som aldri blir lasta på nytt etter ei endring, er like fiktiv som eit skript som aldri køyrer.

persist-tun avgjer om det finst eit gap

Når tunneininga overlever ei fråkopling, overlever òg rutene som peikar inn i henne. Trafikken blir då sleppt i staden for å bli omdirigert, så standardruta fell ikkje tilbake til den fysiske gatewayen. Det er denne åtferda som gjer ein lekkasje lite sannsynleg allereie før nokon brannmurregel er med i spelet.

Utan den innstillinga blir eininga fjerna og rutene med henne, og standardruta kan peike tilbake til den fysiske gatewayen. Om ho gjer det, kjem an på plattforma og klienten, og nettopp difor må tilstanden observerast i staden for å bli antatt. Handsame innstillinga som ein del av kill switch, ikkje som eit ytingsval.

Hald attoppkoplingsvegen levande, og test så fire tilstandar

Ein streng blokkering kan òg hindre klienten i å kople til på nytt, fordi klienten framleis treng ei rute til tenaren gjennom den fysiske gatewayen medan alt anna blir nekta. Installer ei vertsrute for den eine adressa før tunnelen kjem opp, og løys opp namnet fyrst, fordi DNS kan vere blokkert på det tidspunktet du treng det.

ip route add 198.51.100.20/32 via 192.168.0.1 dev wlan0

Stadfest så tilstandane i staden for etiketten. Gå gjennom fire augeblikk med vilje: ein kald start utan tunnel, ei sunn økt, eit brot ingen bad om, og økta etter at ho har kome seg. Les standardruta i kvart augeblikk og gjer éin førespurnad der utgangsadressa er synleg. Eit program som gir opp medan tunnelen er nede, seier ingenting om ein e-postklient eller ein oppdaterar, så gjer den siste kontrollen på nytt med eitt bakgrunnsprogram. Skriv ned regelen, grensesnittnamna og attopprettingstrinna, for ein kill switch ingen kan stadfeste er eit rykte.

Relaterte artiklar