lansarea filtrului de pachete , care se dezvoltă ca o alternativă la iptables, ip6tables, arptables și ebtables prin unificarea interfețelor de filtrare a pachetelor pentru IPv4, IPv6, ARP și punți de rețea. Pachetul nftables conține componente de filtrare a pachetelor care funcționează în spațiul utilizatorului, în timp ce la nivel de nucleu, activitatea este asigurată de subiectul nf_tables, care face parte din nucleul Linux începând cu versiunea 3.13. Modificările necesare pentru funcționarea versiunii nftables 0.9.3 sunt incluse în ramura viitoare a nucleului Linux 5.5.
La nivelul nucleului, se oferă doar o interfață generală, independentă de protocolul specific, care furnizează funcții de bază pentru extragerea datelor din pachete, efectuarea operațiunilor asupra datelor și gestionarea fluxului. Logica de filtrare și handler-ele specifice protocolului sunt compilate în bytecode în spațiul utilizatorului, după care acest bytecode este încărcat în nucleu prin intermediul interfeței Netlink și este executat într-o mașină virtuală specială, similară cu BPF (Berkeley Packet Filters). Această abordare permite reducerea semnificativă a dimensiunii codului de filtrare care rulează la nivelul nucleului și externalizarea tuturor funcțiilor de analiză a regulilor și logicii de lucru cu protocoalele în spațiul utilizatorului.
Noutăți principale:
- Suport pentru corelarea pachetelor în funcție de timp. Se pot defini atât intervale de timp și date la care se va aplica regula, cât și programarea activării în zilele specifice ale săptămânii. A fost adăugată și opțiunea nouă „-T” pentru a afișa timpul epocii în secunde.
meta time "2019-12-24 16:00" — "2020-01-02 7:00"
meta hour "17:00" — "19:00"
meta day "Fri" - Suport pentru recuperarea și salvarea etichetelor SELinux (secmark).
ct secmark set meta secmark
meta secmark set ct secmark - Suport pentru listele de map-uri synproxy, care permit definirea mai multor reguli pentru backend.
table ip foo {
synproxy https-synproxy {
mss 1460
wscale 7
timestamp sack-perm
}synproxy other-synproxy {
mss 1460
wscale 5
}chain pre {
tip filtru hook prerouting prioritate raw; politică acceptare;
tcp dport 8888 tcp flags syn notrack
}chain bar {
tip filtru hook forward prioritate filter; politică acceptare;
ct state invalid,untracked synproxy name ip saddr map { 192.168.1.0/24 : «https-synproxy», 192.168.2.0/24 : «other-synproxy» }
}
} - Posibilitatea de a șterge dinamic elemente din seturile de reguli de procesare a pachetelor.
nft add rule … delete @set5 { ip6 saddr . ip6 daddr }
- Suport pentru corelarea VLAN-urilor pe baza identificatorului și protocolului specificat în metadatele interfeței punții de rețea;
meta ibrpvid 100
meta ibrvproto vlan - Opțiunea „-t” („—terse”) pentru a exclude elementele seturilor la afișarea regulilor. La executarea „nft -t list ruleset” se va afișa:
tabelă ip x {
set y {
type ipv4_addr
}
}Iar la „nft list ruleset”
tabelă ip x {
set y {
type ipv4_addr
elements = { 192.168.10.2, 192.168.20.1,
192.168.4.4, 192.168.2.34 }
}
} - Posibilitatea de a specifica mai multe dispozitive în lanțurile netdev (funcționează doar cu nucleul 5.5) pentru a combina regulile tipice de filtrare.
add table netdev x
add chain netdev x y { \
type filter hook ingress devices = { eth0, eth1 } priority 0;
} - Posibilitatea de a adăuga descrieri tipurilor de date.
# nft describe ipv4_addr
datatype ipv4_addr (IPv4 address) (basetype integer), 32 bits - Posibilitatea construire a interfeței CLI cu biblioteca linenoise în loc de libreadline.
./configure —with-cli=linenoise
Sursa: opennet.ro
