Δύο peers του WireGuard μοιράζονται ένα εύρος: ποιος παίρνει το πακέτο
Τα επικαλυπτόμενα εύρη επιλύονται από το πιο συγκεκριμένο πρόθεμα, όχι από τη σειρά. Ελέγξτε πρώτα τη διαδρομή και μετά τη λίστα peers, πριν διευρύνετε οτιδήποτε.
Δύο peers απαριθμούν εύρη που εφάπτονται, και η κίνηση φτάνει στον λάθος. Τίποτα δεν έχει καταστραφεί: το WireGuard επιλέγει peer αντιστοιχίζοντας τον προορισμό με τα διαμορφωμένα εύρη, και κερδίζει η πιο συγκεκριμένη αντιστοίχιση. Πριν διευρύνετε οτιδήποτε, αποφασίστε ποιος peer πρέπει να κατέχει ποιο πρόθεμα.
Το μακρύτερο πρόθεμα κερδίζει μέσα στο WireGuard
Κάθε καταχώριση peer φέρει ένα σύνολο προθεμάτων προορισμού. Όταν ένα πακέτο δρομολογείται στη διεπαφή, η υλοποίηση αναζητά την καταχώριση με το πιο συγκεκριμένο ταιριαστό πρόθεμα — τον ίδιο κανόνα που εφαρμόζει ένας πίνακας δρομολόγησης. Έτσι ένα /24 νικά ένα /16 που το περιέχει, και ο στενότερος peer λαμβάνει την κίνηση.
Οι ρυθμίσεις road-warrior το χρησιμοποιούν σκόπιμα. Ένας peer κατέχει ένα ευρύ εύρος για μια τοποθεσία, και μεμονωμένοι hosts αποκόπτονται με καταχωρίσεις /32 που ανήκουν σε άλλους peers. Το μοτίβο λειτουργεί επειδή οι αποκοπές είναι πιο συγκεκριμένες, όχι λόγω της σειράς.
Καταγράψτε την ιδιοκτησία ως πίνακα προθέματος και peer. Αν δύο καταχωρίσεις περιγράφουν το ίδιο πρόθεμα, η διαμόρφωση δεν εκφράζει πλέον πρόθεση, εκφράζει αγώνα δρόμου.
Το λειτουργικό σύστημα επιλέγει πρώτα τη διεπαφή
Το WireGuard επιλέγει μόνο μεταξύ των peers σε μία διεπαφή. Ποια διεπαφή λαμβάνει το πακέτο αποφασίζεται νωρίτερα, από τον πίνακα δρομολόγησης του host, και μια δεύτερη προεπιλεγμένη διαδρομή ή μια παρωχημένη διαδρομή μπορεί να στείλει την κίνηση κάπου όπου η λίστα peers δεν τη βλέπει ποτέ. Γι’ αυτό μια διάγνωση σε επίπεδο peer μπορεί να είναι σωστή και παρ’ όλα αυτά να μην εξηγεί την αποτυχία. Ελέγξτε τη διαδρομή προς τον προορισμό πριν διαβάσετε τη διαμόρφωση του peer, γιατί μια διαδρομή που δείχνει στη φυσική διεπαφή παρακάμπτει όλο το ερώτημα.
Το εργαλείο συνήθως εγκαθιστά αυτές τις διαδρομές από τα εύρη των peers, που σημαίνει ότι μια αλλαγή στη λίστα ενός peer μπορεί να ανακατευθύνει σιωπηλά κίνηση που ανήκε σε άλλον. Η επεξεργασία peer είναι επομένως αλλαγή δρομολόγησης μεταμφιεσμένη. Εξετάστε και τα δύο μαζί, αλλιώς θα διορθώσετε το ένα και θα σπάσετε το άλλο.
Τα εισερχόμενα πακέτα ελέγχονται κατά πηγή
Η λίστα ευρών επιτελεί διπλό ρόλο. Για την εξερχόμενη κίνηση επιλέγει peer κατά προορισμό, και για την εισερχόμενη κίνηση εξουσιοδοτεί μια διεύθυνση πηγής. Ένα πακέτο που φτάνει από διεύθυνση εκτός των ευρών αυτού του peer απορρίπτεται πριν το δει οποιοδήποτε τείχος προστασίας.
Αυτή η ασυμμετρία περνά εύκολα απαρατήρητη όταν διαβάζετε τη μία πλευρά της διαμόρφωσης. Ένας peer που μπορεί να φτάσει σε ένα υποδίκτυο δεν επιτρέπεται γι’ αυτό να στέλνει από αυτό το υποδίκτυο, και οι δύο κατευθύνσεις επιβάλλονται από διαφορετικούς ελέγχους.
Η στενή ιδιοκτησία πηγής το μετατρέπει σε πλεονέκτημα. Δώστε σε κάθε peer ένα /32 για τη δική του διεύθυνση και το τείχος προστασίας πιο κάτω έχει μια αξιόπιστη πηγή για αντιστοίχιση, αντί για ένα εύρος σε επίπεδο ομάδας που θα μπορούσε να διεκδικήσει οποιοδήποτε μέλος.
Τα διπλά εύρη δεν είναι failover
Η ανάθεση του ίδιου προθέματος σε δύο peers δεν δημιουργεί εξισορροπητή φορτίου ούτε εφεδρική διαδρομή. Δεν υπάρχει έλεγχος υγείας ούτε συγγένεια συνεδρίας: η καταχώριση που κερδίζει καθορίζεται από την εσωτερική σειρά της υλοποίησης, που δεν είναι συμβόλαιο πάνω στο οποίο πρέπει να σχεδιάζετε. Αν χρειάζεστε εναλλακτικές εξόδους, εκφράστε τις εκεί όπου ορίζεται η επιλογή. Μια πολιτική δρομολόγησης, μια μετρική ή ένα ζεύγος διακριτών προθεμάτων με τεκμηριωμένο ιδιοκτήτη το καθένα παράγουν συμπεριφορά που μπορείτε να προβλέψετε και να δοκιμάσετε.
Η διεύρυνση ενός εύρους για να διορθωθεί μια άσχετη αποτυχία είναι το άλλο συνηθισμένο λάθος. Απομακρύνει την κίνηση από τον peer που λειτουργούσε, και το νέο σύμπτωμα φτάνει πριν γίνει κατανοητό το παλιό.
Επαληθεύστε την επιλογή πριν επεξεργαστείτε
Τρεις εντολές απαντούν στα τρία ερωτήματα με σειρά. Η πρώτη απαριθμεί τα εύρη που διεκδικεί κάθε peer. Η δεύτερη δείχνει ποια διεπαφή θα χρησιμοποιούσε ο host για έναν προορισμό. Η τρίτη δείχνει τη ζωντανή κατάσταση των peers αφού έχει κυλήσει κίνηση.
wg show wg0 allowed-ips ip route get 10.66.8.20 wg show wg0 ip rule show
Εκτελέστε τις πριν και μετά από μια αλλαγή και συγκρίνετε. Αν η έξοδος της διαδρομής άλλαξε αλλά η κίνηση φτάνει ακόμη στον λάθος peer, οι λίστες προθεμάτων επικαλύπτονται με τρόπο που δεν έχετε καταγράψει ακόμη. Αν η έξοδος της διαδρομής δεν άλλαξε, η διαμόρφωση του peer δεν ήταν ποτέ αυτό που συμβουλεύτηκε.
Καταγράψτε στο ticket τον προορισμό, τη διεπαφή που επιλέχθηκε και τον peer που επιλέχθηκε. Αυτή η τριάδα κάνει μια επικάλυψη ελέγξιμη αργότερα και είναι πολύ πιο χρήσιμη από ένα στιγμιότυπο οθόνης της διαμόρφωσης.