Vydání paketového filtru nftables 1.0.6

Bylo zveřejněno vydání paketového filtru nftables 1.0.6 sjednocující rozhraní pro filtrování paketů pro IPv4, IPv6, ARP a síťové mosty (zaměřené na nahrazení iptables, ip6table, arptables a ebtables). 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í změny:

  • Optimalizátor pravidel, který se nazývá, když je zadána volba „-o/—optimize“, má automatické sbalení pravidel tím, že je kombinuje a převádí na seznamy map a sad. Například pravidla # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; pokles politiky; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 přijímat meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 přijímat meta iifname eth1 ip saddr 1.1.1.2 ip saddr. 2.2.3.0 ip daddr.24 iip 1. .1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 přijmout meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 přijmout } } po provedení "nft -o -c -f ruleset.nft" bude převedeno na následující: sada pravidel nft:4:17-74: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 přijmout pravidla.nft:5:17-74: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 přijmout pravidla : 6:17-77: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept ruleset.nft:7:17-83: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 přijmout ruleset.nft:8:17-74: meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 přijmout do: iifname . ip saddr. ip daddr { eth1 . 1.1.1.1. 2.2.2.3, eth1. 1.1.1.2. 2.2.2.4, eth1. 1.1.1.2. 2.2.3.0/24, eth1. 1.1.1.2. 2.2.4.0-2.2.4.10, eth2. 1.1.1.3. 2.2.2.5 } přijmout
  • Optimalizátor může také převést pravidla, která již používají jednoduché seznamy sad, do kompaktnější podoby, například pravidla: # cat ruleset.nft table ip filter { chain input { type filter hook input filter priority; pokles politiky; iifname „lo“ accept ct state zaveden, související akceptovat komentář „V provozu jsme původci, věříme“ iifname „enp0s31f6“ ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 ud sport 123ud-32768 ud iifname "enp65535s0f31" ip saddr { 6, 64.59.144.17 } ip daddr 64.59.150.133 udp sport 10.0.0.149 udp dport 53-32768 přijímá se balíček podle následujícího postupu } ft -c -f bude pravidla přijata } ft -o - exe : ruleset.nft:65535:6-22: iifname "enp149s0f31" ip saddr { 6, 209.115.181.102 } ip daddr 216.197.228.230 udp sport 10.0.0.149d123 akceptovat pravidla udp 32768 udp.65535 7 22 :ifname "enp143s0f31" ip saddr { 6, 64.59.144.17 } ip daddr 64.59.150.133 udp sport 10.0.0.149 udp dport 53-32768 přijmout do: iifname. ip saddr. ip tatínek. udp sport. udp dport { enp65535s0f31 . 6. 209.115.181.102. 10.0.0.149. 123-32768, enp65535s0f31. 6. 216.197.228.230. 10.0.0.149. 123-32768, enp65535s0f31. 6. 64.59.144.17. 10.0.0.149. 53-32768, enp65535s0f31. 6. 64.59.150.133. 10.0.0.149. 53-32768 } přijmout
  • Vyřešen problém s generováním bajtkódu pro slučování intervalů, které používají typy s různým pořadím bajtů, jako je IPv4 (síťové pořadí bajtů) a meta značka (systémové pořadí bajtů). tabulka ip x { mapa w { typeof ip saddr . meta značka : verdikt flags interval counter elements = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122: přijmout, 192.168.0.10-192.168.1.20. 0x0000aa00-0x0000aaff : přijmout, } } řetěz k { typ filtru háček vstupní priorita filtr; pokles politiky; ip saddr. meta značka vmap @w } }
  • Vylepšené porovnání vzácných protokolů při použití nezpracovaných výrazů, například: meta l4proto 91 @th,400,16 0x0 accept
  • Problémy s povolením pravidel s intervaly byly vyřešeny: vložte pravidlo x y tcp sport { 3478-3497, 16384-16387 } counter accept
  • Rozhraní JSON API bylo vylepšeno tak, aby zahrnovalo podporu výrazů v seznamech sad a map.
  • Rozšíření knihovny nftables python umožňují načítání sad pravidel pro zpracování ve validačním režimu ("-c") a přidávají podporu pro externí definici proměnných.
  • Přidávání komentářů je povoleno v prvcích seznamu.
  • Byte ratelimit umožňuje zadat nulovou hodnotu.

Zdroj: opennet.ru

Přidat komentář