Το WireGuard λειτουργεί στα δεδομένα κινητής αλλά όχι στο ίδιο wifi
Ένα αίτημα από μέσα στο LAN προς τη δημόσια διεύθυνση του δρομολογητή ακολουθεί άλλη διαδρομή από ένα αίτημα μέσω δεδομένων κινητής. Δοκιμάστε έξω και μετά επιλέξτε τοπική διαδρομή.
Το τούνελ ανεβαίνει στα δεδομένα κινητής και μετά μένει στο συνδέεται στο σπίτι, με το ίδιο προφίλ, το ίδιο κλειδί peer και καμία αλλαγή διαμόρφωσης ενδιάμεσα. Η διαφορά είναι στο ταξίδι: ένα αίτημα από μέσα στο LAN προς τη δημόσια διεύθυνση του δρομολογητή δεν είναι το ίδιο ταξίδι με ένα αίτημα που φτάνει από το διαδίκτυο. Οι περισσότερες οικιακές πύλες είτε δεν υλοποιούν καθόλου την επιστροφή είτε την υλοποιούν μόνο για ορισμένα πρωτόκολλα. Αυτό κάνει το σύμπτωμα να μοιάζει με σπασμένο κλειδί ενώ τίποτα στο κλειδί δεν έχει μετακινηθεί. Προσδιορίστε ποια διαδρομή απέτυχε πριν αγγίξετε κλειδί, προώθηση θύρας ή προφίλ πελάτη.
Μία διεύθυνση, δύο διαφορετικές διαδρομές
Απ’ έξω, ένα πακέτο φτάνει στη δημόσια διεύθυνση του δρομολογητή και ένας κανόνας προώθησης θύρας το παραδίδει στον ακροατή WireGuard στον εσωτερικό υπολογιστή. Από μέσα, ο πελάτης καλεί την ίδια δημόσια διεύθυνση, οπότε το πακέτο φεύγει από τον πελάτη, φτάνει στον δρομολογητή και πρέπει να γυρίσει πίσω προς το LAN. Σε αυτή ακριβώς την επιστροφή χωρίζουν οι δύο διαδρομές, γιατί ο δρομολογητής πρέπει να μεταφράσει μια ροή που ταυτόχρονα βγαίνει και ξαναμπαίνει από την ίδια διεπαφή. Πολλές υλοποιήσεις την πετούν αντί να τη μεταφράσουν, και ο πελάτης τότε περιμένει μια χειραψία που δεν στάλθηκε ποτέ.
Αυτή η συμπεριφορά συνήθως ονομάζεται NAT loopback ή hairpinning και ανήκει στον δρομολογητή, όχι στο WireGuard· το RFC 4787 εκθέτει τις περιπτώσεις μετάφρασης στις οποίες μια πύλη μπορεί ή δεν μπορεί να το υποστηρίξει. Το ίδιο το WireGuard δεν έχει άποψη για τη διαδρομή, γιατί βλέπει μόνο πακέτα που φτάνουν στη διεπαφή του. Όταν ο δρομολογητής πετά τη ροή, ο δαίμονας δεν λαμβάνει ποτέ τίποτα, ο πελάτης αναφέρει λήξη χρόνου χειραψίας και το αρχείο καταγραφής του διακομιστή μένει κενό. Ένα κενό αρχείο είναι επομένως ένδειξη για το πού σταμάτησε το πακέτο, όχι απόδειξη ότι ο διακομιστής έπεσε. Είναι και ο λόγος που μια επανεγκατάσταση δεν αλλάζει τίποτα.
Μετράει και το αντίστροφο: ένα αρχείο καταγραφής διακομιστή που δείχνει απόπειρα χειραψίας από τη διεύθυνση του LAN αποδεικνύει ότι το πακέτο έφτασε και η διαδρομή είναι εντάξει, κάτι που μεταφέρει την έρευνα σε κλειδιά και επιτρεπόμενες διευθύνσεις. Διαβάστε το αρχείο για αυτό που αποδεικνύει, όχι για αυτό που ελπίζατε να δείτε.
Αναπαράγετε πρώτα, μετά αλλάξτε
Δοκιμάστε από εξουσιοδοτημένο εξωτερικό δίκτυο με την ίδια συσκευή και το ίδιο προφίλ και μετά επαναλάβετε τη δοκιμή μέσα στο LAN χωρίς να επεξεργαστείτε τίποτα. Μια ολοκληρωμένη χειραψία έξω και ένας πελάτης που μέσα δεν αφήνει ποτέ τη συσκευή αναπαράγουν τη συνθήκη αντί να τη μαντεύουν. Και οι δύο απόπειρες πρέπει να χρησιμοποιούν το ίδιο προφίλ, αλλιώς η σύγκριση δεν αποδεικνύει τίποτα.
Έπειτα κοιτάξτε σε τι αναλύεται το όνομα του τελικού σημείου για αυτή τη συσκευή. Οι τρεις επόμενες εντολές δείχνουν επίσης ποια διεύθυνση κάλεσε στην πραγματικότητα ο πελάτης:
wg show wg0 endpoints
dig +short vpn.example.net A
resolvectl query vpn.example.netΗ πρώτη εντολή αναφέρει το τελικό σημείο που χρησιμοποιεί η διεπαφή τώρα, και οι άλλες δύο δείχνουν σε τι αναλύεται το όνομα σε αυτό το μηχάνημα. Ένας πελάτης που καλεί δημόσια διεύθυνση ενώ βρίσκεται στο ίδιο δίκτυο με τον διακομιστή χρησιμοποιεί τη διαδρομή hairpin. Ένας πελάτης που καλεί τη διεύθυνση του LAN δεν το κάνει, και μια αποτυχία εκεί ανήκει σε άλλη έρευνα. Αυτή η διάκριση κρίνει αν η επόμενη ενότητα ισχύει καν.
Υποστηριζόμενοι τρόποι για να φτάσετε σε κοντινό διακομιστή
Η πιο καθαρή διάταξη είναι μια απάντηση διαιρεμένου ορίζοντα: το δημόσιο όνομα αναλύεται στη δημόσια διεύθυνση για το διαδίκτυο και στη διεύθυνση LAN του διακομιστή για τους πελάτες μέσα. Το προφίλ κρατά ένα όνομα τελικού σημείου και ο επιλυτής επιλέγει τη διαδρομή. Αυτό απαιτεί έλεγχο της εσωτερικής απάντησης DNS, που ένας οικιακός δρομολογητής συνήθως προσφέρει και ένας οργανισμός μπορεί να ρυθμίσει σκόπιμα. Χωρίς αυτόν τον έλεγχο, οι επιλογές που μένουν είναι μια λειτουργία δρομολογητή ή ένα δεύτερο προφίλ.
Η λειτουργία του δρομολογητή είναι η αντανάκλαση: η πύλη μεταφράζει τη ροή από μέσα προς έξω και τη στέλνει πίσω μέσα. Όπου λειτουργεί δεν απαιτεί αλλαγή πελάτη, και όπου δεν λειτουργεί καμία ρύθμιση πελάτη δεν τη σώζει. Δοκιμάστε τη παρακολουθώντας το αρχείο καταγραφής του διακομιστή κατά τη διάρκεια μιας εσωτερικής απόπειρας αντί να διαβάζετε τη λίστα λειτουργιών του δρομολογητή.
Η επεξεργασία του προφίλ σε ιδιωτική διεύθυνση είναι διάγνωση, όχι σχεδιασμός. Αποδεικνύει ότι ο διακομιστής απαντά στο LAN και σπάει το ίδιο προφίλ τη στιγμή που ο φορητός υπολογιστής φεύγει από το σπίτι.
| Approach | What it depends on | Where it fails |
|---|---|---|
| Split-horizon name | Control of the internal DNS answer | Clients that resolve through a server outside the zone |
| Router reflection | Gateway support for hairpin translation | Routers that drop the flow silently |
| Private address in the profile | Nothing beyond the LAN | Every network except the one at home |
Κρατήστε το προφίλ χρησιμοποιήσιμο μακριά από το σπίτι
Όποια διαδρομή κι αν επιλέξετε, αφήστε ήσυχο τον έλεγχο ταυτότητας. Η διεύθυνση του τελικού σημείου δεν είναι η ταυτότητα του peer, και μια αλλαγή διεύθυνσης δεν δικαιολογεί ποτέ την αποδοχή ενός άσχετου δημόσιου κλειδιού που τυχαίνει να απαντά. Το WireGuard πιστοποιεί με κλειδί, οπότε ένας λάθος κεντρικός υπολογιστής αποτυγχάνει στη χειραψία αντί να δώσει πρόσβαση σε κάτι απρόσμενο.
Αν η δημόσια διεύθυνση μετακινηθεί, το δυναμικό DNS είναι αυτό που κρατά το όνομα χρήσιμο, και η συμπεριφορά ανανέωσης του πελάτη κρίνει πόσο γρήγορα φτάνει η αλλαγή. Δοκιμάστε το απ’ έξω μετά από αλλαγή διεύθυνσης, γιατί η περίπτωση του LAN δεν μπορεί να το επικυρώσει. Προσέξτε έναν επιλυτή που αποθηκεύει την παλιά απάντηση πέρα από τη διάρκεια ζωής της εγγραφής. Ένα όνομα που δείχνει ακόμη στην προηγούμενη διεύθυνση μοιάζει ακριβώς με διακομιστή που έπεσε.
Σημειώστε ποιο όνομα χρησιμοποιεί το προφίλ και σε τι αναλύεται σε κάθε πλευρά των συνόρων. Ένα προφίλ που εξαρτάται από μια λειτουργία δρομολογητή που κανείς δεν κατέγραψε είναι μια κλήση υποστήριξης που περιμένει την επόμενη ενημέρωση firmware. Η σημείωση λέει επίσης στο επόμενο άτομο αν μια εσωτερική αποτυχία είναι η γνωστή περίπτωση hairpin ή κάτι νέο.