Objavljeno je izdanje filtera paketa nftables 1.0.1, koje objedinjuje sučelja za filtriranje paketa za IPv4, IPv6, ARP i mrežne mostove (s ciljem zamjene iptables, ip6table, arptables i ebtables). Promjene potrebne za rad izdanja nftables 1.0.1 uključene su u Linux kernel 5.16-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:
- Smanjena potrošnja memorije prilikom učitavanja velikih skupova i popisa karata.
- Ubrzano je ponovno učitavanje popisa seta i karata.
- Izlaz odabranih tablica i lanaca u velikim skupovima pravila je ubrzan. Na primjer, vrijeme izvršenja naredbe “nft list rulesset” za prikaz skupa pravila sa 100 tisuća redaka iznosi 3.049 sekundi, a pri ispisu samo tablica nat i filter (“nft list table nat”, “nft list table filter ”) smanjuje se na 1.969 i 0.697 sekundi.
- Izvršenje upita s opcijom “--terse” ubrzano je pri obradi pravila s velikim popisima skupova i mapa.
- Moguće je filtrirati promet iz “egress” lanca, koji se obrađuje na istoj razini kao i egress handler u netdev lancu (egress hook), tj. u fazi kada upravljački program prima paket od mrežnog stoga jezgre. tablica netdev filtar { lanac izlaza { vrsta filtera kuka izlazni uređaji = { eth0, eth1 } prioritet 0; meta priority set ip saddr map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
- Omogućuje podudaranje i modificiranje bajtova u zaglavlju i sadržaju paketa na danom pomaku. # nft dodaj pravilo x y @ih,32,32 0x14000000 brojač # nft dodaj pravilo x y @ih,32,32 postavi 0x14000000 brojač
Izvor: opennet.ru