Izdanje filtra paketa nftables 0.9.9

Objavljeno je izdanje filtera paketa nftables 0.9.9, koje objedinjuje sučelja za filtriranje paketa za IPv4, IPv6, ARP i mrežne mostove (s ciljem zamjene iptables, ip6table, arptables i ebtables). U isto vrijeme objavljeno je izdanje popratne biblioteke libnftnl 1.2.0, koja pruža API niske razine za interakciju s podsustavom nf_tables. Promjene potrebne za rad izdanja nftables 0.9.9 uključene su u Linux kernel 5.13-rc1.

Paket nftables uključuje komponente filtera paketa koje se izvode u korisničkom prostoru, dok rad na razini kernela osigurava podsustav nf_tables, koji je dio Linux kernela od izdanja 3.13. Razina kernela pruža samo generičko sučelje neovisno o protokolu koje pruža osnovne funkcije za izdvajanje podataka iz paketa, izvođenje podatkovnih operacija i kontrolu toka.

Pravila filtriranja i rukovatelji specifični za protokol kompajliraju se u bajt kod u korisničkom prostoru, nakon čega se ovaj bajt kod učitava u kernel pomoću Netlink sučelja i izvršava u kernelu u posebnom virtualnom stroju koji podsjeća na BPF (Berkeley Packet Filters). Ovaj pristup vam omogućuje da značajno smanjite veličinu koda za filtriranje koji se izvodi na razini jezgre i premjestite sve funkcije pravila parsiranja i logike za rad s protokolima u korisnički prostor.

Glavne inovacije:

  • Implementirana je mogućnost premještanja obrade tablice toka na stranu mrežnog adaptera, omogućena pomoću oznake 'offload'. Flowtable je mehanizam za optimizaciju putanje preusmjeravanja paketa, u kojem se potpuni prolaz svih lanaca obrade pravila primjenjuje samo na prvi paket, a svi ostali paketi u toku se prosljeđuju izravno. table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; politika prihvatiti; ip protokol { tcp, udp } tok add @f } lančani post { tip nat hook postrouting prioritetni filtar; politika prihvatiti; oifname "wan" maskenbal } }
  • Dodana je podrška za pričvršćivanje oznake vlasnika na tablicu kako bi se osiguralo isključivo korištenje tablice od strane procesa. Kada se proces prekine, tablica povezana s njim automatski se briše. Informacije o procesu prikazane su u dumpu pravila u obliku komentara: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; politika prihvatiti; brojač paketa 1 bajt 309 } }
  • Dodana je podrška za specifikaciju IEEE 802.1ad (VLAN stacking ili QinQ), koja definira način zamjene više VLAN oznaka u jedan Ethernet okvir. Na primjer, za provjeru tipa vanjskog Ethernet okvira 8021ad i vlan id=342, možete upotrijebiti konstrukciju ... ether type 802.1ad vlan id 342 za provjeru vanjskog tipa Ethernet okvira 8021ad/vlan id=1, ugniježđeni 802.1 q/vlan id=2 i dalje enkapsulacija IP paketa: ... ether tip 8021ad vlan id 1 vlan tip 8021q vlan id 2 vlan tip ip brojač
  • Dodana podrška za upravljanje resursima korištenjem objedinjene hijerarhije cgroups v2. Ključna razlika između cgroups v2 i v1 je korištenje zajedničke hijerarhije cgroups za sve vrste resursa, umjesto odvojenih hijerarhija za dodjelu CPU resursa, za regulaciju potrošnje memorije i za I/O. Na primjer, da biste provjerili odgovara li predak utičnice na prvoj razini cgroupv2 maski “system.slice”, možete koristiti konstrukciju: ... socket cgroupv2 razina 1 “system.slice”
  • Dodana je mogućnost provjere komponenti SCTP paketa (funkcionalnost potrebna za to pojavit će se u jezgri Linuxa 5.14). Na primjer, da biste provjerili sadrži li paket dio s tipom 'data' i poljem 'type': ... sctp chunk data there is ... sctp chunk data type 0
  • Izvršenje operacije učitavanja pravila ubrzano je otprilike dva puta korištenjem oznake “-f”. Izlaz popisa pravila također je ubrzan.
  • Dostavljen je kompaktni obrazac za provjeru jesu li bitovi zastavice postavljeni. Na primjer, da provjerite da bitovi statusa snat i dnat nisu postavljeni, možete navesti: ... ct status ! snat,dnat za provjeru je li sin bit postavljen u bitmasku syn,ack: ... tcp zastavice syn / syn,ack za provjeru da fin i prvi bitovi nisu postavljeni u bitmasku syn,ack,fin,rst: ... tcp zastavice ! = fin,rst / syn,ack,fin,rst
  • Dopusti ključnu riječ "presuda" u definicijama tipa set/mapa: add map xm { typeof iifname. ip protokol th dport : presuda ;}

Izvor: opennet.ru

Dodajte komentar