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

Έλεγχος 1: διαβάστε τον κανόνα με τον οποίο ταιριάζει ο πυρήνας

Ξεκινήστε από τον κανόνα πολιτικής και όχι από το τείχος προστασίας. Ο πυρήνας εξετάζει τους κανόνες με σειρά προτεραιότητας και το πρώτο ταίριασμα καθορίζει τον πίνακα. Διαβάστε την τιμή fwmark και τη μάσκα από τον ίδιο τον κανόνα και μετά επιβεβαιώστε ότι ένα πακέτο με το σημάδι που ορίσατε πράγματι ταιριάζει. Ένας κανόνας που περιμένει πλήρη τιμή 32 bit δεν θα ταιριάξει με πακέτο που φέρει μόνο ένα bit.

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

Δύο εντολές το ξεκαθαρίζουν: η λίστα κανόνων και η αναζήτηση διαδρομής για τον προορισμό σε αυτόν τον πίνακα.

Έλεγχος 2: σημάδι πακέτου ή σημάδι σύνδεσης

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

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

Αποφασίστε ποιο αντικείμενο κατέχει το σήμα δρομολόγησης και μετά ορίστε το στο σημείο όπου λαμβάνεται η απόφαση δρομολόγησης.

Έλεγχος 3: ποιος άλλος γράφει αυτό το σημάδι

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

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

Καταγράψτε τους συγγραφείς πριν προσθέσετε άλλον έναν.

Έλεγχος 4: η μάσκα καθορίζει τι κρατάτε

Ένα σημάδι είναι πεδίο 32 bit και οι μάσκες είναι ο τρόπος με τον οποίο πολλοί ιδιοκτήτες το μοιράζονται. Ο ορισμός τιμής με μάσκα διατηρεί τα bit που δεν σας ανήκουν· ο ορισμός ολόκληρου του πεδίου καταστρέφει τα bit όλων των άλλων. Διαβάστε τη μάσκα σε κάθε κανόνα που αγγίζει το πεδίο, συμπεριλαμβανομένων εκείνων που δεν γράψατε.

Τεκμηριώστε την κατανομή bit δίπλα στο σύνολο κανόνων.

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

Έλεγχος 5: επαληθεύστε με πραγματική ροή, όχι με αναζήτηση

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

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

Καταγράψτε το σημάδι, τη μάσκα και τον πίνακα σε ένα σημείο και η επόμενη αλλαγή γίνεται ελέγξιμη.

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