vydání paketového filtru , vyvíjející se jako náhrada za iptables, ip6table, arptables a ebtables díky unifikaci filtrovacích rozhraní pro IPv4, IPv6, ARP a síťové mosty. V balíčku nftables jsou komponenty filtrování paketů pracující v uživatelském prostoru, zatímco na úrovni jádra práci zajišťuje subsystém nf_tables, který je součástí jádra Linux od verze 3.13. Potřebné změny pro vydání nftables 0.9.3 jsou zahrnuty v budoucí větvi jádra Linux 5.5.
Na úrovni jádra je poskytováno pouze obecné rozhraní, nezávislé na konkrétním protokolu a zajišťující základní funkce získávání dat z paketů, provádění operací s daty a řízení toku. Přímá logika filtrování a specifické pro protokoly zpracovatele jsou kompilovány do bajtkódu v uživatelském prostoru, který je potom nahrán do jádra pomocí rozhraní Netlink a vykonáván ve speciální virtuální stroji, která připomíná BPF (Berkeley Packet Filters). Tento přístup významně snižuje velikost kódu filtrování, který pracuje na úrovni jádra, a přenáší všechny funkce analýzy pravidel a logiku práce s protokoly do uživatelského prostoru.
Hlavní novinky:
- Podpora časového porovnávání paketů. Lze definovat jak časové a datové rozsahy, ve který bude pravidlo aktivováno, tak i nastavit aktivaci na jednotlivé dny v týdnu. Také byla přidána nová možnost „-T“ pro výstup epochálního času v sekundách.
meta time "2019-12-24 16:00" — "2020-01-02 7:00"
meta hour "17:00" — "19:00"
meta day "Fri" - Podpora obnovy a ukládání značek SELinux (secmark).
ct secmark set meta secmark
meta secmark set ct secmark - Podpora map seznamů synproxy, které umožňují definovat více než jedno pravidlo na backend.
tabulka 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
}řetězec 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" }
}
} - Možnost dynamického odstraňování prvků set-nastavení z pravidel zpracování paketů.
nft add rule … delete @set5 { ip6 saddr . ip6 daddr }
- Podpora VLAN porovnání podle identifikátoru a protokolu určených v metadatech rozhraní síťového mostu;
meta ibrpvid 100
meta ibrvproto vlan - Možnost „-t“ („—terse“) pro vyloučení prvků souborů set při zobrazování pravidel. Při provedení „nft -t list ruleset“ se zobrazí:
tabulka ip x {
set y {
type ipv4_addr
}
}A při „nft list ruleset“
tabulka ip x {
set y {
type ipv4_addr
elements = { 192.168.10.2, 192.168.20.1,
192.168.4.4, 192.168.2.34 }
}
} - Možnost uvést více než jedno zařízení v řetězcích netdev (funguje pouze s jádrem 5.5) pro kombinaci standardních pravidel filtrování.
add table netdev x
add chain netdev x y { \
type filter hook ingress devices = { eth0, eth1 } priority 0;
} - Možnost přidání popisů typů dat.
# nft describe ipv4_addr
datatype ipv4_addr (IPv4 adresa) (basetype integer), 32 bits - Možnost sestavení CLI rozhraní s knihovnou linenoise místo libreadline.
.\/configure —with-cli=linenoise
Zdroj: opennet.ru
