udgivelse af pakkefilter , der udvikler sig som en erstatning for iptables, ip6tables, arptables og ebtables ved at standardisere pakke filtreringsgrænseflader for IPv4, IPv6, ARP og netværksbroer. nftables-pakken inkluderer komponenter til pakke filtrering, der arbejder i brugerrummet, mens kernens subsystem nf_tables, der har været en del af Linux-kernen siden version 3.13, sørger for arbejdet på kernens niveau. Nødvendige ændringer til nftables 0.9.3 er inkluderet i den kommende Linux-kernens 5.5 gren.
På kernel niveau tilbydes kun et generelt interface, der ikke er afhængigt af protokollen og giver grundlæggende funktioner til at udtrække data fra pakker, udføre operationer med data og kontrollere strømmen. Selve filtreringslogikken og protokolspecifikke håndterere kompilere til bytekode i brugerrummet, hvorefter denne bytekode indlæses i kernen via Netlink-grænsefladen og eksekveres i en speciel virtuel maskine, der minder om BPF (Berkeley Packet Filters). Denne tilgang muliggør en betydelig reduktion af størrelsen på den kode, der kører på kernel niveau, og flytter alle funktioner til regel analyse og protokol logik til brugerrummet.
Hovednyhederne:
- Understøttelse af pakke matchning baseret på tid. Du kan definere både tidsrammer og datoer, hvori reglen vil blive aktiveret, samt indstille aktivering på specifikke ugedage. En ny mulighed “-T” er også tilføjet for at udskrive epoketid i sekunder.
meta time "2019-12-24 16:00" — "2020-01-02 7:00"
meta hour "17:00" — "19:00"
meta day "Fri" - Understøttelse af genoprettelse og bevarelse af SELinux mærker (secmark).
ct secmark set meta secmark
meta secmark set ct secmark - Understøttelse af map-lister for synproxy, som tillader at definere mere end én regel til backend.
tabel 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
}kæde 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" }
}
} - Mulighed for dynamisk at fjerne elementer fra set-sæt i pakkehåndteringsregler.
nft add rule … delete @set5 { ip6 saddr . ip6 daddr }
- Understøttelse af VLAN matchning efter ID og protokol, defineret i metadataene for netværksbrointerfacet;
meta ibrpvid 100
meta ibrvproto vlan - Option "-t" ("—terse") for excluding set elements when displaying rules. Executing "nft -t list ruleset" will output:
table ip x {
set y {
type ipv4_addr
}
}But with "nft list ruleset"
table ip x {
set y {
type ipv4_addr
elements = { 192.168.10.2, 192.168.20.1,
192.168.4.4, 192.168.2.34 }
}
} - The ability to specify multiple devices in netdev chains (only works with kernel 5.5) for combining typical filtering rules.
add table netdev x
add chain netdev x y { \
type filter hook ingress devices = { eth0, eth1 } priority 0;
} - The ability to add descriptions for data types.
# nft describe ipv4_addr
datatype ipv4_addr (IPv4 address) (basetype integer), 32 bits - The ability to build a CLI interface with the linenoise library instead of libreadline.
.\/configure —with-cli=linenoise
Kilde: opennet.ru
