nftables packet filter 1.0.2 release

Δημοσιεύτηκε η κυκλοφορία του φίλτρου πακέτων nftables 1.0.2, ενοποιώντας τις διεπαφές φιλτραρίσματος πακέτων για IPv4, IPv6, ARP και γέφυρες δικτύου (με στόχο την αντικατάσταση των iptables, ip6table, arptables και ebtables). Οι αλλαγές που απαιτούνται για να λειτουργήσει η κυκλοφορία του nftables 1.0.2 περιλαμβάνονται στον πυρήνα του Linux 5.17-rc.

Το πακέτο nftables περιλαμβάνει στοιχεία φίλτρου πακέτων που εκτελούνται στο χώρο του χρήστη, ενώ η εργασία σε επίπεδο πυρήνα παρέχεται από το υποσύστημα nf_tables, το οποίο αποτελεί μέρος του πυρήνα του Linux από την έκδοση 3.13. Το επίπεδο πυρήνα παρέχει μόνο μια γενική διεπαφή ανεξάρτητη από πρωτόκολλο που παρέχει βασικές λειτουργίες για την εξαγωγή δεδομένων από πακέτα, την εκτέλεση λειτουργιών δεδομένων και τον έλεγχο ροής.

Οι ίδιοι οι κανόνες φιλτραρίσματος και οι ειδικοί χειριστές πρωτοκόλλου μεταγλωττίζονται σε bytecode χώρου χρήστη, μετά τον οποίο αυτός ο bytecode φορτώνεται στον πυρήνα χρησιμοποιώντας τη διεπαφή Netlink και εκτελείται στον πυρήνα σε μια ειδική εικονική μηχανή που μοιάζει με BPF (Berkeley Packet Filters). Αυτή η προσέγγιση καθιστά δυνατή τη σημαντική μείωση του μεγέθους του κώδικα φιλτραρίσματος που εκτελείται σε επίπεδο πυρήνα και τη μεταφορά όλων των λειτουργιών των κανόνων ανάλυσης και της λογικής της εργασίας με πρωτόκολλα στο χώρο του χρήστη.

Βασικές καινοτομίες:

  • Προστέθηκε μια λειτουργία βελτιστοποίησης κανόνων, η οποία ενεργοποιήθηκε χρησιμοποιώντας τη νέα επιλογή "-o" ("--βελτιστοποίηση"), η οποία μπορεί να συνδυαστεί με την επιλογή "--check" για έλεγχο και βελτιστοποίηση των αλλαγών στο αρχείο του συνόλου κανόνων χωρίς να το φορτώσει πραγματικά . Η βελτιστοποίηση σάς επιτρέπει να συνδυάσετε παρόμοιους κανόνες, για παράδειγμα, τους κανόνες: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 αποδοχή meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 αποδοχή ip daddr .1.1.1.1 ip daddr .2.2.2.2 . .2.2.2.2 αποδοχή ip saddr 3.3.3.3 ip daddr XNUMX drop

    θα συνδυαστεί σε meta iifname . ip saddr. ip daddr { eth1 . 1.1.1.1. 2.2.2.3, eth1. 1.1.1.2. 2.2.2.5 } αποδοχή ip saddr. ip daddr vmap {1.1.1.1. 2.2.2.2 : αποδοχή, 2.2.2.2. 3.3.3.3 : πτώση }

    Παράδειγμα χρήσης: # nft -c -o -f ruleset.test Συγχώνευση: ruleset.nft:16:3-37: ip daddr 192.168.0.1 μετρητής αποδοχή ruleset.nft:17:3-37: ip daddr 192.168.0.2 μετρητής αποδοχή ruleset.nft:18:3-37: ip daddr 192.168.0.3 μετρητής αποδοχή σε: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } μετρητές πακέτα 0 byte 0 αποδοχή

  • Οι λίστες συνόλων υλοποιούν τη δυνατότητα καθορισμού επιλογών ip και tcp, καθώς και τμημάτων 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 }
  • Προστέθηκε υποστήριξη για επιλογές TCP fastopen, md5sig και mptcp.
  • Προστέθηκε υποστήριξη για τη χρήση του υποτύπου mp-tcp στις αντιστοιχίσεις: επιλογή tcp mptcp υποτύπος 1
  • Βελτιωμένος κώδικας φιλτραρίσματος από την πλευρά του πυρήνα.
  • Το Flowtable έχει πλέον πλήρη υποστήριξη για τη μορφή JSON.
  • Παρέχεται η δυνατότητα χρήσης της ενέργειας "απόρριψη" σε λειτουργίες αντιστοίχισης πλαισίων Ethernet. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 απόρριψη

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο