Το AllowedIPs είναι λίστα δρομολόγησης, όχι κανόνας τείχους προστασίας
Επιλέγει ομότιμο για εξερχόμενη κίνηση και επικυρώνει τις εισερχόμενες πηγές. Δεν είναι λίστα πρόσβασης, και η απενεργοποίηση της διαχείρισης διαδρομών δεν διορθώνει ένα διαχωρισμένο τούνελ.
Οι περισσότεροι διαβάζουν το AllowedIPs ως λίστα αδειών, το σύνολο των διευθύνσεων που επιτρέπεται να συνδεθούν σε έναν ομότιμο, περίπου σαν κανόνας τείχους προστασίας γραμμένος για ένα τούνελ. Δεν είναι αυτό. Το πεδίο είναι πίνακας δρομολόγησης που λειτουργεί και στις δύο κατευθύνσεις: επιλέγει ομότιμο για ένα εξερχόμενο πακέτο και επικυρώνει την πηγή ενός εισερχόμενου. Αν το διαβάσει κανείς ως λίστα πρόσβασης, παράγει ρυθμίσεις που δρομολογούν κίνηση που κανείς δεν ζήτησε.
Ένα πεδίο, δύο αναγνώστες: επιλογή εξερχομένου και έλεγχος πηγής
Στον πελάτη, τα προθέματα αποφασίζουν ποιοι προορισμοί ταξιδεύουν προς αυτόν τον ομότιμο και ποιοι μένουν στο συνηθισμένο δίκτυο. Μια εγγραφή για 0.0.0.0/0 επομένως πιάνει κάθε προορισμό IPv4, και γι' αυτό η εισαγωγή προφίλ πλήρους τούνελ στέλνει τη συνηθισμένη περιήγηση μέσω της απομακρυσμένης μηχανής. Οι στενές εγγραφές κάνουν το αντίθετο: δρομολογούν μόνο τα δίκτυα που καταχωρίσατε και αφήνουν όλα τα άλλα εκεί που ήταν. Η ενότητα δρομολόγησης κρυπτοκλειδιών της τεκμηρίωσης του WireGuard αναφέρει και τα δύο έργα σε ένα σημείο: την επιλογή εξερχόμενου ομοτίμου και την επικύρωση της εισερχόμενης πηγής.
Στον διακομιστή, το ίδιο πεδίο περιγράφει ποιες διευθύνσεις πηγής επιτρέπεται να χρησιμοποιεί κάθε ομότιμος. Πρόκειται για κρυπτογραφικό έλεγχο και όχι φίλτρο πακέτων: ένα πακέτο του οποίου η εσωτερική πηγή δεν ταιριάζει με τη λίστα του ομοτίμου απορρίπτεται μέσα στο WireGuard πριν το δει οποιοδήποτε τείχος προστασίας του κεντρικού υπολογιστή. Και τα δύο έργα μοιράζονται μία λίστα, και γι' αυτό ακριβώς μια λίστα αντιγραμμένη από αλλού συμπεριφέρεται λάθος σε ένα σημείο που δεν εξετάσατε.
Το μπλοκ του πελάτη είναι εκεί όπου αρχίζει η περισσότερη από αυτή τη σύγχυση. Ένα διαχωρισμένο τούνελ ονομάζει τα απομακρυσμένα δίκτυα, και ένα πλήρες τούνελ είναι το ίδιο πεδίο με ένα προεπιλεγμένο πρόθεμα:
[Peer]
# split tunnel: only these networks
AllowedIPs = 10.77.0.0/24, 192.168.30.0/24
[Peer]
# full tunnel: everything, both families
AllowedIPs = 0.0.0.0/0, ::/0
Και οι δύο μορφές είναι πλήρεις από μόνες τους, και είναι εναλλακτικές και όχι βήματα. Η πρώτη στέλνει μόνο αυτά τα δύο δίκτυα μέσα από το τούνελ· η δεύτερη στέλνει κάθε προορισμό, με την εγγραφή ::/0 να προσθέτει IPv6 στην προεπιλογή IPv4. Όποια κι αν επιλέξετε, αυτά τα προθέματα είναι ολόκληρη η απόφαση δρομολόγησης για αυτόν τον ομότιμο μόλις το wg-quick αρχίσει να εγκαθιστά διαδρομές.
Ο κόμβος χρειάζεται διαφορετική λίστα
Ένας κόμβος καταγράφει τη διεύθυνση τούνελ κάθε πελάτη ως πρόθεμα κεντρικού υπολογιστή, μαζί με κάθε δίκτυο που βρίσκεται πραγματικά πίσω από αυτόν τον πελάτη. Η αντιγραφή της ευρείας λίστας ενός πελάτη σε κάθε ομότιμο του κόμβου λέει στον κόμβο ότι πολλοί ομότιμοι μπορούν να έχουν τις ίδιες διευθύνσεις ως πηγή, και αυτό δεν είναι σχέδιο διευθύνσεων. Το πεδίο Endpoint ανήκει σε εντελώς άλλο επίπεδο: ονομάζει την εξωτερική διεύθυνση και θύρα του ομοτίμου, ποτέ έναν προορισμό μέσα στο τούνελ.
[Peer]
# laptop: tunnel address 10.77.0.2, office LAN behind it
AllowedIPs = 10.77.0.2/32, 192.168.30.0/24
Το πρόθεμα κεντρικού υπολογιστή φέρει τη διεύθυνση τούνελ και το πρόθεμα δικτύου φέρει ό,τι βρίσκεται πίσω από τον πελάτη, και τα δύο χρειάζονται. Χωρίς το πρόθεμα κεντρικού υπολογιστή ο κόμβος δεν μπορεί να επιστρέψει την ίδια κίνηση του πελάτη, και χωρίς το πρόθεμα δικτύου το LAN πίσω του μένει απρόσιτο· ένας ομότιμος χωρίς τίποτα πίσω του παίρνει μόνο το πρόθεμα κεντρικού υπολογιστή.
Η παράλειψη εγκατάστασης διαδρομών αφήνει κενό
Το wg-quick, το βοηθητικό που σηκώνει μια διεπαφή από ένα αρχείο ρυθμίσεων, εγκαθιστά διευθύνσεις διεπαφής και διαδρομές ως μέρος αυτής της εργασίας. Η ρύθμιση Table = off λέει στο βοηθητικό να παραλείψει την εργασία διαδρομών, που δεν εγκαθιστά αντικαταστάσεις και δεν κάνει το ιδιωτικό δίκτυο προσβάσιμο. Όταν οι αυτόματες διαδρομές κάνουν ήδη τη δουλειά, η ονομασία των προθεμάτων που χρειάζεστε είναι η σαφέστερη ρύθμιση. Το να απενεργοποιήσετε τη διαχείριση διαδρομών και να αφήσετε την αντικατάσταση άγραφη δεν είναι σχεδιασμός, είναι παράλειψη.
Το βασικό εργαλείο wg συμπεριφέρεται διαφορετικά: ρυθμίζει τη διεπαφή και δεν αγγίζει ποτέ διαδρομές, οπότε μια εγκατάσταση χτισμένη απευθείας πάνω του χρειάζεται δικές της εντολές διαδρομών. Οδηγίες γραμμένες για ένα εργαλείο μπορεί να φαίνονται λάθος όταν ακολουθούνται με το άλλο. Ένα επιτυχές ping είναι επίσης αδύναμη απόδειξη, αφού δοκιμάζει μία διαδρομή και όχι κάθε διαδρομή εφαρμογής που χρειάζεστε.
Το DNS και το IPv6 αποφασίζονται χωριστά
Ελέγξτε τη διεύθυνση του διακομιστή DNS που διαφημίζει το τούνελ και επιβεβαιώστε ότι υπάρχει διαδρομή προς αυτή τη διεύθυνση μέσω των προθεμάτων που επιλέξατε. Μια ρύθμιση μεταφραστή δεν κάνει τον μεταφραστή προσβάσιμο, και το στένεμα ενός τούνελ μπορεί να αφαιρέσει ήσυχα τη διαδρομή που οδηγούσε εκεί. Εξετάστε το IPv6 και χωριστά, γιατί ένα σωστό διαχωρισμένο IPv4 δεν λέει τίποτα για μια προεπιλεγμένη διαδρομή IPv6 που εξακολουθεί να δείχνει στη φυσική σύνδεση. Τρεις χωριστές αποφάσεις μπορούν να αλλάξουν ταυτόχρονα όταν επεξεργάζεστε ένα μπλοκ ομοτίμου.
Στη συνέχεια ανοίξτε έναν ιδιωτικό πόρο και έναν συνηθισμένο ιστότοπο από μια γνωστή αρχική ρύθμιση. Αν ο πόρος απαντά και η περιήγηση εξακολουθεί να βγαίνει από την τοπική σύνδεση, ο διαχωρισμός κάνει αυτό που ζητήσατε. Αν η περιήγηση σπάσει την ίδια στιγμή, το τούνελ πήρε την προεπιλεγμένη διαδρομή και η λίστα προθεμάτων είναι το σημείο που πρέπει να κοιτάξετε.