Allatõmbamisskript või tulemüürireegel: kumb lekke peatab?
Liideste mahavõtmine lahtiühendamisel on jäme ja jookseb sageli ilma õigusteta. Võrrelge seda tulemüürireegliga, mis katkestuse üle elab ja vahe sulgeb.
Kaks lahendust lubavad sama asja: kui tunnel langeb, ei välju midagi selges tekstis. Üks käivitab allatõmbamisel skripti ja lõikab liidesed läbi. Teine jätab tulemüürireegli jõusse ega küsi VPN-kliendilt midagi. Need erinevad selle poolest, kellel on õigus tegutseda, mis vahe ajal juhtub ja kuidas masin pärast uuesti võrku pääseb. Nende võrdlemine neil kolmel punktil on kasulikum kui vaidlemine, kumb on rangem.
Sama töö kahe mehhanismi kaudu
Klient saab käivitada konkse nii tunneli tõusmisel kui ka mahavõtmisel, kui profiil lubab skriptide käivitamist. See konks jookseb kliendi elutsükli sees, hetkel, mil ühendus sulgub. Tulemüürireegel seevastu kuulub süsteemile ja teda ei huvita, kas klient töötab, on kokku jooksnud või tapetud.
| 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 |
See tabel on kogu argument. Skript, mis jookseb ainult korralikul sulgemisel, katab juhtumi, mille pärast te kõige vähem muretsesite; oluline juhtum on kokkujooks või võrgu kadumine ja kumbki neist ei anna puhast mahavõtmist.
Mida allatõmbamise konks suudab ja mida mitte
Dokumenteeritud muster käib võrguliidestest läbi ja võtab maha kõik peale loopbacki. Kui füüsiline seade on maas, ei pääse miski tunnelist välja, mis on täpselt kavatsus.
#!/bin/sh
for dev in /sys/class/net/*; do
name=$(basename "$dev")
[ "$name" = lo ] || ip link set dev "$name" down
done
See võtab maha ka kohaliku võrgu, iga teenuse, mida masin majutab, ja tee, mida te probleemi parandamiseks kasutaksite. Sülearvutil vajab traadita seade mõnikord hiljem käsitsi ümberlülitamist, nii et lühike katkestus muutub parandusseansiks. Hullemini, konksul ei pruugi olla lubatud midagi sellist teha: kui klient loobub õigustest, jookseb allatõmbamisskript õigusteta kontona ja iga liidese muudatus ebaõnnestub õigusveaga, mis kirjutatakse hetkel, mil keegi logi ei loe.
Kontrollige, kuidas klient käivitatakse, enne kui konksu usaldate. Skript, mis töötab käsitsi rootina käivitades, ei tõesta midagi teenuse kohta, mis käivitub alglaadimisel.
Mida tulemüürireegel teisiti teeb
Reegel, mis lubab ainult tunneli liiklust, töötab edasi ka siis, kui kliendi protsess on kadunud, sest kernel ei sõltu sellest protsessist. Reegel on ka kitsam: see blokeerib täpselt need vood, millega sobib, ja jätab loopbacki, kohaliku alamvõrgu ja taastetee rahule, mistõttu ei jäta see masinat isolatsiooni.
Hind on see, et reegli peab kirjutama ja hoidma see, kellele hosti tulemüür kuulub, ja see peab nimetama tunneliseadme, mille klient tegelikult loob. See tähendab, et reeglit ja profiili tuleb koos hooldada; ümbernimetatud liides jätab tulemüüri, mis blokeerib kõik ega selgita midagi.
Kumbki mehhanism ei muuda teist üleliigseks. Tulemüürireegel, mida pärast muudatust kunagi uuesti ei laadita, on sama fiktiivne kui skript, mis kunagi ei jookse.
persist-tun otsustab, kas vahe on olemas
Kui tunneliseade katkestuse üle elab, elavad üle ka sinna osutavad marsruudid. Liiklus visatakse siis ära, mitte ei suunata ümber, nii et vaikemarsruut ei lange tagasi füüsilisele lüüsile. Just see käitumine teeb lekke ebatõenäoliseks juba enne, kui ükski tulemüürireegel mängu tuleb.
Ilma selle seadistuseta eemaldatakse seade ja marsruudid koos sellega ning vaikemarsruut võib uuesti füüsilisele lüüsile osutada. Kas see juhtub, sõltub platvormist ja kliendist, ja just seepärast tuleb olekut jälgida, mitte eeldada. Käsitlege seadistust kill switchi osana, mitte jõudlusvalikuna.
Hoidke taasühenduse tee elus, seejärel testige nelja olekut
Range blokeering võib takistada ka kliendi taasühendumist, sest klient vajab endiselt marsruuti serverini füüsilise lüüsi kaudu, samal ajal kui kõik muu on keelatud. Paigaldage hosti marsruut selle ühe aadressi jaoks enne, kui tunnel tõuseb, ja lahendage esmalt nimi, sest DNS võib selleks ajaks, kui seda vajate, olla blokeeritud.
ip route add 198.51.100.20/32 via 192.168.0.1 dev wlan0
Seejärel kontrollige olekuid, mitte silti. Harjutage meelega nelja hetke: külmstart ilma tunnelita, terve seanss, katkestus, mida keegi ei palunud, ja seanss pärast taastumist. Igas hetkes lugege vaikemarsruuti ja tehke üks päring, mille väljumisaadress on nähtav. Rakendus, mis alla annab, kui tunnel on maas, ei ütle midagi meilikliendi ega uuendaja kohta, seega korrake viimast kontrolli ühe taustarakendusega. Kirjutage üles reegel, liideste nimed ja taastamise sammud, sest kill switch, mida keegi kontrollida ei saa, on kuulujutt.