Vydání paketového filtru nftables 1.0.2

Bylo zveřejněno vydání paketového filtru nftables 1.0.2, které sjednocuje rozhraní pro filtrování paketů pro IPv4, IPv6, ARP a síťové mosty (zaměřené na nahrazení iptables, ip6table, arptables a ebtables). Změny požadované pro fungování vydání nftables 1.0.2 jsou zahrnuty v jádře Linuxu 5.17-rc.

Balíček nftables obsahuje komponenty paketového filtru, které běží v uživatelském prostoru, zatímco práci na úrovni jádra zajišťuje subsystém nf_tables, který je součástí linuxového jádra od vydání 3.13. Úroveň jádra poskytuje pouze generické rozhraní nezávislé na protokolu, které poskytuje základní funkce pro extrakci dat z paketů, provádění operací s daty a řízení toku.

Filtrovací pravidla a obslužné rutiny specifické pro protokol jsou zkompilovány do bajtového kódu v uživatelském prostoru, poté je tento bajtový kód načten do jádra pomocí rozhraní Netlink a spuštěn v jádře ve speciálním virtuálním stroji připomínajícím BPF (Berkeley Packet Filters). Tento přístup umožňuje výrazně zmenšit velikost filtrovacího kódu běžícího na úrovni jádra a přesunout všechny funkce parsovacích pravidel a logiky pro práci s protokoly do uživatelského prostoru.

Hlavní inovace:

  • Byl přidán režim optimalizace pravidel, povolený pomocí nové možnosti "-o" ("--optimize"), kterou lze kombinovat s možností "--check" pro kontrolu a optimalizaci změn v souboru pravidel, aniž by byl skutečně načten. . Optimalizace umožňuje kombinovat podobná pravidla, například pravidla: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 akceptovat meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 akceptovat ip saddr 1.1.1.1 2.2.2.2 ip .2.2.2.2 přijmout ip saddr 3.3.3.3 ip daddr XNUMX drop

    bude spojen 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 } přijmout ip saddr . ip daddr vmap { 1.1.1.1 . 2.2.2.2: přijmout, 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 čítač přijmout do: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } čítač pakety 0 bajtů 0 přijímat

  • Seznamy sad implementují možnost specifikovat možnosti ip a tcp a také části 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 }
  • Přidána podpora pro TCP volby fastopen, md5sig a mptcp.
  • Přidána podpora pro použití podtypu mp-tcp v mapování: volba tcp mptcp podtyp 1
  • Vylepšený kód filtrování na straně jádra.
  • Flowtable nyní plně podporuje formát JSON.
  • Byla poskytnuta možnost použití akce „odmítnout“ v operacích porovnávání rámců Ethernet. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 odmítnout

Zdroj: opennet.ru

Přidat komentář