Vydání paketového filtru nftables 1.0.1

Bylo zveřejněno vydání paketového filtru nftables 1.0.1 sjednocující 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.1 jsou zahrnuty v jádře Linuxu 5.16-rc1.

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:

  • Snížená spotřeba paměti při načítání velkých sad a seznamů map.
  • Bylo zrychleno opětovné načítání seznamů sad a map.
  • Výstup vybraných tabulek a řetězců ve velkých sadách pravidel byl zrychlen. Například doba provedení příkazu „nft list ruleset“ pro zobrazení sady pravidel se 100 tisíci řádky je 3.049 sekund a při výstupu pouze tabulek nat a filtr („nft list table nat“, „nft list table filter “) se sníží na 1.969 a 0.697 sekundy.
  • Provádění dotazů s volbou „--terse“ bylo urychleno při zpracování pravidel s velkými seznamy sad a map.
  • Je možné filtrovat provoz z „egress“ řetězce, který je zpracováván na stejné úrovni jako egress handler v řetězci netdev (egress hook), tzn. ve fázi, kdy ovladač obdrží paket ze síťového zásobníku jádra. tabulka netdev filter { chain egress { type filter hook egress devices = { eth0, eth1 } priorita 0; meta priority set ip saddr map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • Umožňuje shodu a úpravu bajtů v hlavičce a obsahu paketu při daném offsetu. # nft přidat pravidlo xy @ih,32,32 0x14000000 čítač # nft přidat pravidlo xy @ih,32,32 nastavit 0x14000000 čítač

Zdroj: opennet.ru

Přidat komentář