Η IP του WAN άλλαξε και η σήραγγα έπεσε: οι έλεγχοι με σειρά
Καταγράψτε το συμβάν WAN και μετά δείτε τι δεν το ακολούθησε: παρωχημένες εγγραφές μετάφρασης, διαδρομές δεσμευμένες στην παλιά πύλη, peers που στέλνουν ακόμη στην παλιά διεύθυνση.
Η σήραγγα πέφτει, ο δρομολογητής καταγράφει επανασύνδεση και τίποτα στο LAN δεν μετακινήθηκε. Μια νέα διεύθυνση WAN ακυρώνει την εξωτερική σύνδεση χωρίς να αλλάζει τίποτα στο εσωτερικό: η διεύθυνση προέλευσης του πελάτη άλλαξε, η παλιά κατάσταση NAT δείχνει σε μια προέλευση που δεν υπάρχει πια και ο απομακρυσμένος peer μπορεί να στέλνει ακόμη στην προηγούμενη διεύθυνση. Η αποκατάσταση είναι φυσιολογική συμπεριφορά και το χρήσιμο ερώτημα είναι ποια κατάσταση απέτυχε να ενημερωθεί.
Ονομάστε το συμβάν πριν διαβάσετε το αρχείο καταγραφής
Ελέγξτε τι συνέβη πραγματικά στο επίπεδο πρόσβασης. Μια ανανέωση μίσθωσης από τον πάροχο είναι ένα συμβάν. Μια συνεδρία PPPoE που επανασυνδέθηκε είναι ένα άλλο. Ένα οπτικό μόντεμ που επανεκκινήθηκε ή μια μεταβίβαση WAN από ένα uplink σε άλλο αλλάζει την εξωτερική διεύθυνση ή τη διαδρομή της με τρίτο τρόπο. Δεν είναι το ίδιο συμβάν και δεν αφήνουν το ίδιο υπόλειμμα.
Μια γραμμή επανασύνδεσης στο αρχείο του VPN δεν είναι επίσης απόδειξη αλλαγής WAN. Ένα χρονικό όριο αδράνειας, ένα διάστημα επαναπιστοποίησης και η ανίχνευση νεκρού peer παράγουν όλα επανασυνδέσεις χωρίς καμία αλλαγή διεύθυνσης. Συγκρίνετε τις χρονικές σημάνσεις από το αρχείο πρόσβασης με το αρχείο του VPN πριν καταλήξετε σε κάτι, και κρατήστε το παράθυρο σύγκρισης αρκετά ευρύ ώστε να πιάσει μια αλλαγή που συνέβη τη νύχτα.
Η περιαγωγή και η επανασύνδεση είναι διαφορετικά πρωτόκολλα
Το WireGuard έχει πιστοποιημένη περιαγωγή ενσωματωμένη στο πρωτόκολλο: όταν ένας peer λαμβάνει ένα σωστά πιστοποιημένο πακέτο από νέα διεύθυνση προέλευσης, ενημερώνει το τελικό σημείο αυτού του peer. Η γρήγορη εκκίνηση του WireGuard περιγράφει τη διαμόρφωση peer που το κάνει να λειτουργεί, γι' αυτό ένας πελάτης σε μεταβαλλόμενη διεύθυνση συχνά ανακάμπτει χωρίς ορατή επανεκκίνηση.
Το OpenVPN συμπεριφέρεται διαφορετικά από προεπιλογή. Μια συνεδρία UDP μπορεί να τελειώσει και να επανασυνδεθεί, και η προαιρετική συμπεριφορά float επιτρέπει σε έναν πιστοποιημένο peer να συνεχίσει από νέα διεύθυνση όπου το επιτρέπει η διαμόρφωση. Οι σήραγγες που βασίζονται σε TCP είναι αυστηρότερες, επειδή η ίδια η σύνδεση είναι δεμένη στο ζεύγος διευθύνσεων. Αυτή η διαφορά καθορίζει αν η αποκατάσταση φαίνεται αόρατη ή ανακοινώνεται στο αρχείο κάθε φορά.
Καμία από τις δύο συμπεριφορές δεν λέει τίποτα για τις εφαρμογές στο εσωτερικό. Μια σήραγγα που αποκαταστάθηκε δεν επαναφέρει μια συνεδρία TCP που ο peer θεωρούσε ήδη νεκρή.
Κατάσταση που δεν ανήκει στη σήραγγα
Η κατάσταση μετάφρασης και δρομολόγησης επιβιώνει της επανασύνδεσης με τρόπους που εκπλήσσουν. Μια εγγραφή conntrack που δημιουργήθηκε για την παλιά προέλευση κρατά τη διαδρομή απάντησης αγκιστρωμένη σε μια διεύθυνση που δεν υπάρχει πια, και λήγει με το δικό της χρονοδιάγραμμα, όχι όταν επέστρεψε η σήραγγα. Η επανεκκίνηση της υπηρεσίας σήραγγας δεν συντομεύει αυτή την αναμονή, οπότε ένας επισκευασμένος σύνδεσμος μπορεί να φαίνεται ακόμη χαλασμένος για λίγο.
Οι διαδρομές και οι κανόνες πολιτικής μπορούν να αναφέρονται στην παλιά πύλη ή διεπαφή. Ένα σύνολο κανόνων που ήταν σωστό πριν από μια αλλαγή WAN μπορεί να δείχνει σε μια συσκευή που τώρα είναι κάτω, γεγονός που παράγει μια σήραγγα που αναφέρεται ως συνδεδεμένη και κίνηση που δεν πάει πουθενά. Το δυναμικό DNS για έναν διακομιστή που φιλοξενείτε είναι ξεχωριστό πρόβλημα από έναν πελάτη που αποκτά νέα προέλευση. Η εγγραφή πρέπει να ενημερωθεί για να σας βρίσκουν οι απομακρυσμένοι πελάτες, και καμία διαμόρφωση στην πλευρά του πελάτη δεν αντισταθμίζει μια διεύθυνση που η μετάφραση ανάντη δεν θα προωθήσει.
Βάλτε τους ελέγχους σε σειρά από έξω προς τα μέσα
Η σειρά παρακάτω πηγαίνει από την εξωτερική σύνδεση προς τα μέσα, και το σταμάτημα στο πρώτο βήμα που αποτυγχάνει είναι αυτό που την κάνει χρήσιμη: κάθε πέρασμα αποκλείει το επίπεδο από πάνω. Κρατήστε αυτή τη σειρά ακόμη και όταν η βλάβη φαίνεται προφανής.
wg show
ip -br addr show
ip route get 198.51.100.7
conntrack -L 2>/dev/null | grep -c ESTABLISHED
journalctl -u openvpn-client@home --since '-2 hours' | tail -n 40
Η πρώτη εντολή δείχνει το τρέχον τελικό σημείο και την ηλικία της χειραψίας για κάθε peer. Η δεύτερη και η τρίτη δείχνουν αν η εξωτερική διεπαφή και η διαδρομή προς το τελικό σημείο εξακολουθούν να έχουν νόημα. Το πλήθος conntrack είναι ένας πρόχειρος έλεγχος για κατάσταση που έμεινε από την προηγούμενη διεύθυνση, και το ημερολόγιο είναι το σημείο όπου καταγράφεται ο λόγος της επανασύνδεσης.
Στη συνέχεια δοκιμάστε από πελάτη του LAN και όχι από τον δρομολογητή. Ένα ping με πηγή τον ίδιο τον δρομολογητή χρησιμοποιεί διαφορετική διαδρομή από την προωθημένη κίνηση, οπότε ένα επιτυχές ping από τον δρομολογητή αποδεικνύει ότι η σήραγγα υπάρχει και τίποτα για την προσβασιμότητα του πελάτη.
Αποφασίστε την αναμενόμενη συμπεριφορά και γράψτε την
Η επανασύνδεση είναι σωστή συμπεριφορά για τις περισσότερες αναπτύξεις, οπότε ο στόχος δεν είναι να την εμποδίσετε. Αποφασίστε αντ' αυτού τι πρέπει να συμβεί στην κίνηση κατά το κενό: να σταματήσει, να κρατηθεί ή να μεταβεί σε άλλη διαδρομή. Αυτή η απόφαση ανήκει στο τείχος προστασίας και στην πολιτική δρομολόγησης, όχι στο προφίλ VPN.
Καταγράψτε τα συμβάντα πρόσβασης και τις ώρες επανασύνδεσης μαζί για μια εβδομάδα. Οι επαναλαμβανόμενες αλλαγές χωρίς αντίστοιχο συμβάν πρόσβασης δείχνουν στην υπηρεσία πρόσβασης, και η αντικατάσταση του προφίλ VPN δεν θα διορθώσει ένα uplink που συνεχώς επαναδιαπραγματεύεται. Ένα μόνο ζεύγος εγγραφών στο ίδιο λεπτό λύνει το ερώτημα για αυτό το περιστατικό και δίνει στο επόμενο μια βάση.