lansarea filtrului de pachete nftables 1.0.2

A fost publicată lansarea filtrului de pachete nftables 1.0.2, unificând interfețele de filtrare a pachetelor pentru IPv4, IPv6, ARP și punți de rețea (care vizează înlocuirea iptables, ip6table, arptables și ebtables). Modificările necesare pentru ca lansarea nftables 1.0.2 să funcționeze sunt incluse în nucleul Linux 5.17-rc.

Pachetul nftables include componente de filtru de pachete care rulează în spațiul utilizatorului, în timp ce munca la nivel de kernel este asigurată de subsistemul nf_tables, care a făcut parte din nucleul Linux încă de la lansarea 3.13. Nivelul nucleului oferă doar o interfață generică independentă de protocol, care oferă funcții de bază pentru extragerea datelor din pachete, efectuarea operațiunilor de date și controlul fluxului.

Regulile de filtrare în sine și handlerele specifice protocolului sunt compilate în bytecode din spațiul utilizatorului, după care acest bytecode este încărcat în nucleu folosind interfața Netlink și executat în kernel într-o mașină virtuală specială asemănătoare BPF (Berkeley Packet Filters). Această abordare face posibilă reducerea semnificativă a dimensiunii codului de filtrare care rulează la nivel de kernel și mutarea tuturor funcțiilor de parsare a regulilor și a logicii de lucru cu protocoale în spațiul utilizatorului.

Principalele inovații:

  • A fost adăugat un mod de optimizare a regulilor, activat folosind noua opțiune „-o” (“--optimize”), care poate fi combinată cu opțiunea „--check” pentru a verifica și optimiza modificările aduse fișierului setului de reguli fără a-l încărca efectiv . Optimizarea vă permite să combinați reguli similare, de exemplu, regulile: 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 .2.2.2.2 accept ip saddr 3.3.3.3 ip daddr XNUMX drop

    va fi combinat în meta iifname . ip saddr. ip daddr { eth1 . 1.1.1.1. 2.2.2.3, et1. 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 }

    Exemplu de utilizare: # nft -c -o -f ruleset.test Fuziune: 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 în: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } counter pachete 0 bytes 0 accept

  • Listele de set implementează capacitatea de a specifica opțiunile ip și tcp, precum și fragmentele sctp: set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } lanț c5 { opțiune ip ra valoare @s5 accept } lanț c7 { sctp chunk init num-inbound-streams @s7 accept }
  • S-a adăugat suport pentru opțiunile TCP fastopen, md5sig și mptcp.
  • S-a adăugat suport pentru utilizarea subtipului mp-tcp în mapări: opțiunea tcp subtipul mptcp 1
  • Cod îmbunătățit de filtrare pe partea nucleului.
  • Flowtable are acum suport complet pentru formatul JSON.
  • A fost oferită capacitatea de a utiliza acțiunea „respingere” în operațiunile de potrivire a cadrelor Ethernet. eter saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 respinge

Sursa: opennet.ru

Adauga un comentariu