Τοποθετήστε έναν κανόνα αποδοχής σε λάθος θέση και συμπεριφέρεται σαν να μην υπάρχει κανόνας. Στο nftables η επιλογή μεταξύ insert και add καθορίζει σε ποια πλευρά ενός αναφερόμενου κανόνα θα πέσει η νέα δήλωση, και μια λαβή ονομάζει τον κανόνα στο ζωντανό σύνολο κανόνων και όχι τον αριθμό γραμμής του. Αν η τοποθέτηση είναι λάθος, το πακέτο φτάνει πρώτα στην απόρριψη.

Η παρακάτω σύγκριση χρησιμοποιεί έναν σταθερό ομότιμο και μία ανταλλαγή εξωτερικού ακροατή. Είναι σκόπιμα στενή· η αντικατάσταση ολόκληρης αλυσίδας είναι διαφορετική αλλαγή με διαφορετικό προφίλ κινδύνου.

Δύο τοποθετήσεις, δύο διαφορετικά αποτελέσματα

Το insert τοποθετεί έναν κανόνα πριν από τον αναφερόμενο κανόνα. Το add τον τοποθετεί μετά. Αν ο αναφερόμενος κανόνας είναι η τελική απόρριψη για τη ροή, αυτές οι δύο εντολές παράγουν αντίθετα αποτελέσματα παρόλο που το κείμενο του κανόνα είναι πανομοιότυπο.

Η παράλειψη θέσης έχει τη δική της προεπιλεγμένη συμπεριφορά, που είναι ένας ακόμη λόγος να μην αντιγράφετε εντολή από φόρουμ χωρίς να διαβάσετε σε τι αγκυρώνεται. Η άγκυρα είναι όλη η απόφαση. Γράψτε την επιδιωκόμενη πλευρά πριν πληκτρολογήσετε την εντολή. Τα insert και add απέχουν μία λέξη στο αρχείο.

Η τοποθέτηση είναι σχετική με έναν κανόνα σε συγκεκριμένη αλυσίδα. Η μετακίνηση της ίδιας δήλωσης σε άλλη αλυσίδα ή άλλη προτεραιότητα hook αλλάζει ποια πακέτα βλέπει, ακόμη και όταν η σύνταξη του κανόνα φαίνεται σωστή.

Μια λαβή προσδιορίζει κανόνα, όχι αριθμό γραμμής

Μια λαβή όπως 42 είναι αναγνωριστικό στην τρέχουσα κατάσταση του συνόλου κανόνων. Δεν είναι ο τεσσαρακοστός δεύτερος κανόνας και δεν είναι σταθερή μεταξύ διακομιστών, ανακατασκευών ή διαχειριστή που επαναφορτώνει τη διαμόρφωσή του.

Εντοπίστε την αλυσίδα και την πραγματική τελική απόρριψη πριν επιλέξετε την άγκυρα. Έπειτα επιβεβαιώστε τη λαβή σε αυτόν τον κανόνα στην ίδια λίστα που δείχνει την απόρριψη, ώστε ο αριθμός και ο κανόνας να διαβάζονται μαζί. Μια λαβή από παλιά λίστα μπορεί να ανήκει ήδη σε άλλον κανόνα. Διαβάστε τη ξανά στη συνεδρία που θα εφαρμόσει την αλλαγή.

iptables --version
nft -a list ruleset

Η έκδοση του iptables αναφέρει ποιο backend χρησιμοποιείται. Ένα σύνολο κανόνων iptables-nft και ένας ανεξάρτητα διαχειριζόμενος εγγενής πίνακας μπορούν να συνυπάρχουν, οπότε μια λίστα από ένα frontend δεν είναι αυτόματα η πλήρης εικόνα φιλτραρίσματος. Ελέγξτε και τις δύο όψεις πριν επιλέξετε αλυσίδα.

Βρείτε την αλυσίδα και τον κανόνα που πραγματικά απορρίπτει

Διαβάστε το hook εισόδου, την προτεραιότητα της αλυσίδας και τον κανόνα που απορρίπτει αυτή τη ροή ακροατή. Ένας πίνακας inet μπορεί να φέρει και τις δύο οικογένειες διευθύνσεων, αλλά ένας μεμονωμένος κανόνας μπορεί ακόμη να ταιριάζει μόνο με IPv4.

