nftables packet filter versione 0.9.9

A liberazione di packet filter nftables 0.9.9 hè stata publicata, unificatu l'interfacce di filtrazione di pacchetti per IPv4, IPv6, ARP è ponti di rete (distinatu à rimpiazzà iptables, ip6table, arptables è ebtables). À u listessu tempu, a liberazione di a libreria cumpagna libnftnl 1.2.0 hè stata publicata, chì furnisce una API di livellu bassu per interagisce cù u sottosistema nf_tables. I cambiamenti necessarii per a liberazione nftables 0.9.9 per travaglià sò inclusi in u kernel Linux 5.13-rc1.

U pacchettu nftables include cumpunenti di filtru di pacchettu chì funzionanu in u spaziu di l'utilizatori, mentre chì u livellu di u kernel hè furnitu da u subsistema nf_tables, chì hè stata parti di u kernel Linux da a versione 3.13. À u livellu di u kernel, hè furnita solu una interfaccia generica indipendente da u protokollu chì furnisce e funzioni basiche per l'estrazione di dati da i pacchetti, a realizazione di operazioni nantu à e dati è u cuntrollu di u flussu.

I reguli di filtrazione stessi è i gestori specifichi di u protocolu sò compilati in u bytecode di u spaziu di l'utilizatori, dopu chì stu bytecode hè caricatu in u kernel utilizendu l'interfaccia Netlink è eseguitu in u kernel in una macchina virtuale speciale chì s'assumiglia à BPF (Berkeley Packet Filters). Stu approcciu permette di riduce significativamente a dimensione di u codice di filtrazione chì corre à u livellu di u kernel è move tutte e funzioni di e regule di analisi è a logica di travaglià cù protokolli in u spaziu di l'utilizatori.

Innuvazioni principali:

  • A capacità di trasfurmà u processu di flowtable à u latu di l'adattatore di a rete hè stata implementata, attivata usendu a bandiera "offload". Flowtable hè un mecanismu per ottimisà u percorsu di redirezzione di u pacchettu, in quale u passaghju cumpletu di tutte e catene di processazione di regula hè appiicata solu à u primu pacchettu, è tutti l'altri pacchetti in u flussu sò trasmessi direttamente. table ip global { flowtable f { filtru di priorità di ingressu di ganciu + 1 dispusitivi = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward filtru di priorità; accetta a pulitica; protocolu ip { tcp, udp } flussu aghjunghje @f } catena post { type nat hook postrouting filtru di priorità; accetta a pulitica; oifname "wan" masquerade }}
  • Aghjunghje supportu per aghjunghje una bandiera di u pruprietariu à una tavola per assicurà l'usu esclusivu di a tavola da un prucessu. Quandu un prucessu finisci, a tavola assuciata cù questu hè automaticamente sguassata. L'infurmazione nantu à u prucessu hè visualizata in u dump di reguli in a forma di un cumentu: table ip x { # progname nft flags owner chain y { type filter hook input filter priority; accetta a pulitica; contatore di pacchetti 1 byte 309 } }
  • Supportu aghjuntu per a specificazione IEEE 802.1ad (VLAN stacking o QinQ), chì definisce un mezzu per rimpiazzà parechje tag VLAN in un unicu quadru Ethernet. Per esempiu, per verificà u tipu di quadru Ethernet esternu 8021ad è vlan id = 342, pudete aduprà a custruzzione ... ether type 802.1ad vlan id 342 per verificà u tipu esternu di frame Ethernet 8021ad/vlan id = 1, nidificatu 802.1 q/vlan id=2 è ulteriore incapsulazione di pacchetti IP: ... ether type 8021ad vlan id 1 vlan type 8021q vlan id 2 vlan type contatore ip
  • Aghjunghje supportu per a gestione di risorse utilizendu a gerarchia unificata cgroups v2. A diferenza chjave trà i cgroups v2 è v1 hè l'usu di una ghjerarchia di cgroups cumuni per tutti i tipi di risorse, invece di gerarchie separati per l'assignazione di risorse CPU, per regulà u cunsumu di memoria, è per I / O. Per esempiu, per verificà se l'antenatu di un socket à u primu livellu cgroupv2 currisponde à a maschera "system.slice", pudete aduprà a custruzzione: ... socket cgroupv2 level 1 "system.slice"
  • Aggiunta a capacità di verificà i cumpunenti di i pacchetti SCTP (a funziunalità necessaria per questu apparirà in u kernel Linux 5.14). Per esempiu, per verificà se un pacchettu cuntene un pezzu cù u tipu "data" è u campu "tipu": ... sctp chunk data esiste ... sctp chunk data type 0
  • L'esekzione di l'operazione di carica di regula hè stata accelerata da circa duie volte utilizendu a bandiera "-f". A pruduzzioni di a lista di e regule hè stata ancu accelerata.
  • Hè furnita una forma compatta per verificà se i bit di bandiera sò setti. Per esempiu, per verificà chì i bits di statutu snat è dnat ùn sò micca stabiliti, pudete specificà: ... ct status ! snat,dnat per verificà chì u bit di syn hè stallatu in a maschera di bit syn,ack: ... tcp flags syn / syn,ack per verificà chì i bit fin è primi ùn sò micca impostati in a maschera di bit syn,ack,fin,rst: ... tcp flags = fin,rst / syn,ack,fin,rst
  • Permette a chjave "verdettu" in set / map typeof definizioni: aghjunghje map xm { typeof iifname . protocolu ip th dport : verdict ;}

Source: opennet.ru

Add a comment