Ο φορητός συνδέεται στο Wi-Fi του σπιτιού, ο πελάτης συνδέεται σε τρία δευτερόλεπτα, και το ίδιο προφίλ αποτυγχάνει στο ξενοδοχείο μία ώρα αργότερα. Τίποτα δεν ενημερώθηκε στο μεταξύ. Το να περάσεις αυτό με έναν πελάτη μπροστά σου αφορά κυρίως το να ξέρεις ποιο σφάλμα ανήκει σε ποιο στάδιο, γιατί η χρήσιμη πληροφορία βρίσκεται στον κωδικό που εκτυπώνει ο πελάτης, όχι στο γεγονός ότι απέτυχε. Ακολούθησε τα τέσσερα βήματα παρακάτω με τη σειρά και θα ξέρεις αν σε απέρριψε ένα όνομα, ένα πακέτο, μια θύρα ή μια πολιτική.

Διάβασε τον κωδικό σφάλματος ως στάδιο, όχι ως ετυμηγορία

Ο πελάτης φτάνει σε τρία ξεχωριστά ορόσημα πριν υπάρξει τούνελ. Επιλύει το όνομα του διακομιστή, παίρνει απάντηση από κάτι στο δίκτυο και διαπραγματεύεται μια συσχέτιση ασφαλείας. Κάθε ορόσημο έχει το δικό του μήνυμα αποτυχίας, και ειδικά τα Windows είναι γενναιόδωρα με διακριτούς κωδικούς μόλις ξέρεις σε ποιο στάδιο ανήκουν.

What the client saysStage that failedFirst thing to run
868, name did not resolveDNS, before any packet leaves for the serverResolve-DnsName vpn.example.net
721 or 806, remote computer did not respondOuter protocol filtered, typically GRE or UDPA capture on the local interface
809, server not respondingA device in the path is dropping the outer flowThe same capture, from a second network
789, security layer errorThe security exchange started and was rejectedCertificate and proposal settings on both ends

Δύο από αυτούς τους κωδικούς σημαίνουν ότι το δίκτυο είναι αθώο. Το 789 σημαίνει ότι τα πακέτα κυκλοφορούσαν και τα δύο άκρα διαφωνούσαν για την κρυπτογράφηση, που είναι πρόβλημα ρυθμίσεων που μπορείς να διορθώσεις στο σπίτι. Το 868 σημαίνει ότι κανένα πακέτο δεν χρειάστηκε ποτέ να φύγει, άρα ο σχεδιασμός του τούνελ είναι άσχετος μέχρι να επιλυθεί το όνομα. Η ταξινόμηση του κωδικού στο σωστό στάδιο γλιτώνει περισσότερο χρόνο από οποιαδήποτε καταγραφή, γιατί σου λέει ποιο από τα επόμενα τρία βήματα να παραλείψεις.

Να είσαι ανάλογα επιφυλακτικός αν ο πελάτης δεν είναι Windows. Οι πελάτες τρίτων συμπτύσσουν τα περισσότερα από αυτά σε "η σύνδεση απέτυχε", γι' αυτό τα επόμενα δύο βήματα δεν βασίζονται καθόλου στο μήνυμα.

Έλεγξε το όνομα πριν κατηγορήσεις το τούνελ

Τα δίκτυα ξενοδοχείων και αεροδρομίων υποκλέπτουν συνεχώς το DNS, και ένας resolver που απαντά με διεύθυνση πύλης παράγει αποτυχία που μοιάζει ακριβώς με νεκρό διακομιστή. Σύγκρινε τι λέει ο τοπικός resolver με το τι λέει ένας δημόσιος:

Resolve-DnsName vpn.example.net -Type A
nslookup vpn.example.net 1.1.1.1
ipconfig /all | findstr /i "DNS Servers"

Αν οι δύο απαντήσεις διαφέρουν, σε κατευθύνουν και η υπόλοιπη διάγνωση πάει χαμένη μέχρι να λυθεί αυτό. Ειδικά μια διεύθυνση πύλης θα δεχτεί πρόθυμα τη σύνδεση TCP και μετά θα κολλήσει, γι' αυτό μπορεί να μοιάζει με μπλοκάρισμα τείχους προστασίας όταν δοκιμάζεις με περιηγητή.

Τώρα επιβεβαίωσε ότι η διεύθυνση που σκοπεύεις να φτάσεις είναι αυτή που χρησιμοποιείται. Κάποιοι πελάτες αποθηκεύουν την προηγούμενη επίλυση για όλη τη ζωή του προφίλ, οπότε μια επανασύνδεση μετά την αλλαγή DNS πηγαίνει ακόμη στην παλιά διεύθυνση. Κλείσε τον πελάτη εντελώς πριν δοκιμάσεις ξανά, αντί να πατήσεις αποσύνδεση και σύνδεση στο ίδιο παράθυρο.

Βρες ποιο εξωτερικό πακέτο εξαφανίζεται

Το τούνελ έχει μια εξωτερική ροή που ανήκει εξ ολοκλήρου στη διαδρομή ανάμεσα σε εσένα και τον διακομιστή, και αυτή τη ροή ταξινομούν και πετούν οι ενδιάμεσες συσκευές. Κατέγραψέ την στον πελάτη και μετά σύγκρινε ένα δίκτυο που λειτουργεί με αυτό που αποτυγχάνει. Στα Windows η ενσωματωμένη καταγραφή αρκεί για μια πρώτη ματιά:

