lansarea filtrului de pachete nftables 1.0.2

nftables 1.0.2, un framework de filtrare a pachetelor care unifică interfețele de filtrare a pachetelor pentru IPv4, IPv6, ARP și punți de rețea, a fost lansat (concepută ca un înlocuitor pentru iptables, ip6table, arptables și ebtables). Modificările necesare pentru nftables 1.0.2 au fost încorporate în kernel. Linux 5.17-rc.

Pachetul nftables conține componentele de filtrare a pachetelor care operează în spațiul utilizatorului, în timp ce munca la nivel de kernel este asigurată de subsistemul nf_tables, care face parte din kernel. Linux Începând cu versiunea 3.13, la nivel de kernel este furnizată doar o interfață generică independentă de protocol, care oferă funcționalități de bază pentru extragerea datelor din pachete, efectuarea operațiunilor cu datele și controlul fluxului.

Regulile de filtrare în sine și handlerele specifice protocolului sunt compilate în bytecode în spațiul utilizatorului, după care acest bytecode este încărcat în kernel folosind interfața Netlink și executat în kernel într-un mod special. mașină virtuală, amintind de BPF (Berkeley Packet Filters). Această abordare permite o reducere semnificativă a dimensiunii codului de filtrare care rulează la nivel de kernel și mută toată analiza regulilor și logica protocolului î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

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster