izlazak paketskog filtera , koji se razvija kao zamjena za iptables, ip6tables, arptables i ebtables ujedinjavajući sučelja za filtriranje paketa za IPv4, IPv6, ARP i mrežne mostove. Paket nftables uključuje komponente paketskog filtra koje rade u korisničkom prostoru, dok na razini jezgre rad osigurava podsustav nf_tables, koji je dio jezgre Linuxa od verzije 3.13. Potrebne promjene za rad verzije nftables 0.9.3 uključene su u buduću granu jezgre Linux 5.5.
Na razini jezgre osigurava se samo opće sučelje koje ne ovisi o određenom protokolu i osigurava osnovne funkcije ekstrakcije podataka iz paketa, izvršavanje operacija s podacima i upravljanje tokom. Logika filtriranja i specifični protokol handleri kompajliraju se u bajtkod u korisničkom prostoru, a zatim se taj bajtkod učitava u jezgru putem Netlink sučelja i izvršava u posebnoj virtualnoj mašini koja podsjeća na BPF (Berkeley Packet Filters). Ovaj pristup značajno smanjuje veličinu koda filtriranja koji radi na razini jezgre i premješta sve funkcije analize pravila i logike rada s protokolima u korisnički prostor.
Glavne novine:
- Podrška za vremensko usklađivanje paketa. Mogu se odrediti kako rasponi vremena i datuma u kojima će pravilo aktivirati, tako i podešavanje aktiviranja u posebne dane u tjednu. Također je dodana nova opcija „-T“ za ispis epohe vremena u sekundama.
meta time "2019-12-24 16:00" — "2020-01-02 7:00"
meta hour "17:00" — "19:00"
meta day "Fri" - Podrška za vraćanje i spremanje SELinux oznaka (secmark).
ct secmark set meta secmark
meta secmark set ct secmark - Podrška za map-liste synproxy, omogućujući definiranje više od jednog pravila za backend.
table ip foo {
synproxy https-synproxy {
mss 1460
wscale 7
timestamp sack-perm
}synproxy other-synproxy {
mss 1460
wscale 5
}chain pre {
type filter hook prerouting priority raw; policy accept;
tcp dport 8888 tcp flags syn notrack
}chain bar {
type filter hook forward priority filter; policy accept;
ct state invalid, untracked synproxy name ip saddr map { 192.168.1.0/24 : "https-synproxy", 192.168.2.0/24 : "other-synproxy" }
}
} - Mogućnost dinamičkog uklanjanja elemenata set-skupova iz pravila obrade paketa.
nft add rule … delete @set5 { ip6 saddr . ip6 daddr }
- Podrška za usklađivanje VLAN-a po identifikatoru i protokolu, definiranim u metapodacima sučelja mrežnog mosta;
meta ibrpvid 100
meta ibrvproto vlan - Opcija «-t» («—terse») za isključivanje elemenata set-nabora prilikom prikaza pravila. Kada se izvrši «nft -t list ruleset» bit će prikazano:
tablica ip x {
set y {
tip ipv4_addr
}
}A kada je «nft list ruleset»
tablica ip x {
set y {
tip ipv4_addr
elements = { 192.168.10.2, 192.168.20.1,
192.168.4.4, 192.168.2.34 }
}
} - Mogućnost navođenja više uređaja u netdev lancima (radi samo s kernelom 5.5) za kombiniranje standardnih pravila filtriranja.
dodaj tablicu netdev x
dodaj lanac netdev x y { \
tip filter hook ingress uređaji = { eth0, eth1 } prioritet 0;
} - Mogućnost dodavanja opisa tipova podataka.
# nft describe ipv4_addr
datatype ipv4_addr (IPv4 adresa) (basetype integer), 32 bita - Mogućnost sastavljanja CLI sučelja s bibliotekom linenoise umjesto libreadline.
./configure --with-cli=linenoise
Izvor: opennet.ru
