Δύο προθέματα /1 καλύπτουν ακριβώς τις ίδιες διευθύνσεις IPv4 με ένα μόνο /0, και αυτή η ισότητα ισχύει μόνο μέσα στη λίστα επιτρεπόμενων προθεμάτων του peer. Παύει να ισχύει τη στιγμή που το εργαλείο εγκατάστασης αποφασίζει πώς θα δρομολογήσει, επειδή το Linux wg-quick χειρίζεται ένα προεπιλεγμένο πρόθεμα ως ειδική περίπτωση και όχι ως αριθμητική. Ο ειδικός κλάδος εγκαθιστά ξεχωριστό πίνακα, δύο κανόνες πολιτικής, ένα σημάδι υποδοχής και ρυθμίσεις αντίστροφης διαδρομής που ένα ζεύγος μισών διαδρομών δεν λαμβάνει ποτέ. Όταν λοιπόν ένας μεσολαβητής ή ένα πρόγραμμα περιήγησης σταματήσει να λειτουργεί μετά την αλλαγή, τα προθέματα είναι το λιγότερο ενδιαφέρον κομμάτι της.

Η λίστα προθεμάτων δεν είναι όλη η διαμόρφωση

Το AllowedIPs κάνει δύο δουλειές ταυτόχρονα, και μόνο η μία αφορά την κάλυψη. Για το ίδιο το WireGuard η λίστα είναι δρομολόγηση κρυπτοκλειδιού: αποφασίζει ποιοι προορισμοί κρυπτογραφούνται προς ένα peer και ποιες διευθύνσεις προέλευσης επιτρέπεται να χρησιμοποιεί αυτό το peer. Για το wg-quick η ίδια λίστα λειτουργεί και ως προδιαγραφή διαδρομών, και η διαδρομή που παράγει εξαρτάται από τον κλάδο στον οποίο τυχαίνει να ταιριάζει η λίστα. Πανομοιότυπη κάλυψη σε δύο διαφορετικά σχήματα λίστας δεν λέει επομένως τίποτα για πανομοιότυπη κατάσταση υπολογιστή.

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

Τι προσθέτει ο προεπιλεγμένος κλάδος πέρα από μια διαδρομή

Μια εγγραφή /0 στέλνει το wg-quick στη διαδρομή προεπιλογής του: ένας ξεχωριστός πίνακας δρομολόγησης λαμβάνει την προεπιλεγμένη διαδρομή, ένας κανόνας πολιτικής στέλνει εκεί την ασήμαντη κίνηση, ένας δεύτερος κανόνας κρατά πιο συγκεκριμένες διαδρομές του κύριου πίνακα ως έγκυρες, και η διεπαφή λαμβάνει ένα σημάδι τείχους προστασίας στην υποδοχή της. Αυτό το σημάδι είναι ο φρουρός του βρόχου. Τα κρυπτογραφημένα δεδομένα που μεταφέρουν την κίνηση της σήραγγας φεύγουν με το σημάδι ρυθμισμένο, ώστε ο κανόνας που κατευθύνει όλα τα υπόλοιπα στη σήραγγα να μην καταπίνει τα δικά της πακέτα μεταφοράς.

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

Πού αποκλίνουν οι δύο διατάξεις

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

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

Διαβάστε τους κανόνες και τα σημάδια πριν αλλάξετε

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

ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints

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

Δοκιμάστε την απώλεια της σήραγγας πριν τη διάθεση

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

sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1

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

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