Lansarea filtrului de pachete nftables 1.0.5

A fost publicat release-ul filtrului de pachete nftables 1.0.5, care unifică interfețele de filtrare a pachetelor pentru IPv4, IPv6, ARP și poduri de rețea (destinat să înlocuiască iptables, ip6tables, arptables și ebtables). De asemenea, a fost publicat release-ul bibliotecii asociate libnftnl 1.2.3, care oferă un API de nivel scăzut pentru interacțiunea cu subsistemul nf_tables.

Pachetul nftables include componente ale filtrului de pachete care funcționează în spațiul utilizatorului, în timp ce, la nivel de nucleu, funcționarea este asigurată de subsistemul nf_tables, parte a nucleului Linux începând cu versiunea 3.13. La nivel de nucleu se oferă doar o interfață generală, independentă de protocolul specific, care asigură funcții de bază pentru extragerea datelor din pachete, executarea operațiunilor cu datele și gestionarea fluxului.

Regulile de filtrare și handler-ii specifici pentru protocoale sunt compilate în bytecode în spațiul utilizatorului, după care acest bytecode este încărcat în nucleu prin intermediul interfeței Netlink și executat în nucleu într-un mod special mașina virtuală, similar cu BPF (Berkeley Packet Filters). Această abordare permite reducerea semnificativă a dimensiunii codului de filtrare care funcționează la nivel de nucleu și mutarea tuturor funcțiilor de analiză a regulilor și logica de funcționare cu protocoalele în spațiul utilizatorului.

Modificări principale:

  • În optimizerul de reguli, apelat prin specificarea opțiunii „-o/—optimize”, au fost rezolvate problemele cu fuziunile regulilor, listele map- și set. # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; policy drop; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 } } # nft -o -c -f ruleset.nft Fuziune: ruleset.nft:4:3-52: ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ruleset.nft:5:3-52: ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 în: snat to ip saddr . tcp dport map { 1.1.1.1 . 8000 : 4.4.4.4 . 80, 2.2.2.2 . 8001 : 5.5.5.5 . 90 }
  • La unirea elementelor ethernet și vlan s-a asigurat definirea unei liste dinamice set, populată pe baza parametrilor căii pachetului. add table netdev x add chain netdev x y { type filter hook ingress device enp0s25 priority 0; } add set netdev x macset { typeof ether daddr . vlan id; flags dynamic,timeout; } add rule netdev x y update @macset { ether daddr . vlan id timeout 60s } add rule netdev x y ether saddr . vlan id { 0a:0b:0c:0d:0e:0f . 42, 0a:0b:0c:0d:0e:0f . 4095 } counter accept
  • A fost implementată afișarea regulilor cu liste map conținând măști în numele interfețelor. table inet filter { chain INPUT { iifname vmap { „eth0” : jump input_lan, „wg*” : jump input_vpn } } chain input_lan {} chain input_vpn {} }
  • Au fost eliminate regresiile care duceau la analizarea sintactică incorectă a regulilor corecte.
  • Au fost rezolvate problemele cu procesarea lentă și fuzionarea automată a listelor mari cu elemente care definesc intervale de valori.
  • S-a eliminat oprirea neașteptată la adăugarea elementelor într-o listă set incorectă.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster