nftables packet filter 1.0.1 release

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

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

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

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

  • Μειωμένη κατανάλωση μνήμης κατά τη φόρτωση μεγάλων συνόλων και λιστών χαρτών.
  • Η επαναφόρτωση λιστών συνόλων και χαρτών έχει επιταχυνθεί.
  • Η έξοδος επιλεγμένων τραπεζιών και αλυσίδων σε μεγάλα σετ κανόνων έχει επιταχυνθεί. Για παράδειγμα, ο χρόνος εκτέλεσης της εντολής "nft list ruleset" για την εμφάνιση ενός συνόλου κανόνων με 100 χιλιάδες σειρές είναι 3.049 δευτερόλεπτα και κατά την έξοδο μόνο των πινάκων nat και φίλτρου ("nft list table nat", "nft list table filter ”) μειώνεται σε 1.969 και 0.697 δευτερόλεπτα.
  • Η εκτέλεση ερωτημάτων με την επιλογή "--terse" έχει επιταχυνθεί κατά την επεξεργασία κανόνων με μεγάλες λίστες συνόλων και χαρτών.
  • Είναι δυνατό να φιλτράρετε την κίνηση από την αλυσίδα "εξόδου", η οποία υποβάλλεται σε επεξεργασία στο ίδιο επίπεδο με τον χειριστή εξόδου στην αλυσίδα netdev (άγκιστρο εξόδου), π.χ. στο στάδιο που ο οδηγός λαμβάνει ένα πακέτο από τη στοίβα δικτύου πυρήνα. πίνακας netdev filter { chain egress { type filter hook egress devices = { eth0, eth1 } priority 0; meta priority set ip saddr map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • Επιτρέπει την αντιστοίχιση και την τροποποίηση των byte στην κεφαλίδα και τα περιεχόμενα ενός πακέτου σε μια δεδομένη μετατόπιση. # nft προσθήκη κανόνα xy @ih,32,32 0x14000000 μετρητής # nft προσθήκη κανόνα xy @ih,32,32 σύνολο 0x14000000 μετρητής

Πηγή: opennet.ru

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