Το WireGuard αποτυγχάνει μετά την αδράνεια: ελέγξτε πρώτα την κατεύθυνση
Μια ληγμένη αντιστοίχιση NAT, ένας ραδιοδέκτης που κοιμάται και μια παρωχημένη εφαρμογή μοιάζουν μετά από μια ήσυχη περίοδο. Ελέγξτε την εισερχόμενη και την εξερχόμενη κίνηση χωριστά πριν προσθέσετε keepalive.
Τέσσερα ερωτήματα προηγούνται κάθε αλλαγής ρύθμισης: λειτουργεί ο ίδιος πόρος όσο ο πελάτης είναι ενεργός, πόσο διήρκεσε η περίοδος αδράνειας, κοιμήθηκε η συσκευή ή άλλαξε δίκτυο, και εμφανίζεται η αποτυχία μόνο σε κίνηση που ξεκινά η άλλη πλευρά. Οι απαντήσεις διαχωρίζουν μια ληγμένη αντιστοίχιση NAT από έναν ραδιοδέκτη που κοιμάται και από μια παρωχημένη εφαρμογή. Λένε επίσης αν ένα keepalive έχει καν σχέση. Ξεκινήστε από την κατεύθυνση, γιατί κοστίζει μία εντολή και εξαλείφει τις μισές πιθανές αιτίες.
Ποια κατεύθυνση αποτυγχάνει;
Ένα νέο εξερχόμενο αίτημα του πελάτη και η κίνηση που φτάνει προς αυτόν μετά από μια ήσυχη περίοδο δοκιμάζουν διαφορετικά τον εξοπλισμό με κατάσταση. Τα εξερχόμενα πακέτα ξαναχτίζουν μια αντιστοίχιση καθώς φεύγουν, ενώ τα εισερχόμενα πακέτα χρειάζονται να έχει επιβιώσει η παλιά αντιστοίχιση. Αυτή η ασυμμετρία είναι όλη η δοκιμή. Αν ο πελάτης μπορεί να βγει έξω αλλά τίποτα δεν φτάνει μέσα, η αντιστοίχιση πιθανότατα έληξε, και αν δεν λειτουργεί κανένα από τα δύο, η σήραγγα ή η πρόσβαση δικτύου του πελάτη χάθηκε.
Σημειώστε πόσο διήρκεσε η ήσυχη περίοδος και αν η συσκευή κοιμήθηκε ή πέρασε σε άλλο δίκτυο στο μεταξύ. Αυτά τα δύο γεγονότα αλλάζουν τη διάγνωση πριν από οποιαδήποτε ρύθμιση.
wg show wg0 latest-handshakes
wg show wg0 endpoints
wg show wg0 transfer
Εκτελέστε τις τρεις εντολές πριν και μετά την ήσυχη περίοδο, γιατί καθεμία απαντά σε διαφορετικό μέρος του ερωτήματος. Μια χρονική σήμανση handshake που δεν κουνήθηκε λέει ότι οι δύο πλευρές σταμάτησαν να μιλούν, ενώ ένα άκρο που άλλαξε λέει ότι η αντιστοίχιση μετακινήθηκε αντί να πεθάνει. Οι μετρητές μεταφοράς δείχνουν αν έφτασε τίποτα καθόλου, και αυτή είναι η διαφορά μεταξύ μιας παρωχημένης αντιστοίχισης και μιας σιωπηλής εφαρμογής. Γράψτε τους αριθμούς και στις δύο στιγμές, γιατί η σύγκριση είναι η απόδειξη.
Ύπνος, ραδιόφωνο και κατάσταση εφαρμογής
Σε τηλέφωνο ή φορητό υπολογιστή, μια συσκευή που κοιμάται μπορεί να έχει χάσει εντελώς την πρόσβαση δικτύου, και ένα keepalive δεν μπορεί να επαναφέρει έναν ραδιοδέκτη που είναι κλειστός ούτε να ολοκληρώσει μια captive portal που δεν έχει ικανοποιηθεί. Οι κινητές πλατφόρμες αναστέλλουν την εργασία στο παρασκήνιο κατά πολιτική, οπότε το αν συνεχίζεται η περιοδική κίνηση εξαρτάται από την πλατφόρμα και από το τι έχει διαπραγματευτεί η εφαρμογή μαζί της. Μια αποθηκευμένη σύνδεση είναι η τρίτη περίπτωση και η πιο παραπλανητική, γιατί η επιστροφή της σήραγγας δεν είναι ίδια με την επανασύνδεση της εφαρμογής σε αυτή.
Ανοίξτε ξανά την εφαρμογή μετά την περίοδο αδράνειας αντί να εμπιστευτείτε την καρτέλα που έμεινε ανοιχτή. Αν ένα νέο αίτημα πετύχει εκεί όπου απέτυχε η παλιά συνεδρία, η σήραγγα δεν ήταν ποτέ το πρόβλημα.
Τι κάνει στην πραγματικότητα ένα keepalive
Το PersistentKeepalive στέλνει περιοδικά ένα πιστοποιημένο κενό πακέτο σε έναν ομότιμο, κάτι που αρκεί για να μείνει ζωντανή μια αντιστοίχιση NAT μεταξύ ομοτίμων και για να παραμένει επίκαιρο το άκρο της άλλης πλευράς, όπως περιγράφει η γρήγορη εκκίνηση του WireGuard. Δεν επισκευάζει έναν ραδιοδέκτη που κοιμάται, μια χαμένη διαδρομή ή μια εφαρμογή που δεν ξαναπροσπαθεί ποτέ. Επιλέξτε το διάστημα μέσα από τις υποστηριζόμενες ρυθμίσεις του πελάτη και μην ενεργοποιείτε μια επιθετική τιμή παντού μόνο επειδή μια οθόνη κατάστασης σωπαίνει.
Οι περισσότερες περίοδοι αδράνειας δεν είναι αποτυχίες. Μια σήραγγα που επανασυνδέεται μετά από πέντε λεπτά σιωπής συμπεριφέρεται σωστά, και το πρόβλημα είναι μόνο η περίπτωση όπου κάτι έπρεπε να φτάσει από την άλλη πλευρά.
Περιμένετε το διάστημα που παλιά αποτύγχανε
Κάντε μία υποστηριζόμενη αλλαγή και μετά αφήστε την ίδια περίοδο αδράνειας να περάσει πριν δοκιμάσετε ξανά αυτόν τον πόρο. Η αναμονή είναι μέρος της δοκιμής και όχι τυπικότητα. Η άμεση επιτυχία μετά από μια επανασύνδεση δεν λέει τίποτα για ένα σύμπτωμα μακράς αδράνειας, γιατί η επανασύνδεση είναι ακριβώς το γεγονός που επαναφέρει την κατάσταση. Αν το πρόβλημα εμφανίζεται και κατά την ενεργή χρήση, επιστρέψτε σε ελέγχους handshake και διαδρομής δεδομένων αντί να προσθέσετε περισσότερη περιοδική κίνηση.
Κρατήστε μία αλλαγή ανά δοκιμή και γράψτε τη διάρκεια αδράνειας που χρησιμοποιήθηκε. Χωρίς αυτό, κάθε μεταγενέστερη σύγκριση ξεφεύγει και κανείς δεν μπορεί να πει ποια αλλαγή είχε σημασία. Καταγράψτε τα τέσσερα γεγονότα μαζί: κατεύθυνση, διάρκεια, κατάσταση ύπνου και συμπεριφορά της εφαρμογής.