UtgÄvan av paketfiltret nftables 1.1.6 har offentliggjorts, vilket enhetligar grÀnssnitten för paketfiltrering för IPv4, IPv6, ARP och nÀtverksbryggor (syftar till att ersÀtta iptables, ip6tables, arptables och ebtables). Samtidigt publicerades utgÄvan av den relaterade biblioteket libnftnl 1.3.1, som tillhandahÄller ett lÄgnivÄ-API för interaktion med nf_tables-systemet.
Paketet nftables innehÄller komponenter för paketfilter som arbetar i anvÀndarrummet, medan nf_tables-systemet pÄ kÀrnnivÄ tillhandahÄller funktionen, vilket har varit en del av Linux-kÀrnan sedan version 3.13. PÄ kÀrnnivÄ tillhandahÄlls endast ett allmÀnt grÀnssnitt, oberoende av protokoll, som ger grundlÀggande funktioner för att extrahera data frÄn paket, utföra operationer med data och styra flödet.
SjÀlva filtreringsreglerna och protokollspecifika hanterare kompileras till bytekod i anvÀndarrummet, som sedan laddas in i kÀrnan via Netlink-grÀnssnittet och utförs i kÀrnan i en speciell en virtuell maskin, liknande BPF (Berkeley Packet Filters). Denna metod gör det möjligt att avsevÀrt minska storleken pÄ den filterkod som körs pÄ kÀrnnivÄ och flytta alla funktioner för tolkning av regler och logik som rör protokoll till anvÀndarrummet.
Huvudsakliga förÀndringar:
- Fullt stöd för lÀttvikts tunnelmönster, sÄsom vxlan, geneve och erspan, har sÀkerstÀllts: table netdev global { tunnel t1 { id 10 ip saddr 192.168.2.10 ip daddr 192.168.2.11 sport 1025 dport 20020 ttl 1 erspan { version 1 index 2 } } tunnel t2 { id 10 ip saddr 192.168.3.10 ip daddr 192.168.3.11 sport 1025 dport 21021 ttl 1 erspan { version 1 index 2 } } chain in { type filter hook ingress device veth0 priority 0; tunnel name ip saddr map { 10.141.10.12 : «t1», 10.141.10.13 : «t2» } fwd to erspan1 } } Ett nÀtverksgrÀnssnitt erspan1 bör skapas innan reglerna laddas: ip link add dev erspan1 type erspan external
- Stöd för masker i namn pÄ nÀtverksgrÀnssnitt har lagts till i netdev-hanterarna, exempelvis för att lÀgga till en grundlÀggande kedja i filtreringen av inkommande trafik för alla vlan-enheter kan man ange: table netdev t { chain c { type filter hook ingress devices = { «vlan*», «veth0» } priority filter; policy accept; } }
- PÄ system med kÀrnan Linux 6.18+ har stöd för överföring av L2-ramar i nÀtverksbryggors grÀnssnitt för lokal bearbetning implementerats, exempelvis för att dirigera alla Ethernet-ramar för MAC-adressen de:ad:00:00:be:ef mot IP-stacken kan man ange: table bridge global { chain pre { type filter hook prerouting priority 0; policy accept; ether daddr de:ad:00:00:be:ef meta pkttype set host ether daddr set meta ibrhwaddr accept } }
- En ny infrastruktur för fuzzing-testning med hjÀlp av verktyget afl++ (american fuzzy lop++) har lagts till, som aktiveras under byggnadsfasen via «./configure --with-fuzzer».
KĂ€lla: opennet.ru