pktmon filter remove
pktmon filter add -p 500 -t UDP
pktmon start --capture --pkt-size 128
pktmon stop
pktmon etl2txt PktMon.etl

Αυτό που θέλεις να δεις είναι αν τα πακέτα σου φεύγουν καθόλου και αν επιστρέφει κάτι. Πακέτα προς τα έξω χωρίς τίποτα πίσω σημαίνει ότι η διαδρομή ή το μακρινό άκρο τα πετάει· τίποτα έξω καθόλου σημαίνει ότι ο πελάτης δεν έφτασε ποτέ στην αποστολή, κάτι που δείχνει πίσω στην επίλυση ονομάτων ή σε τοπική πολιτική τείχους προστασίας.

Επανάλαβε την ίδια δοκιμή σε hotspot κινητού. Αυτή είναι η μοναδική πιο κατατοπιστική σύγκριση που έχεις, γιατί αφαιρεί από τη διαδρομή κάθε κουτί του ξενοδοχείου κρατώντας τον φορητό, τον πελάτη και τα διαπιστευτήρια ίδια. Αν το τούνελ σηκωθεί στο hotspot, σταμάτα να κοιτάς τον διακομιστή. Αν αποτύχει και εκεί, έχεις πρόβλημα πελάτη ή λογαριασμού που το δίκτυο δεν προκάλεσε ποτέ.

Άλλαξε ένα μεταφορικό και δοκίμασε ξανά

Μόλις ξέρεις ότι η εξωτερική ροή πετιέται, το πρακτικό ερώτημα είναι ποια ροή επιτρέπει τελικά το δίκτυο. Τα περισσότερα περιορισμένα δίκτυα επιτρέπουν εξερχόμενο TCP 443 επειδή δεν μπορούν να λειτουργήσουν αλλιώς, οπότε η μετακίνηση του ακροατή εκεί είναι η συνήθης απάντηση. Στο OpenVPN αυτό είναι διακόπτης στην πλευρά του πελάτη μέχρι να αλλάξει ο διακομιστής:

openvpn --config corp.ovpn --proto tcp-client --remote vpn.example.net 443 --verb 4

Οι πελάτες IPsec έχουν αντίστοιχο διακόπτη στα δικά τους πάνελ ρυθμίσεων, που συνήθως περιγράφεται ως IPsec πάνω από TCP ή διέλευση NAT. Η αλλαγή του είναι κι αυτή διάγνωση: αν το τούνελ σηκωθεί πάνω από TCP και πεθάνει πάνω από UDP, απέδειξες ότι το δίκτυο φιλτράρει το UDP, και βρήκες επίσης τη ρύθμιση που θα χρειάζεσαι κάθε φορά που επισκέπτεσαι αυτόν τον χώρο.

Αντιστάσου στον πειρασμό να απενεργοποιήσεις λειτουργίες του δρομολογητή με την πρώτη προσπάθεια. Το να κλείσεις την επιθεώρηση κατάστασης ή την προστασία από πλημμύρα σε δίκτυο ξενοδοχείου δεν είναι διαθέσιμο σε σένα ούτως ή άλλως, και στον δικό σου εξοπλισμό ανταλλάσσεις πραγματική προστασία για έναν φορητό. Σημείωσε ποια ρύθμιση άλλαξε το αποτέλεσμα, μετά επανέφερέ την και ψάξε για μεταφορικό που το δίκτυο επιτρέπει ήδη.

Επαλήθευσε το ίδιο προφίλ στο δεύτερο δίκτυο

Πριν κλείσεις το δελτίο, απόδειξε ότι η αλλαγή επιβίωσε από την έξοδο από το κτίριο. Συνδέσου ξανά στο αρχικό δίκτυο με τις αρχικές ρυθμίσεις, κατέγραψε τα πρώτα τριάντα δευτερόλεπτα και επιβεβαίωσε ότι ο πελάτης φτάνει στην ίδια κατάσταση που έφτασε στο hotspot:

pktmon filter add -p 443 -t TCP
pktmon start --capture
Get-VpnConnection -Name "Corp" | Select-Object ConnectionStatus, TunnelType, ServerAddress

Η διάκριση που αποκαλύπτει η τελευταία εντολή αξίζει να κρατηθεί: το προφίλ μπορεί να αναφέρει συνδεδεμένο τούνελ ενώ η δρομολόγηση μέσα του είναι λάθος, και αυτό παράγει "το VPN είναι πάνω αλλά τίποτα δεν λειτουργεί", που είναι άλλο άρθρο. Αν ο τύπος του τούνελ άλλαξε μετά την επεξεργασία σου, το προφίλ δεν είναι αυτό που δοκίμασες.

Μετά γράψε το εύρημα εκεί όπου θα κοιτάξει ο επόμενος. Το "το εταιρικό προφίλ χρειάζεται TCP 443 σε αυτόν τον χώρο· το UDP 500 το φιλτράρει το ξενοδοχείο" είναι μια πρόταση πάνω στην οποία μπορεί να δράσει ένας συνάδελφος. Το "το VPN είναι ασταθές στα ξενοδοχεία" δεν είναι, και εγγυάται ότι η ίδια ώρα θα ξοδευτεί ξανά τον επόμενο μήνα.

Σχετικά άρθρα