nftables paketni filter 0.9.9 izdanje

Objavljeno je izdanje paketnog filtera nftables 0.9.9 koje objedinjuje interfejse za filtriranje paketa za IPv4, IPv6, ARP i mrežne mostove (s ciljem zamjene iptables, ip6table, arptables i ebtables). Istovremeno, objavljeno je izdanje prateće biblioteke libnftnl 1.2.0, pružajući API niskog nivoa za interakciju sa podsistemom nf_tables. Promjene potrebne da bi nftables 0.9.9 izdanje funkcioniralo uključene su u Linux kernel 5.13-rc1.

Paket nftables uključuje komponente filtera paketa koje se pokreću u korisničkom prostoru, dok nivo kernela obezbjeđuje nf_tables podsistem, koji je dio Linux kernela od izdanja 3.13. Na nivou kernela, obezbeđen je samo generički interfejs nezavisan od protokola koji obezbeđuje osnovne funkcije za izdvajanje podataka iz paketa, izvođenje operacija nad podacima i kontrolu toka.

Sama pravila filtriranja i rukovaoci specifični za protokol se kompajliraju u bajt-kod korisničkog prostora, nakon čega se ovaj bajt kod učitava u kernel pomoću Netlink interfejsa i izvršava u kernelu u posebnoj virtuelnoj mašini koja liči na BPF (Berkeley paketni filteri). Ovaj pristup omogućava značajno smanjenje veličine koda za filtriranje koji radi na nivou kernela i premještanje svih funkcija raščlanjivanja pravila i logike rada s protokolima u korisnički prostor.

Glavne inovacije:

  • Implementirana je mogućnost premještanja obrade tablice protoka na stranu mrežnog adaptera, omogućena korištenjem oznake 'offload'. Flowtable je mehanizam za optimizaciju putanje preusmjeravanja paketa, u kojem se kompletan prolaz svih lanaca obrade pravila primjenjuje samo na prvi paket, a svi ostali paketi u toku se prosljeđuju direktno. tablica ip global { flowtable f { filter prioriteta ulaska u zakačicu + 1 uređaji = { lan3, lan0, wan } zastavice istovariti } lanac naprijed { tip filter zakačiti prioritetni filter naprijed; prihvatiti politiku; ip protokol { tcp, udp } tok dodaj @f } lanac post { type nat hook prioritetni filter za postrouting; prihvatiti politiku; oifname "wan" maskenbal } }
  • Dodata podrška za pričvršćivanje vlasničke zastavice na tablicu kako bi se osiguralo ekskluzivno korištenje tablice od strane procesa. Kada se proces završi, tabela povezana s njim se automatski briše. Informacije o procesu se prikazuju u dumpu pravila u obliku komentara: tabela ip x { # ime programa nft zastavice vlasnički lanac y { tip filter zakačivanje filter prioriteta unosa; prihvatiti politiku; brojač paketa 1 bajt 309 } }
  • Dodata podrška za IEEE 802.1ad specifikaciju (VLAN stacking ili QinQ), koja definiše sredstvo za zamjenu više VLAN oznaka u jedan Ethernet okvir. Na primjer, da biste provjerili tip vanjskog Ethernet okvira 8021ad i vlan id=342, možete koristiti konstrukciju ... ether type 802.1ad vlan id 342 da provjerite vanjski tip Ethernet okvira 8021ad/vlan id=1, ugniježđeni 802.1 q/vlan id=2 i daljnja enkapsulacija IP paketa: ... eter tip 8021ad vlan id 1 vlan tip 8021q vlan id 2 vlan tip ip brojač
  • Dodata podrška za upravljanje resursima pomoću objedinjene hijerarhije cgroups v2. Ključna razlika između cgroups v2 i v1 je upotreba zajedničke hijerarhije cgroups za sve vrste resursa, umjesto zasebnih hijerarhija za dodjelu CPU resursa, za regulaciju potrošnje memorije i za I/O. Na primjer, da biste provjerili da li se prednik utičnice na prvom nivou cgroupv2 podudara sa maskom “system.slice”, možete koristiti konstrukciju: ... socket cgroupv2 nivo 1 “system.slice”
  • Dodata je mogućnost provjere komponenti SCTP paketa (potrebna funkcionalnost za to će se pojaviti u Linux kernelu 5.14). Na primjer, da provjerite da li paket sadrži komad s tipom 'data' i poljem 'type': ... postoji sctp chunk data ... sctp chunk tip podataka 0
  • Izvršenje operacije učitavanja pravila je ubrzano za otprilike dva puta pomoću oznake “-f”. Izlaz liste pravila je također ubrzan.
  • Obezbijeđen je kompaktni obrazac za provjeru da li su bitovi zastavice postavljeni. Na primjer, da provjerite da snat i dnat status bitovi nisu postavljeni, možete specificirati: ... ct status ! snat,dnat za provjeru da li je sin bit postavljen u bitmasku syn,ack: ... tcp zastavice syn / syn,ack za provjeru da fin i rst bit nisu postavljeni u bitmask syn,ack,fin,rst: ... tcp zastavice = fin,rst / syn,ack,fin,rst!
  • Dozvolite ključnu riječ "verdict" u definicijama tipa set/map: dodajte mapu xm { typeof iifname . ip protokol th dport : presuda ;}

izvor: opennet.ru

Dodajte komentar