Rilascio del filtro di pacchetti nftables 1.0.2

È stato pubblicato il rilascio del filtro pacchetti nftables 1.0.2, che unifica le interfacce di filtraggio dei pacchetti per IPv4, IPv6, ARP e ponti di rete (destinato a sostituire iptables, ip6tables, arptables ed ebtables). Le modifiche necessarie per il funzionamento della versione 1.0.2 di nftables sono incluse nel kernel Linux 5.17-rc.

Il pacchetto nftables include componenti del filtro pacchetti che operano nello spazio utente, mentre a livello kernel, il funzionamento è garantito dal sottosistema nf_tables, incluso nel kernel Linux dalla versione 3.13. A livello kernel viene fornita solo un'interfaccia generica, non dipendente dal protocollo specifico, che offre funzionalità di base per l'estrazione dei dati dai pacchetti, l'esecuzione di operazioni sui dati e la gestione del flusso.

Le regole di filtraggio e i gestori specifici per i protocolli vengono compilati in bytecode nello spazio utente, dopo di che questo bytecode viene caricato nel kernel tramite l'interfaccia Netlink e viene eseguito nel kernel in un'area speciale. macchina virtuale, che ricorda i BPF (Berkeley Packet Filters). Questo approccio consente di ridurre significativamente la dimensione del codice di filtraggio che opera a livello di kernel, spostando tutte le funzioni di analisi delle regole e la logica di gestione dei protocolli nello spazio utente.

Novità principali:

  • È stata aggiunta una modalità di ottimizzazione delle regole, attivabile tramite la nuova opzione «-o» («—optimize»), che può essere combinata con l'opzione «—check» per verificare e ottimizzare le modifiche nel file con il set di regole senza effettuare un caricamento reale. L'ottimizzazione consente di unire regole simili, ad esempio, le regole: 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 accept ip saddr 2.2.2.2 ip daddr 3.3.3.3 drop

    verranno unite in meta iifname . ip saddr . ip daddr { eth1 . 1.1.1.1 . 2.2.2.3, eth1 . 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 }

    Esempio di utilizzo: # nft -c -o -f ruleset.test Fusione: 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 in: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } counter packets 0 bytes 0 accept

  • Nei set-list puoi specificare opzioni ip e tcp, oltre ai chunk sctp: set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } chain c5 { ip option ra value @s5 accept } chain c7 { sctp chunk init num-inbound-streams @s7 accept }
  • Aggiunta la supporto per le opzioni TCP fastopen, md5sig e mptcp.
  • Aggiunta la supporto all'uso nei confronti del sotto-tipo mp-tcp: tcp option mptcp subtype 1
  • Migliorato il codice di filtraggio operante a livello del kernel.
  • Per flowtable implementata piena supporto al formato JSON.
  • È ora possibile utilizzare l'azione «reject» nelle operazioni di corrispondenza degli frame Ethernet. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 reject

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster