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

Η αντιστοίχιση ονόματος επιζεί της διεπαφής

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

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

Διαβάστε την αλυσίδα πριν προσθέσετε κανόνες

Δείτε τι περιέχει τώρα το σύνολο κανόνων και πού θα καθόταν ένας νέος κανόνας, γιατί η σειρά καθορίζει το αποτέλεσμα.

nft list ruleset
nft -c -f /etc/nftables.conf

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

Οι διαδρομές, η μετάφραση και οι ροές έχουν άλλους ιδιοκτήτες

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

conntrack -L -s 10.20.0.0/24 | head
ip route show dev vpn0

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

Αποδεχτείτε ψυχρή εκκίνηση, απώλεια και ανάκαμψη

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

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

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