Πάρτε έναν εγκεκριμένο ομότιμο, χρησιμοποιώντας ως παράδειγμα το 198.51.100.25 από το εύρος τεκμηρίωσης. Ένα ελεγμένο εγγενές αρχείο θα μπορούσε να τοποθετήσει εξωτερική αποδοχή πριν από τη λαβή 42:

insert rule inet filter input handle 42 iifname "eth0" ip saddr 198.51.100.25 udp dport { 500, 4500 } counter accept

Αντικαταστήστε την οικογένεια, τον πίνακα, την αλυσίδα, τη λαβή, τη διεπαφή εισόδου και τον ομότιμο μετά τον έλεγχο. Το παράδειγμα χρησιμοποιεί τη μορφή τοποθέτησης με λαβή που τεκμηριώνεται για το nft 1.0.9, και ανήκει σε αρχείο εισόδου· η παράθεση αγκυλών είναι ξεχωριστό ζήτημα όταν η εντολή πληκτρολογείται διαδραστικά.

Κρατήστε τον ιδιοκτήτη της διαμόρφωσης σαφή. Ένας διαχειριστής που ανακατασκευάζει τους κανόνες του μπορεί να αντικαταστήσει μια αλλαγή χρόνου εκτέλεσης, και ένα σενάριο εκκίνησης που κωδικοποιεί σταθερά μια παρωχημένη λαβή είτε θα αποτύχει είτε θα προσκολληθεί στον λάθος κανόνα.

Η αποδοχή έχει εύρος, η απόρριψη είναι τελική

Μια ετυμηγορία αποδοχής τερματίζει την αξιολόγηση στην τρέχουσα διαδρομή της, αλλά μια μεταγενέστερη εφαρμόσιμη βασική αλυσίδα μπορεί ακόμη να απορρίψει το πακέτο. Μια ετυμηγορία απόρριψης είναι τελική. Γι’ αυτό ένας αυξανόμενος μετρητής αποδοχών δεν αποδεικνύει ότι η ροή πέτυχε.

Εξετάστε όλες τις σχετικές προτεραιότητες hook αντί για μία αλυσίδα μεμονωμένα. Ένα πακέτο μπορεί να περάσει φίλτρο εισόδου και να απορριφθεί από το hook άλλου πίνακα σε διαφορετική προτεραιότητα. Καταγράψτε κάθε βασική αλυσίδα που μπορεί να δει τη ροή.

Ο κανόνας αυτός καλύπτει μόνο την ανταλλαγή του εξωτερικού ακροατή. Το ESP με ενθυλάκωση μεταφοράς, το εγγενές ESP, οι ομότιμοι IPv6 και η αποκρυπτογραφημένη κίνηση μέσα στη σήραγγα χρειάζονται όλα δικές τους πολιτικές. Δεν είναι πλήρες τείχος προστασίας VPN τοποθεσίας.

Ελέγξτε το αρχείο και μετά επαληθεύστε το ζωντανό αποτέλεσμα

Εκτελέστε έλεγχο σύνταξης και συναλλαγής στο ελεγμένο αρχείο πριν το εφαρμόσετε. Η λειτουργία ελέγχου αναφέρει αν το nft μπορεί να αναλύσει και να προετοιμάσει την αλλαγή· δεν την εφαρμόζει και δεν αποδεικνύει ότι άλλο hook θα επιτρέψει το πακέτο. Το αρχείο παραμένει πρόταση μέχρι να το εφαρμόσει ο ιδιοκτήτης:

nft -c -f reviewed-vpn-rule.nft

Εφαρμόστε μέσω της ελεγχόμενης διαδικασίας του ιδιοκτήτη και διατηρήστε πρόσβαση ανάκτησης. Αν ο κανόνας είναι λάθος, η απόρριψη που προσπαθούσατε να προηγηθείτε μπορεί να κόψει και τη διαδρομή που χρησιμοποιείτε για να τη διορθώσετε.

Μετά την αλλαγή, παρατηρήστε μια νέα επιτρεπόμενη απόπειρα ομότιμου και ελέγξτε ότι πηγές εκτός του εγκεκριμένου ομότιμου εξακολουθούν να απορρίπτονται. Μεταφέρετε τον μόνιμο κανόνα στον διαχειριστή που κατέχει το σύνολο κανόνων, γιατί οι λαβές χρόνου εκτέλεσης εντοπίζουν τρέχοντα αντικείμενα αντί να τα αναγνωρίζουν μεταξύ εκκινήσεων.

Σχετικά άρθρα