Nivo kernela pruža samo generički interfejs nezavisan od protokola koji obezbeđuje osnovne funkcije za izdvajanje podataka iz paketa, izvođenje operacija sa podacima i kontrolu toka. Sama logika filtriranja i rukovaoci specifični za protokol se kompajliraju u bajtkod u korisničkom prostoru, nakon čega se ovaj bajt kod učitava u kernel pomoću Netlink interfejsa i izvršava u posebnoj virtuelnoj mašini koja podseća na BPF (Berkeley Packet Filters). Ovaj pristup vam omogućava da značajno smanjite veličinu koda za filtriranje koji radi na nivou kernela i premestite sve funkcije raščlanjivanja pravila i logike za rad sa protokolima u korisnički prostor.
Glavne inovacije:
- Podrška za uparivanje paketa po vremenu. Možete definirati i vremenske i datumske raspone u kojima će se pravilo pokrenuti i konfigurirati okidanje za pojedine dane u sedmici. Također je dodana nova opcija "-T" za prikaz epohalnog vremena u sekundama.
meta time \»2019-12-24 16:00\" — \»2020-01-02 7:00\"
meta sat \"17:00\" - \"19:00\"
meta dan \"pet\" - Podrška za oporavak i čuvanje SELinux oznaka (secmark).
ct secmark postaviti meta secmark
meta secmark set ct secmark - Podrška za liste synproxy mapa, omogućavajući vam da definirate više od jednog pravila po backendu.
tablica ip foo {
synproxy https-synproxy {
mss 1460
wscale 7
vremenska oznaka sack-perm
}synproxy other-synproxy {
mss 1460
wscale 5
}lanac pre {
tip filter kuka prerouting prioritet neobrađen; prihvatiti politiku;
tcp dport 8888 tcp flags syn notrack
}lanac {
tip filter zakaka prioritetni filter naprijed; prihvatiti politiku;
ct stanje nevažeće, nepraćeno ime sinproksija ip saddr mapa { 192.168.1.0/24 : “https-synproxy”, 192.168.2.0/24 : “other-synproxy” }
}
} - Mogućnost dinamičkog uklanjanja elemenata skupa iz pravila obrade paketa.
nft dodaj pravilo ... izbriši @set5 { ip6 saddr . ip6 tata}
- Podrška za mapiranje VLAN-a po ID-u i protokolu definisanom u metapodacima interfejsa mrežnog mosta;
meta ibrpvid 100
meta ibrvproto vlan - Opcija "-t" ("--tarse") za isključivanje elemenata skupova pri prikazivanju pravila. Pokretanje "nft -t list ruleset" će ispisati:
tablica ip x {
postaviti y {
upišite ipv4_addr
}
}I sa "nft list rulesset"
tablica ip x {
postaviti y {
upišite ipv4_addr
elementi = { 192.168.10.2, 192.168.20.1,
192.168.4.4, 192.168.2.34 }
}
} - Sposobnost specificiranja više od jednog uređaja u netdev lancima (radi samo sa kernelom 5.5) za kombinovanje uobičajenih pravila filtriranja.
dodati tablicu netdev x
dodaj lanac netdev x y { \
tip filter hook ingress devices = { eth0, eth1 } prioritet 0;
} - Mogućnost dodavanja opisa tipova podataka.
#nft opisati ipv4_addr
tip podataka ipv4_addr (IPv4 adresa) (bazni tip cijeli broj), 32 bita - Mogućnost izgradnje CLI interfejsa sa bibliotekom linenoise umjesto libreadline.
./configure --with-cli=linenoise
izvor: opennet.ru