Η χειραψία του WireGuard λειτουργεί, αλλά το υποδίκτυο του γραφείου δεν απαντά
Το WireGuard είναι ενεργό και κάνει ping στον διακομιστή, αλλά τίποτα στο LAN του δεν απαντά. Ελέγξτε το πρόθεμα του πελάτη, την προώθηση του διακομιστή και τη διαδρομή της απάντησης.
Η χειραψία ολοκληρώνεται, wg show αναφέρει πρόσφατη μεταφορά, και η διεύθυνση τούνελ του διακομιστή απαντά σε ping. Ένας υπολογιστής στο LAN του διακομιστή δεν απαντά. Τρεις προϋποθέσεις πρέπει να ισχύουν ταυτόχρονα: ο πελάτης πρέπει να δρομολογεί το πρόθεμα του LAN στο τούνελ, ο διακομιστής πρέπει να προωθεί τα πακέτα, και η απάντηση χρειάζεται διαδρομή επιστροφής. Όταν λείπει ένα από τα τρία, το σύμπτωμα είναι ίδιο.
Το AllowedIPs είναι λίστα πρόσβασης και πίνακας δρομολόγησης μαζί
Στον πελάτη, η λίστα AllowedIPs καθορίζει και τι επιτρέπεται να σταλεί σε αυτόν τον ομότιμο και ποιες διαδρομές εγκαθιστά το WireGuard. Μια εγγραφή ομοτίμου που απαριθμεί μόνο τη διεύθυνση τούνελ του διακομιστή εγκαθιστά μία διαδρομή υπολογιστή, οπότε οι προορισμοί του LAN δεν μπαίνουν ποτέ στο τούνελ. Η προσθήκη του προθέματος του LAN είναι το πρώτο που πρέπει να επαληθευτεί, και είναι επίσης η αλλαγή που λείπει συχνότερα μετά από αντιγραφή ρυθμίσεων. Ένας ομότιμος που επεκτάθηκε σε προεπιλεγμένη διαδρομή είναι διαφορετικός σχεδιασμός και θα μετακινήσει και την κίνηση διαδικτύου του πελάτη.
Κρατήστε τη διαδρομή υπολογιστή και το πρόθεμα του LAN ως ξεχωριστές εγγραφές. Αν το γραφείο έχει δύο υποδίκτυα, και τα δύο ανήκουν στη λίστα, και το απόν δεύτερο πρόθεμα παράγει αποτυχία που φαίνεται επιλεκτική παρά ολική.
[Peer] PublicKey = <server public key> Endpoint = vpn.example.net:51820 AllowedIPs = 10.66.0.1/32, 192.168.50.0/24
Η προώθηση και η μετάφραση ανήκουν στον διακομιστή
Ο διακομιστής χρειάζεται ενεργοποιημένη προώθηση IP, κανόνα προώθησης που δέχεται κίνηση από το τούνελ, και κανόνα μετάφρασης προς τη διεπαφή LAN του. Η μετάφραση είναι αυτό που κάνει τον σχεδιασμό να λειτουργεί χωρίς να αγγίζεται κάθε υπολογιστής στο δίκτυο του γραφείου. Τότε οι απαντήσεις επιστρέφουν στον διακομιστή και όχι σε μια διεύθυνση που το LAN δεν έχει ακούσει ποτέ. Χωρίς αυτήν, κάθε υπολογιστής χρειάζεται διαδρομή για το υποδίκτυο του τούνελ και κανόνα τείχους προστασίας που την επιτρέπει, κάτι που σπάνια είναι αποδεκτό σε δίκτυο που διαχειρίζεται κάποιος άλλος.
sysctl -w net.ipv4.ip_forward=1 iptables -A FORWARD -i wg0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Οι κανόνες που προστίθενται με το χέρι εξαφανίζονται στην επανεκκίνηση, οπότε δέστε τους στη διεπαφή με τις εντολές hook στη ρύθμιση του διακομιστή. Ένα σύνολο κανόνων που επιβιώνει της διεπαφής του είναι ο τρόπος με τον οποίο ένα μηχάνημα καταλήγει να μεταφράζει κίνηση για ένα τούνελ που δεν υπάρχει πια.
Όταν το LAN μετακόμισε και ο κανόνας όχι
Η αντικατάσταση δρομολογητή που αναριθμεί το υποδίκτυο του γραφείου είναι η κλασική εκδοχή αυτής της αποτυχίας. Το τούνελ μένει ενεργό, η χειραψία μένει πρόσφατη, και τίποτα πίσω από τον διακομιστή δεν απαντά, γιατί ο κανόνας μετάφρασης ονομάζει ακόμη την παλιά διεύθυνση. Τα σενάρια εγκατάστασης συχνά ενσωματώνουν τη διεύθυνση LAN του διακομιστή σε κανόνα POSTROUTING, και μετά από αναρίθμηση η διεύθυνση αυτή δεν υπάρχει σε καμία διεπαφή. Τα πακέτα τότε ξαναγράφονται προς προορισμό που δεν μπορεί να απαντήσει.
iptables -t nat -n -L POSTROUTING ip -br addr show
Συγκρίνετε τις δύο εξόδους. Ένας στόχος μετάφρασης που δεν εμφανίζεται στη λίστα διεπαφών είναι το σφάλμα, και η διόρθωσή του είναι αλλαγή μιας γραμμής μόλις τον δείτε. Ο κανόνας μπορεί να ζει σε μια παραγόμενη μονάδα και όχι στη ρύθμιση του WireGuard, οπότε επαναφορτώστε αυτή τη μονάδα μετά την επεξεργασία και επιβεβαιώστε ότι η επόμενη εκκίνηση δεν ξαναγράφει την αλλαγή σας.
Δύο τοποθεσίες πίσω από NAT χρειάζονται τόπο συνάντησης
Όταν καμία πλευρά δεν δέχεται εισερχόμενες συνδέσεις, η πρακτική απάντηση είναι ένας μικρός υπολογιστής με δημόσια διεύθυνση και δύο διεπαφές WireGuard. Κάθε τοποθεσία συνδέεται προς τα έξω, ο μεσαίος υπολογιστής απαριθμεί το LAN κάθε ομοτίμου στο δικό του AllowedIPs, και η προώθηση μεταφέρει πακέτα μεταξύ των δύο τούνελ. Τίποτα στο τείχος προστασίας καμίας τοποθεσίας δεν χρειάζεται να αλλάξει, γι' αυτό ο σχεδιασμός αυτός διαδίδεται εύκολα.
Η δρομολόγηση μεταξύ των τοποθεσιών διατηρεί τις αρχικές διευθύνσεις προέλευσης και άρα διατηρεί ουσιαστική την καταγραφή ανά υπολογιστή. Η μετάφραση στον μεσαίο υπολογιστή είναι απλούστερη όταν τα δύο LAN επικαλύπτονται, με κόστος την απώλεια της ταυτότητας προέλευσης στα αρχεία καταγραφής. Αποφασίστε ποια ιδιότητα μετράει πριν επιλέξετε.
Διαχωρίστε τα επίπεδα με τέσσερις ελέγχους
Κάντε έναν έλεγχο ανά επίπεδο αντί να αλλάξετε τρία πράγματα και να ελπίζετε. Ο πρώτος δείχνει την ηλικία της χειραψίας και τους μετρητές για κάθε ομότιμο. Ο δεύτερος δείχνει αν ο πελάτης δρομολογεί πράγματι αυτόν τον προορισμό στο τούνελ. Ο τρίτος και ο τέταρτος σας λένε αν το αίτημα έφτασε και αν κάποια πολιτική το απέρριψε μετά την άφιξη.
wg show ip route get 192.168.50.20 tcpdump -ni wg0 icmp iptables -vnL FORWARD --line-numbers
Ένα αίτημα που φτάνει και δεν προκαλεί απάντηση δείχνει τη διαδρομή απάντησης ή τον υπολογιστή του LAN. Ένα αίτημα που δεν φτάνει ποτέ δείχνει το AllowedIPs ή τη διαδρομή του πελάτη. Αυτά τα δύο αποτελέσματα χρειάζονται διαφορετικές διορθώσεις, και η καταγραφή είναι αυτό που τα ξεχωρίζει.