Predstavljajte si medijsko škatlo na domači povezavi, ki naj bi internet dosegla samo skozi tunel. Ko tunel pade, bi se morala aplikacija ustaviti, namesto da tiho nadaljuje prek fizičnega vmesnika. Doseči takšno vedenje je problem požarnega zidu in ne usmerjanja, razlika pa je pomembna, ker je mogoče pot zamenjati z ponovnim zagonom demonskega procesa, medtem ko filter ostane tam, kamor ste ga postavili. Sledi, kako se pot paketa v resnici odloča, in nato, kako omejiti izjeme, ki tunelu omogočajo ponovno povezavo.

Lokalni izhod je drug kavelj kot posredovanje

Paket, ki zapusti aplikacijo na stroju, gre skozi izhodni kavelj; paket, ki ga stroj usmeri za drugega gostitelja, gre skozi posredovanje. Pravilnik, ki omenja samo forward, omejuje drugo in pušča prvo popolnoma odprto, zato toliko zaklepov izhoda izgleda pravilnih in ne naredi ničesar. Ujemanje vmesnika spada v isto pravilo: oifname "tun0" accept spusti promet, ki je bil že usmerjen skozi tunel. Usmerjanje in filtriranje tudi ostajata ločeni odločitvi, zato lahko pot do ponudnika obstaja, medtem ko filter paket zavrne. Na to ločevanje se zanašate.

Prehod, ki posreduje za druge naprave, potrebuje oba kavlja. Zaklep samo izhoda ščiti sam stroj in vsakemu odjemalcu spodaj pušča svobodo, da uide.

Seznam izjem pišite od končne točke navzven

Začnite pri končni točki tunela: en naslov cilja ali majhen odobren nabor, transportni protokol in ciljna vrata, na primer udp dport 1194 ip daddr 203.0.113.7 accept. Če odjemalec razrešuje ime gostitelja, potrebuje začetna izmenjava DNS svoje pravilo, omejeno na razreševalnik in na vrata 53, ne pa splošnega dovoljenja za naslov tega razreševalnika. Vsaka izjema bi morala navesti razlog, zakaj obstaja. Dovoljenje za ves promet UDP na vrata VPN pokriva veliko več kot tisto edino overjeno storitev, ki ste jo imeli v mislih.

Začetno razreševanje je kraj, kjer zaklepi običajno gnijejo. Nabor naslovov, ki se osvežuje s časovnikom, potrebuje določeno vedenje, ko osvežitev spodleti, in to vedenje ne more biti odpiranje povezave, dokler ne uspe. Osvežujte skozi tunel, dokler tunel stoji, sicer se vrnite na zadnjo znano zdravo končno točko.

Lokalna administracija potrebuje enako obravnavo. Upravljalno podomrežje ni vredno zaupanja samo zato, ker so njegovi naslovi zasebni, in pravilo, ki mu zaupa, vabi drugo pot okoli zaklepa.

Ujemanje vmesnika ni dokaz zdravega tunela

Pravila, ki sprejmejo vse, kar izstopi iz tun0, predpostavljajo, da je paket na tem vmesniku prišel iz tunela. Imena vmesnikov se znova ustvarijo, ime pa ni kriptografska identiteta. Nasprotna stran je lahko tudi odšla, medtem ko vmesnik ostaja pokonci, kar pravilo spremeni v zelo prepričljivo nedelovanje.

Sledenje povezavam doda sorodno past. Široko pravilo za vzpostavljene povezave ponovi dovoljenje, ki ga je tok dobil prej, zato seja, začeta pred padcem tunela, deluje naprej. Omejite sprejemanje po stanju na vmesnike in naslove, ki jih resnično mislite, sicer ste zgradili zaklep, ki se odpre sam. Tudi vhodna in izhodna pravila odgovarjata na različna vprašanja, in utrjevanje enega ob ignoriranju drugega pusti stroj dosegljiv v smeri, o kateri niste razmišljali.

Kaj preživi sesutje demonskega procesa

Filter, ki ga namesti skript, ki se izvede po dvigu tunela, izgine skupaj s tunelom, ravno v trenutku, ko je bil potreben. Naložite zaklep ob zagonu in pustite demonskemu procesu, da upravlja samo svoje izjeme.

Brisanje privzete poti tudi ni nadomestilo. Pot je stanje, ki ga demonski proces poseduje in prepisuje, in njena odstranitev lahko vzame pot, potrebno za ponovno povezavo. IPv6 potrebuje svoj načrt, ker sta odkrivanje sosedov in najave usmerjevalnika povezavni storitvi, ki morata delovati naprej, medtem ko je običajen promet blokiran. DHCP spada v isto kategorijo. Te stvari zapišite kot izjeme z namenom, namesto da jih pozneje odkrijete kot izpade.

Pot obnovitve pred uvedbo

Preizkusite zaklep tako, kot bo spodletel: zagon brez tunela, ubijanje demonskega procesa, sprememba končne točke in ponovna povezava. Vsak primer bi moral ustaviti aplikacije in pustiti obnovitveni kanal delujoč. Naredite to s konzole, ker je oddaljena lupina seja, ki jo bo vaše lastno pravilo najverjetneje zaklenilo.

Nato preverite, kam še seže običajna aplikacija, z neškodljivim ciljem in zahtevo, ki jo lahko preverite. Rezultat, ki ga želite, je zavrnitev na povezavi in uspeh skozi tunel, ne dvoumen časovni limit, ki bi lahko pomenil oboje. Držite nabor pravil pod istim lastnikom kot preostali požarni zid, namesto da zamenjate celotno tabelo iz lupinskega skripta. Pravilnik, v katerem lahko vsako dovoljenje upraviči samo sebe, je vreden več kot dolg nabor pravil, ki ga nihče ne zna razložiti.

Sorodni članki