nftables packet filter versione 1.0.1

È stato pubblicato il rilascio di packet filter nftables 1.0.1, che unifica le interfacce di filtraggio dei pacchetti per IPv4, IPv6, ARP e bridge di rete (mirato a sostituire iptables, ip6table, arptables ed ebtables). Le modifiche richieste per il funzionamento della versione 1.0.1 di nftables sono incluse nel kernel Linux 5.16-rc1.

Il pacchetto nftables include componenti di filtro dei pacchetti eseguiti nello spazio utente, mentre il lavoro a livello di kernel è fornito dal sottosistema nf_tables, che fa parte del kernel Linux sin dalla versione 3.13. Il livello del kernel fornisce solo un'interfaccia generica indipendente dal protocollo che fornisce funzioni di base per estrarre dati dai pacchetti, eseguire operazioni sui dati e controllo del flusso.

Le stesse regole di filtraggio e i gestori specifici del protocollo vengono compilati in bytecode dello spazio utente, dopodiché questo bytecode viene caricato nel kernel utilizzando l'interfaccia Netlink ed eseguito nel kernel in una macchina virtuale speciale simile a BPF (Berkeley Packet Filters). Questo approccio consente di ridurre significativamente la dimensione del codice di filtraggio in esecuzione a livello di kernel e di spostare tutte le funzioni delle regole di analisi e la logica di lavorare con i protocolli nello spazio utente.

Principali innovazioni:

  • Consumo di memoria ridotto durante il caricamento di elenchi di set e mappe di grandi dimensioni.
  • Il ricaricamento degli elenchi di set e mappe è stato accelerato.
  • L'output di tabelle e catene selezionate in set di regole di grandi dimensioni è stato accelerato. Ad esempio, il tempo di esecuzione del comando "nft list ruleset" per visualizzare un set di regole con 100mila righe è di 3.049 secondi e quando si emettono solo le tabelle nat e filter ("nft list table nat", "nft list table filter ”) si riduce a 1.969 e 0.697 secondi.
  • L'esecuzione delle query con l'opzione “--terse” è stata accelerata durante l'elaborazione di regole con elenchi di set e mappe di grandi dimensioni.
  • È possibile filtrare il traffico dalla catena "egress", che viene elaborato allo stesso livello del gestore di uscita nella catena netdev (egress hook), ovvero nella fase in cui il driver riceve un pacchetto dallo stack di rete del kernel. tabella netdev filtro { catena di uscita { tipo filtro hook dispositivi di uscita = { eth0, eth1 } priorità 0; meta priorità impostata mappa saddr ip { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • Consente la corrispondenza e la modifica dei byte nell'intestazione e nel contenuto di un pacchetto a un determinato offset. # nft aggiungi regola xy @ih,32,32 0x14000000 contatore # nft aggiungi regola xy @ih,32,32 imposta 0x14000000 contatore

Fonte: opennet.ru

Aggiungi un commento