Du klientai viename serveryje keičiasi failais, perdavimas pavyksta, o kiekviena persiuntimo taisyklė, nukreipta į tunelį, praneša nulį paketų. Taisyklės nesugadintos ir grandinė ne netinkamoje vietoje. Kai persiuntimas tarp lygiaverčių mazgų įjungtas, paketas pristatomas serverio proceso viduje ir prieglobos dėklas niekada netampa maršrutizatoriumi, todėl branduolio ugniasienei nėra ko skaičiuoti. Šio atskyrimo supratimas nulemia, ar pasiliksite trumpą kelią, ar perstatysite kelią per branduolį.

Sekite vieną paketą per serverį

Maršrutizuotame tunelyje demonas perduoda kiekvieno kliento iššifruotą paketą tunelio įrenginiui. Iš ten priegloba jį maršrutizuoja, suveikia persiuntimo kabliukas, o taisyklė, atitinkanti tunelio įrenginį, gali srautą skaičiuoti arba atmesti. Tai kelias, kurį daro prielaidą dauguma ugniasienės pavyzdžių.

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

Trumpas kelias pašalina prieglobą iš vidurio. Vienos sesijos iššifruotas paketas perduodamas kitai sesijai demono viduje, o vidinis paketas niekada neišleidžiamas į tunelio įrenginį ir priegloba jo nemaršrutizuoja. Inkapsuliuotas srautas vis tiek kerta fizinę sąsają, todėl išorinis fiksavimas atrodo užimtas, o vidinės taisyklės tyli. Tunelio įrenginyje atliktas fiksavimas nerodo visiškai nieko, o tai nustebina kiekvieną, kuris tikisi ten stebėti perdavimą. Ši asimetrija yra greičiausias būdas atpažinti trumpą kelią išorėje demono.

Skaitiklio bandymas, kuris nustato, kuris kelias buvo

Pritvirtinkite skaitiklį prie taisyklės, kuri turėtų galioti, paleiskite perdavimą tarp dviejų klientų, kuriuos ta taisyklė turėtų blokuoti, ir tada perskaitykite skaitiklį.

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

Jei perdavimas pavyksta, o skaitiklis lieka nulyje, branduolys niekada neapdorojo tų paketų, ir joks taisyklių redagavimas to nepakeis. Pakartokite tą patį bandymą su paslauga pačiame serveryje, nes tas srautas tikrai kerta prieglobos dėklą ir jo skaitiklis juda. Būtent dviejų rezultatų palyginimas duoda atsakymą.

Dvi detalės apsaugo nuo klaidingo nuskaitymo. Sąsajos pavadinimas, įrašytas grandinės etiketėje, pats savaime nieko nefiltruoja, nes atitikimas vyksta taisyklių viduje esančiuose sąsajos laukuose. O sujungtas 2-ojo sluoksnio sprendimas elgiasi dar kitaip: ten klientai dalijasi viena transliacijos sritimi, todėl lygiaverčių mazgų aptikimas yra laukiamas, o ne maršrutizavimo defektas.

Komutatorius nėra prieigos sąrašas

Tai dalis, kuri kainuoja popietę. Persiuntimas tarp lygiaverčių mazgų yra vienas įjungimo arba išjungimo nustatymas, ir kol jis įjungtas, demonas yra vienintelis persiuntimo taškas. Prieglobos ugniasienė negali išreikšti, kas ką gali pasiekti, o failai pagal klientą nepaverčia komutatoriaus politikos matrica.

Jei jums reikia taisyklių kiekvienam mazgui, pasirinkimas yra tarp atsisakymo trumpo kelio ir atsisakymo prieglobos ugniasienės kaip valdymo priemonės. Jį išjungus atkuriamas branduolio persiuntimas, o tam reikia IP persiuntimo serveryje ir aiškių taisyklių norimiems srautams. Palikus įjungtą, politika gyvena demono konfigūracijoje, o tai praktiškai reiškia visus mazgus arba nė vieno.

Atskiri serverio procesai su savo adresų telkiniais ir prievadais yra įmanomas vidurys. Kiekvienas procesas neša tiksliai vieną prieigos sprendimą, todėl dvi grupės gali turėti skirtingas taisykles be politikos matricos. Priegloba gali maršrutizuoti tarp telkinių, kai tai numatyta, ir tada ugniasienė mato tuos srautus, nes jie kerta prieglobą. Kaina yra papildomi prievadai, papildomi sertifikatai ir profilis kiekvienai grupei.

Persiuntimo taško pasirinkimas

Rinkitės branduolio persiuntimą, kai ugniasienė yra politikos variklis, kai jums reikia registravimo pagal srautą arba kai apskaita svarbi. Kaina yra pralaidumas per prieglobos dėklą ir daugiau taisyklių prižiūrėti. Nauda ta, kad kiekvienas esamas įrankis, nuo skaitiklių iki srautų eksportuotojų, vėl aprašo srautą. Mažame serveryje ši kaina nematoma; užimtame rele – ne.

Rinkitės persiuntimą proceso viduje, kai srautas tarp lygiaverčių mazgų yra arba visiškai leidžiamas, arba visiškai draudžiamas, ir serveris tam pritaikytas. Kaina ta, kad skaitikliai, eilių disciplinos ir ryšių sekimas nebeaprašo vidinių srautų; tai priimtina tik jei vėliau niekas jais nesiremia.

Kad ir ką pasirinktumėte, užsirašykite tai šalia ugniasienės taisyklių. Taisyklių rinkinys, kuris atrodo leidžiantis srautą tarp mazgų, nors demonas vis tiek nusprendžia pats, klaidina kitą žmogų, kuris taisys nepavykusį perdavimą. Kas skaito tik taisykles, manys, kad branduolys yra vartai.

Ką patikrinti prieš keičiant taisykles

Skaitykite konfigūraciją, kurią serveris iš tikrųjų įkėlė, o ne failą, kurį prisimenate redagavę, ir patvirtinkite, ar yra mazgų parinktis. Jei ją pakeitėte, įsitikinkite, kad paslauga įkelta iš naujo, o ne tik perrašytas failas diske.

Tada pakartokite bandymą su srautu iš kliento į serverį, kad įrodytumėte, jog taisyklė apskritai atitinka, ir patikrinkite stumiamus maršrutus, nes trūkstamas maršrutas iš kliento pusės atrodo lygiai kaip ugniasienės blokada. Taisyklių tvarką keiskite tik tada, kai žinote, kuris persiuntimo taškas turi sprendimą.

Susiję straipsniai