Rilascio del filtro per pacchetti nftables 1.0.2

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

Nel pacchetto nftables sono inclusi componenti del filtro a pacchetti che operano nello spazio utente, mentre a livello di kernel l'operazione è gestita dal sottosistema nf_tables, incluso nel kernel di Linux a partire dalla versione 3.13. A livello di kernel viene fornito solo un'interfaccia generale, indipendente dal protocollo specifico e che offre funzioni 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, dopodiché questo bytecode viene caricato nel kernel tramite l'interfaccia Netlink e viene eseguito nel kernel in una sezione macchina virtuale, simile a BPF (Berkeley Packet Filters). Questo approccio consente di ridurre significativamente la dimensione del codice di filtraggio che opera a livello di kernel e di spostare tutte le funzioni di parsing delle regole e di logica di operazione con i 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 delle regole senza il caricamento effettivo. 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 pacchetti 0 byte 0 accept

  • Nelle liste set è stata implementata la possibilità di specificare opzioni ip e tcp, nonché 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 }
  • È stato aggiunto il supporto per le opzioni TCP fastopen, md5sig e mptcp.
  • È stato aggiunto il supporto per l'utilizzo nei match del sottotipo mp-tcp: tcp option mptcp subtype 1
  • Il codice di filtraggio che gira nel kernel è stato migliorato.
  • Per flowtable è stata implementata un supporto completo per il formato JSON.
  • È stata fornita la possibilità di utilizzare l'azione «reject» nelle operazioni di matching dei 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