Vydání balíčkového filtru nftables 1.0.2

Byla vydána verze balíčkového filtru nftables 1.0.2, která unifikuje rozhraní pro filtrování paketů pro IPv4, IPv6, ARP a síťové mosty (cílí na nahrazení iptables, ip6tables, arptables a ebtables). Nezbytné změny pro fungování verze nftables 1.0.2 jsou součástí jádra Linux 5.17-rc.

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í novinky:

  • Byl přidán režim optimalizace pravidel, který se aktivuje pomocí nové volby „-o“ („—optimize“), jež lze kombinovat s volbou „—check“ pro kontrolu a optimalizaci změn v souboru s pravidly bez jeho skutečného načtení. Optimalizace umožňuje sloučení podobných pravidel, například pravidel: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 accept ip saddr 1.1.1.1 ip daddr 2.2.2.2 accept ip saddr 2.2.2.2 ip daddr 3.3.3.3 drop

    budou sloučena do meta iifname . ip saddr . ip daddr { eth1 . 1.1.1.1 . 2.2.2.3, eth1 . 1.1.1.2 . 2.2.2.5 } accept ip saddr . ip daddr vmap { 1.1.1.1 . 2.2.2.2 : accept, 2.2.2.2 . 3.3.3.3 : drop }

    Příklad použití: # nft -c -o -f ruleset.test Sloučení: ruleset.nft:16:3-37: ip daddr 192.168.0.1 counter accept ruleset.nft:17:3-37: ip daddr 192.168.0.2 counter accept ruleset.nft:18:3-37: ip daddr 192.168.0.3 counter accept do: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } counter packets 0 bytes 0 accept

  • V set-seznamech byla implementována možnost určení ip- a tcp-voleb, stejně jako chunk-ů sctp: set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } chain c5 { ip option ra value @s5 accept } chain c7 { sctp chunk init num-inbound-streams @s7 accept }
  • Byla přidána podpora pro TCP-voleb fastopen, md5sig a mptcp.
  • Byla přidána podpora pro použití v porovnání podtypu mp-tcp: tcp option mptcp subtype 1
  • Byl vylepšen kód filtrování, který funguje na straně jádra.
  • Pro flowtable byla implementována plná podpora formátu JSON.
  • Byla poskytnuta možnost použití akce „reject“ při operacích s porovnáním Ethernetových rámců. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 reject

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