Vydání paketového filtru nftables 1.0.5

Byl vydán balíčkový filtr nftables 1.0.5, který unifikuje rozhraní pro filtraci paketů pro IPv4, IPv6, ARP a síťové mosty (zaměřený na nahrazení iptables, ip6tables, arptables a ebtables). Současně byl vydán doprovodný knihovna libnftnl 1.2.3, která poskytuje nízkoúrovňové API pro interakci se subsystémem nf_tables.

Balíček nftables obsahuje prvky filtrování paketů pracující v uživatelském prostoru, zatímco na úrovni jádra zajišťuje provoz subsystém nf_tables, který je součástí jádra Linux od verze 3.13. Na úrovni jádra je poskytováno pouze obecné rozhraní, které nezávisí na konkrétním protokolu a poskytuje základní funkce pro extrakci dat z paketů, provádění operací s daty a řízení toku.

Samotná pravidla filtrování a specifické zpracovatele protokolů se kompilují do bytecode v uživatelském prostoru, poté je tento bytecode načten do jádra pomocí rozhraní Netlink a vykonává se v jádře v specializované virtuálním strojipodobě jako BPF (Berkeley Packet Filters). Tento přístup výrazně snižuje velikost kódu filtrování, který funguje na úrovni jádra a přesouvá všechny funkce analýzy pravidel a logiky práce s protokoly do uživatelského prostoru.

Hlavní změny:

  • V optimalizátoru pravidel, vyvolaném při použití volby "-o/—optimize", byly vyřešeny problémy s slučováním pravidel, map a set seznamů. # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; policy drop; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 } } # nft -o -c -f ruleset.nft Spojování: ruleset.nft:4:3-52: ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ruleset.nft:5:3-52: ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 do: snat to ip saddr . tcp dport map { 1.1.1.1 . 8000 : 4.4.4.4 . 80, 2.2.2.2 . 8001 : 5.5.5.5 . 90 }
  • Při slučování ethernetových a vlan prvků bylo zajištěno určení dynamického set seznamu, který se naplňuje na základě parametrů cesty paketu. add table netdev x add chain netdev x y { type filter hook ingress device enp0s25 priority 0; } add set netdev x macset { typeof ether daddr . vlan id; flags dynamic,timeout; } add rule netdev x y update @macset { ether daddr . vlan id timeout 60s } add rule netdev x y ether saddr . vlan id { 0a:0b:0c:0d:0e:0f . 42, 0a:0b:0c:0d:0e:0f . 4095 } counter accept
  • Byla zavedena ukázka pravidel s map seznamy, které obsahují masky v názvech rozhraní. table inet filter { chain INPUT { iifname vmap { "eth0" : jump input_lan, "wg*" : jump input_vpn } } chain input_lan {} chain input_vpn {} }
  • Byly odstraněny regresivní změny, které vedly k nesprávné lexikální analýze platných pravidel.
  • Byly vyřešeny problémy se pomalým zpracováním a automatickým slučováním velkých seznamů s prvky, které definují intervaly hodnot.
  • Bylo odstraněno havarijní ukončení při přidávání prvků do neplatného set seznamu.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster