Dvaja klienti na jednom serveri si vymieňajú súbory, prenos sa podarí a každé pravidlo preposielania nasmerované na tunel hlási nula paketov. Pravidlá nie sú pokazené a reťazec nie je na zlom mieste. Keď je preposielanie medzi partnermi zapnuté, paket sa doručí vnútri procesu servera a zásobník hostiteľa sa nikdy nestane smerovačom, takže jadrový firewall nemá čo počítať. Pochopenie tohto rozdelenia rozhoduje o tom, či si skratku ponecháte, alebo cestu znova postavíte cez jadro.

Sledujte jeden paket cez server

V smerovanom tuneli odovzdá démon dešifrovaný paket každého klienta tunelovému zariadeniu. Odtiaľ ho hostiteľ smeruje, spustí sa háčik preposielania a pravidlo, ktoré zodpovedá tunelovému zariadeniu, môže prevádzku počítať alebo zahadzovať. To je cesta, ktorú predpokladá väčšina príkladov firewallu.

Forwarding pathWho decidesWhat the host firewall sees
Kernel routing between clientsHost routing table and forward rulesEvery inner packet, with interface names
Peer forwarding inside the server processThe VPN daemon's own peer tableOnly the outer encrypted transport

Skratka odstraňuje hostiteľa zo stredu. Dešifrovaný paket jednej relácie sa odovzdá inej relácii vnútri démona a vnútorný paket sa nikdy nevysiela na tunelové zariadenie ani ho hostiteľ nesmeruje. Zapuzdrená prevádzka stále prechádza fyzickým rozhraním, takže vonkajší odchyt vyzerá zaneprázdnene, zatiaľ čo vnútorné pravidlá mlčia. Odchyt urobený na tunelovom zariadení neukazuje vôbec nič, čo prekvapí každého, kto tam očakáva sledovať prenos. Táto asymetria je najrýchlejší spôsob, ako skratku rozpoznať zvonku démona.

Test s počítadlom, ktorý rozhodne, ktorá cesta sa použila

Pripojte počítadlo k pravidlu, ktoré by sa malo uplatniť, spustite prenos medzi dvoma klientmi, ktoré by toto pravidlo malo zablokovať, a potom počítadlo prečítajte.

sudo nft list ruleset
sudo nft add rule inet filter forward iifname "tun0" oifname "tun0" counter accept
sudo nft list chain inet filter forward

Ak sa prenos podarí a počítadlo zostane na nule, jadro tie pakety nikdy nespracovalo a žiadna úprava pravidiel to nezmení. Zopakujte ten istý test proti službe na samotnom serveri, pretože ten tok zásobníkom hostiteľa skutočne prechádza a jeho počítadlo sa hýbe. Práve porovnanie oboch výsledkov dáva odpoveď.

Dva detaily bránia chybnému čítaniu. Názov rozhrania zapísaný v štítku reťazca sám o sebe nič nefiltruje, pretože zhoda prebieha na poliach rozhrania vnútri pravidiel. A premosťovaný návrh vrstvy 2 sa správa zase inak: klienti tam zdieľajú jednu broadcast doménu, takže objavovanie partnerov je očakávané, a nie závada smerovania.

Prepínač nie je zoznam prístupu

Toto je tá časť, ktorá stojí popoludnie. Preposielanie medzi partnermi je jediné nastavenie zapnuté alebo vypnuté a kým je zapnuté, démon je jediným bodom preposielania. Firewall hostiteľa nedokáže vyjadriť, kto sa ku komu dostane, a súbory po klientoch nepremenia prepínač na maticu zásad.

Ak potrebujete pravidlá po partneroch, voľba je medzi vzdaním sa skratky a vzdaním sa firewallu hostiteľa ako nástroja riadenia. Vypnutie obnoví preposielanie cez jadro, čo vyžaduje zapnuté IP preposielanie na serveri a výslovné pravidlá pre toky, ktoré chcete. Ponechanie zapnuté znamená, že zásada žije v konfigurácii démona, čo je v praxi buď všetci partneri, alebo žiadny.

Oddelené serverové procesy s vlastnými fondmi adries a portami sú schodná stredná cesta. Každý proces nesie práve jedno rozhodnutie o prístupe, takže dve skupiny môžu mať rôzne pravidlá bez matice zásad. Hostiteľ môže medzi fondmi smerovať, keď je to zamýšľané, a firewall potom tieto toky vidí, pretože prechádzajú hostiteľom. Cenou sú porty navyše, certifikáty navyše a profil pre každú skupinu.

Voľba bodu preposielania

Zvoľte preposielanie cez jadro, keď je firewall motorom zásad, keď potrebujete protokolovanie po tokoch alebo keď záleží na účtovaní. Cenou je priepustnosť cez zásobník hostiteľa a viac pravidiel na údržbu. Prínosom je, že každý existujúci nástroj, od počítadiel po exportéry tokov, znova opisuje prevádzku. Na malom serveri je tá cena neviditeľná; na vyťaženom relé nie.

Zvoľte preposielanie vnútri procesu, keď je prevádzka medzi partnermi buď celá povolená, alebo celá zakázaná a server je na to dimenzovaný. Cenou je, že počítadlá, disciplíny frontu a sledovanie spojení už vnútorné toky neopisujú; to je prijateľné len vtedy, keď sa na ne neskôr nikto nespolieha.

Čokoľvek si vyberiete, zapíšte to vedľa pravidiel firewallu. Sada pravidiel, ktorá vyzerá, že povoľuje prevádzku medzi partnermi, zatiaľ čo démon aj tak rozhoduje, zavádza ďalšieho človeka, ktorý bude ladiť neúspešný prenos. Kto číta len pravidlá, bude predpokladať, že bránou je jadro.

Čo skontrolovať pred zmenou pravidiel

Prečítajte konfiguráciu, ktorú server skutočne načítal, nie súbor, ktorý si pamätáte ako upravený, a overte, či je voľba pre partnerov prítomná. Ak ste ju zmenili, uistite sa, že sa služba znova načítala a nie len prepísala súbor na disku.

Potom zopakujte test s tokom od klienta k serveru, aby ste dokázali, že pravidlo vôbec zodpovedá, a skontrolujte odoslané trasy, pretože chýbajúca trasa vyzerá zo strany klienta presne ako blokovanie firewallom. Poradie pravidiel meňte až vtedy, keď viete, ktorý bod preposielania rozhodnutie vlastní.

Súvisiace články