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

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

Επιβεβαιώστε τη σήραγγα πριν κυνηγήσετε τη διαδρομή

Το wg show εκτυπώνει τη διεπαφή, τον peer, το τελικό σημείο και την ηλικία της τελευταίας χειραψίας, και το ip addr show επιβεβαιώνει ότι η διεύθυνση υπάρχει. Μια πρόσφατη χειραψία σημαίνει ότι τα κλειδιά, το τελικό σημείο και η διαδρομή UDP δουλεύουν. Ό,τι είναι χαλασμένο βρίσκεται πιο κάτω: δρομολόγηση, φιλτράρισμα ή επίλυση ονομάτων.

Μετά ρωτήστε τον πυρήνα τι θα έκανε με έναν πραγματικό προορισμό αντί για έναν υποθετικό: ip route get 10.42.7.9. Η απάντηση ονομάζει τη διεπαφή εξόδου και τη διεύθυνση προέλευσης που θα έφερε το πακέτο. Όταν ονομάζει τον φυσικό προσαρμογέα, το πακέτο δεν μπαίνει ποτέ στη σήραγγα, όσο υγιής κι αν φαίνεται η χειραψία.

Το AllowedIPs είναι φίλτρο και λίστα διαδρομών

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

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

Ρωτήστε αν οι διαδρομές peer είναι ενεργοποιημένες καθόλου

Διαβάστε τη ρύθμιση πριν αλλάξετε οτιδήποτε: nmcli -f wireguard.peer-routes,ipv4.route-table connection show work-wg. Όταν το peer-routes δείχνει no, η υποστηριζόμενη επισκευή είναι το nmcli connection modify work-wg wireguard.peer-routes yes, ακολουθούμενο από επανασύνδεση. Το να προσθέσετε αντί γι’ αυτό μια στατική διαδρομή δουλεύει μέχρι την επόμενη ενεργοποίηση και μετά εξαφανίζεται ήσυχα. Αυτή η εξαφάνιση είναι το σημάδι: μια διαδρομή που επιστρέφει ως μυστήριο κάθε πρωί δεν εγκαθίσταται από το προφίλ.

Αν η επιλογή είναι ήδη ενεργοποιημένη, ελέγξτε αν το πρόθεμα ζει σε άλλον πίνακα με το ip route show table all | grep 10. Μια διαδρομή σε πίνακα που δεν είναι ο κύριος δεν λείπει, είναι απλώς αόρατη σε μια αναζήτηση που συμβουλεύεται μόνο τον κύριο πίνακα. Διορθώστε τη δρομολόγηση πολιτικής αντί να στοιβάξετε μια διπλή καταχώριση από πάνω.

Προσθέστε το πρόθεμα στη σύνδεση, όχι στο σύστημα που τρέχει

Στον επεξεργαστή συνδέσεων, η σελίδα WireGuard κρατά τον peer και τα AllowedIPs του, και η σελίδα IPv4 κρατά πρόσθετες διαδρομές. Μια διαδρομή που προστίθεται εκεί επιβιώνει από τις επανασυνδέσεις, γιατί ανήκει στο προφίλ. Στη γραμμή εντολών το ισοδύναμο είναι να προσαρτήσετε μια διαδρομή στη σύνδεση με τη μορφή κενού gateway και μετά να κατεβάσετε και να ανεβάσετε τη σύνδεση ώστε να εφαρμοστεί η αλλαγή.

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

Το διαχωρισμένο τούνελ το αποφασίζει η λίστα προθεμάτων

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

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

Ένας ιδιοκτήτης για τον πίνακα δρομολόγησης

Το wg-quick και ο NetworkManager πιστεύουν και τα δύο ότι κατέχουν τις διαδρομές της διεπαφής. Εισαγάγετε μια ρύθμιση γραμμένη για το wg-quick και μετά ξεκινήστε και την υπηρεσία wg-quick, και θα πάρετε διπλές ή αντικρουόμενες καταχωρίσεις των οποίων η συμπεριφορά εξαρτάται από το ποιο έτρεξε τελευταίο. Διαλέξτε έναν ιδιοκτήτη και αφαιρέστε τον άλλο: αν ο NetworkManager διαχειρίζεται τη σύνδεση, απενεργοποιήστε τη μονάδα wg-quick για αυτή τη διεπαφή και μην προσθέσετε ποτέ δεύτερο προφίλ για την ίδια συσκευή.

Όταν ο διαχωρισμός πρέπει να ακολουθεί φυσικό προσαρμογέα αντί για προορισμό, έχετε περάσει στη δρομολόγηση πολιτικής, και η δρομολόγηση πολιτικής χρειάζεται επίσης έναν μόνο συγγραφέα. Επαληθεύστε επαναλαμβάνοντας το ip route get και μετά φτάνοντας σε έναν host μέσα στο απομακρυσμένο πρόθεμα με κάτι που εκτυπώνει τη διεύθυνση προέλευσης που διάλεξε. Ελέγξτε το IPv6 και το DNS ξεχωριστά αν το προφίλ φέρει κάποιο από τα δύο.

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