Downskript of firewallregel: hokker stopet de lek?
Ynterfaces delsette by ôfbrekken is grof en rint faak sûnder foarrjochten. Fergelykje it mei in firewallregel dy’t de fal oerlibbet en it gat tichtet.
Twa ûntwerpen belove itselde: as de tunnel falt, giet der neat iepenbier nei bûten. De iene rint in skript by it ôfbrekken en snijt ynterfaces troch. De oare lit in firewallregel fan krêft en freget de VPN-klant om neat. Se ferskille yn wa’t it foarrjocht hat om te hanneljen, wat der yn it gat bart en hoe’t de masine dêrnei wer online komt. Se op dy trije punten fergelykje is nuttiger as diskusje oer hokker strangst is.
Itselde wurk troch twa meganismen
De klant kin haken rinne litte as de tunnel omheech komt en as er ôfbrutsen wurdt, mits it profyl skriptútfiering tasteat. Dy haak rint binnen de libbenssyklus fan de klant, op it stuit dat de ferbining slút. In firewallregel, oarsom, is eigendom fan it systeem en set him der net oer, oft de klant rint, ynstoart is of deasketten is.
| Property | Teardown script | Firewall unit |
|---|---|---|
| Runs when the client is killed | No | Yes |
| Needs privilege at teardown time | Usually yes | Configured once, at boot |
| Acts on the whole machine | Often, including recovery paths | Only on the flows it matches |
Dy tabel is it hiele argumint. In skript dat allinnich by in skjinne ôfsluting rint, dekt it gefal dêr’t jo jo it minst soargen oer makken; it gefal dat telt is de ynstoarting of it netwurk dat ferdwynt, en gjin fan beide jout in skjinne ôfbrek.
Wat de ôfbrekhaak wol en net kin
It dokumintearre patroan rint de netwurkynterfaces ôf en set alles del behalve loopback. Mei it fysike apparaat del kin neat bûten de tunnel ûntkomme, en dat is krekt de bedoeling.
#!/bin/sh
for dev in /sys/class/net/*; do
name=$(basename "$dev")
[ "$name" = lo ] || ip link set dev "$name" down
done
It set ek it lokale netwurk del, elke tsjinst dy’t de masine hostet, en it paad dat jo brûke soene om it probleem te reparearjen. Op in laptop moat it draadloze apparaat dernei soms mei de hân omsetten wurde, sadat in koarte steuring in reparaasjsesje wurdt. Slimmer, de haak mei miskien neat fan dat alles dwaan: as de klant foarrjochten ôfstiet, rint it ôfbrekskript ûnder it net-begeunstigde akkount, en elke ynterfacewiziging mislearret mei in tastimmingsflater skreaun op it stuit dat nimmen it logboek lêst.
Kontrolearje hoe’t de klant start wurdt foardat jo de haak fertrouwe. In skript dat wurket as jo it mei de hân as root rinne litte, bewiist neat oer de tsjinst dy’t by it opstarten begjint.
Wat de firewallregel oars docht
In regel dy’t allinnich tunnelferkear tasteat, bliuwt wurkjen as it klantproses fuort is, want de kernel is net fan dat proses ôfhinklik. De regel is ek smeller: hy blokkearret krekt de streamen dêr’t er by past en lit loopback, it lokale subnet en it herstelpaad gewurde, en dêrom lit er de masine net yn ‘e steek.
De priis is dat de regel skreaun en ûnderhâlden wurde moat troch wa’t ek de firewall fan de host hat, en hy moat it tunnelapparaat neame dat de klant echt makket. Dat betsjut dat de regel en it profyl tegearre ûnderhâlden wurde moatte; in omneamd ynterface lit in firewall efter dy’t alles blokkearret en neat ferklearret.
Gjin fan beide meganismen makket de oare oerstallich. In firewallregel dy’t nea wer laden wurdt nei in bewurking is like fiktyf as in skript dat nea rint.
persist-tun beslút oft der in gat is
As it tunnelapparaat in ôfbrekken oerlibbet, oerlibje de rûtes dy’t derhinne wize ek. Ferkeer wurdt dan weilitten yn stee fan trochstjoerd, sadat de standertrûte net werom falt nei de fysike gateway. Dat is it hâlden en dragen dat in lek ûnwierskynlik makket noch foardat in firewallregel yn it spul is.
Sûnder dy ynstelling wurdt it apparaat fuorthelle en de rûtes mei, en de standertrûte kin wer nei de fysike gateway wize. Oft er dat docht hinget fan it platfoarm en de klant ôf, en dêrom krekt moat de tastân besjoen wurde yn stee fan oannommen. Behanje de ynstelling as part fan de kill switch, net as in prestaasje-opsje.
Hâld it werferbinenpaad libben, test dan fjouwer tastannen
In strang blokkade kin de klant ek tsjinhâlde om wer te ferbinen, want de klant hat noch altyd in rûte nei de server fia de fysike gateway nedich wylst al it oare wegere wurdt. Ynstallearje in hostrûte foar dat iene adres foardat de tunnel omheech komt, en los de namme earst op, want DNS kin blokkearre wêze tsjin de tiid dat jo it nedich hawwe.
ip route add 198.51.100.20/32 via 192.168.0.1 dev wlan0
Ferifiearje dan de tastannen yn stee fan it label. Oefenje fjouwer mominten mei opset: in kâlde start sûnder tunnel, in sûne sesje, in ôfbrek dy’t nimmen frege hat, en de sesje nei’t er werombettere. Lês op elk momint de standertrûte en doch ien fersyk wêrfan it útgeande adres sichtber is. In applikaasje dy’t it opjout wylst de tunnel del is, seit neat oer in mailklant of in bywurker, dus werhelje de lêste kontrôle mei ien eftergrûnapplikaasje. Skriuw de regel, de ynterfacenammen en de herstelstappen op, want in kill switch dy’t nimmen ferifiearje kin is in geroft.