Vydanie paketového filtra nftables 1.0.2

Bolo zverejnené vydanie paketového filtra nftables 1.0.2, ktoré zjednocuje rozhrania na filtrovanie paketov pre IPv4, IPv6, ARP a sieťové mosty (zamerané na nahradenie iptables, ip6table, arptables a ebtables). Zmeny potrebné na fungovanie vydania nftables 1.0.2 sú zahrnuté v jadre Linuxu 5.17-rc.

Balík nftables obsahuje komponenty paketového filtra, ktoré bežia v užívateľskom priestore, zatiaľ čo prácu na úrovni jadra zabezpečuje subsystém nf_tables, ktorý je súčasťou linuxového jadra od vydania 3.13. Úroveň jadra poskytuje iba všeobecné rozhranie nezávislé od protokolu, ktoré poskytuje základné funkcie na extrahovanie údajov z paketov, vykonávanie operácií s údajmi a riadenie toku.

Samotné filtrovacie pravidlá a obslužné programy špecifické pre daný protokol sú skompilované do bajtkódu používateľského priestoru, po ktorom sa tento bajtkód načíta do jadra pomocou rozhrania Netlink a spustí sa v jadre v špeciálnom virtuálnom stroji pripomínajúcom BPF (Berkeley Packet Filters). Tento prístup umožňuje výrazne zmenšiť veľkosť filtrovacieho kódu spusteného na úrovni jadra a presunúť všetky funkcie pravidiel parsovania a logiku práce s protokolmi do užívateľského priestoru.

Hlavné inovácie:

  • Bol pridaný režim optimalizácie pravidiel, povolený pomocou novej možnosti „-o“ („--optimize“), ktorú možno kombinovať s možnosťou „--check“ na kontrolu a optimalizáciu zmien v súbore pravidiel bez toho, aby sa skutočne načítal . Optimalizácia umožňuje kombinovať podobné pravidlá, napríklad pravidlá: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 prijať meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 prijať ip saddr 1.1.1.1 2.2.2.2 ip .2.2.2.2 prijať ip saddr 3.3.3.3 ip daddr XNUMX drop

    budú 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 } prijať ip saddr . ip daddr vmap { 1.1.1.1 . 2.2.2.2 : prijať, 2.2.2.2 . 3.3.3.3 : pokles }

    Príklad použitia: # nft -c -o -f ruleset.test Zlúčenie: 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 počítadlo prijať do: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } počítadlo paketov 0 bajtov 0 prijať

  • Zoznamy množín implementujú schopnosť špecifikovať možnosti ip a tcp, ako aj časti sctp: set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } reťaz c5 { možnosť ip ra hodnota @ s5 prijať } reťaz c7 { sctp chunk init num-inbound-streams @s7 prijať }
  • Pridaná podpora pre TCP voľby fastopen, md5sig a mptcp.
  • Pridaná podpora pre použitie podtypu mp-tcp v mapovaniach: možnosť tcp mptcp podtyp 1
  • Vylepšený kód filtrovania na strane jadra.
  • Flowtable má teraz plnú podporu pre formát JSON.
  • Bola poskytnutá možnosť použiť akciu „odmietnutia“ v operáciách priraďovania rámcov Ethernet. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 odmietnuť

Zdroj: opennet.ru

Pridať komentár