Το πρόγραμμα περιήγησης ανοίγει το όνομα κεντρικού υπολογιστή VPN μέσω HTTPS χωρίς παράπονο, και ο πελάτης SSTP εξακολουθεί να αρνείται τη σύνδεση. Τίποτα σε αυτό το ζεύγος δεν είναι αντιφατικό. Το SSTP χρησιμοποιεί το TLS ως εξωτερικό μεταφορέα και έπειτα εκτελεί το δικό του αίτημα και το ωφέλιμο φορτίο PPP μέσα σε αυτή τη σύνδεση, οπότε μια επιτυχημένη φόρτωση σελίδας αποδεικνύει μόνο ένα στενό πράγμα: ο κεντρικός υπολογιστής απαντά σε ένα GET στη θύρα 443. Ο πελάτης κάνει άλλη ερώτηση και ο διακομιστής μπορεί να την απαντήσει άσχημα.

Η σελίδα φορτώνει και η σήραγγα όχι

Οι άνθρωποι καταφεύγουν στη δοκιμή του προγράμματος περιήγησης επειδή είναι γρήγορη και μετά θεωρούν το αποτέλεσμα απόδειξη ότι ο διακομιστής είναι προσβάσιμος και ρυθμισμένος. Είναι απόδειξη για ένα GET στη διαδρομή που άνοιξε η γραμμή διευθύνσεων, τίποτα περισσότερο. Η συνομιλία VPN ξεκινά μετά την ίδια χειραψία TLS, αλλά στέλνει μια μέθοδο και μια διαδρομή που μια ιστοσελίδα δεν χρησιμοποιεί ποτέ. Επομένως μια απάντηση 200 για το πρόγραμμα περιήγησης δεν λέει τίποτα για το αν υπάρχει το τελικό σημείο SSTP.

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

Τι στέλνει πραγματικά ο πελάτης SSTP

Ο πελάτης στέλνει ένα αίτημα HTTP με τη μέθοδο SSTP_DUPLEX_POST στη διαδρομή /sra_{GUID}/ και μετά κρατά το σώμα της σύνδεσης ανοιχτό ως αμφίδρομη ροή που μεταφέρει πλαίσια PPP. Ένας συμμορφούμενος διακομιστής απαντά HTTP/1.1 200 και σταματά να συμπεριφέρεται ως διακομιστής ιστού. Οτιδήποτε άλλο είναι υπογραφή: 405 ή 404 σημαίνει ότι το τελικό σημείο δεν υπάρχει, 301 ή 302 σημαίνει ότι κάτι ανακατευθύνει το αίτημα, και ένα άμεσο FIN σημαίνει ότι ένας διαμεσολαβητής ή διακομιστής έκλεισε τη ροή.

Γι' αυτό ο στόχος πρέπει να είναι διακομιστής SSTP και όχι διακομιστής ιστού με κολλημένο πιστοποιητικό TLS. Η μέθοδος, η διαδρομή και το μακρόβιο σώμα είναι απαιτήσεις πρωτοκόλλου, οπότε ένας αντίστροφος διαμεσολαβητής δεν μπορεί να τις προσθέσει μόνο με ρύθμιση. Ένας διαμεσολαβητής που προωθεί τέλεια το συνηθισμένο HTTPS μπορεί να αρνηθεί μια μέθοδο που δεν αναγνωρίζει.

Πού σπάει τη ροή ένας διαμεσολαβητής ή διακομιστής ιστού

Ένας ενδιάμεσος ελέγχει τη γραμμή αιτήματος HTTP πριν προωθήσει οτιδήποτε και μια προσαρμοσμένη μέθοδος με ασυνήθιστη διαδρομή μπορεί να αποτύχει στους κανόνες του. Ορισμένες συσκευές σερβίρουν μια κανονική σελίδα ενώ απορρίπτουν ή διακόπτουν τη σήραγγα, οπότε ο πελάτης αναφέρει σύνδεση που ξεκινά και μετά πεθαίνει αντί για καθαρή άρνηση. Άλλες δέχονται το αίτημα και μετά εφαρμόζουν χρονικό όριο σώματος ή αδράνειας που τα keepalive του PPP δεν αντέχουν. Και τα δύο φαίνονται ίδια από την πλευρά του πελάτη, γι' αυτό το στάδιο που απέτυχε έχει μεγαλύτερη σημασία από το κείμενο του σφάλματος.

Ο διαμοιρασμός της θύρας 443 μεταξύ ιστοτόπου και SSTP είναι επιλογή δρομολόγησης, όχι υπόσχεση ότι κάθε άλμα χειρίζεται τις δύο συνομιλίες με τον ίδιο τρόπο. Αν στο μονοπάτι βρίσκεται εξισορροπητής φόρτου, τείχος προστασίας ή τερματιστής TLS, προσθέστε τον στη λίστα υπόπτων πριν αγγίξετε τη ρύθμιση VPN.

Δοκιμάστε τα στάδια ξεχωριστά

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

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com

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

StageWhat it provesFailure signature
TCP to 443A listener exists and the path is openTimeout or connection refused
TLS with SNIThe certificate matches the name you useName mismatch or untrusted chain
SSTP_DUPLEX_POST exchangeThe endpoint is an SSTP server405, 404, 301 or an early FIN
PPP authenticationThe user credential was acceptedAuth failure after a 200 response
Inner routingA permitted destination is reachableTunnel up, no reply from the target

Καταγράψτε στο δελτίο το τελευταίο στάδιο που πέτυχε αντί να γράφετε "αδυναμία σύνδεσης". Η προδιαγραφή MS-SSTP τεκμηριώνει το αίτημα και την ανταλλαγή PPP που ακολουθούν τη χειραψία TLS και είναι η αναφορά για το γιατί μια δοκιμή στο πρόγραμμα περιήγησης δεν μπορεί να αντικαταστήσει κανένα από τα δύο.

Πρώτα η ταυτότητα, μετά το PPP

Η ταυτότητα TLS και ο έλεγχος ταυτότητας PPP είναι διαδοχικά, όχι εναλλακτικά, και η σύγχυσή τους στέλνει τους ανθρώπους σε λάθος ρύθμιση διακομιστή. Ο πελάτης επικυρώνει πρώτα το πιστοποιητικό του διακομιστή και τον προορισμό του, μετά το PPP διαπραγματεύεται τη δική του κατάσταση και ελέγχει την ταυτότητα του χρήστη με μέθοδο πρόκλησης-απόκρισης ή EAP. Ένα πρόβλημα πιστοποιητικού παράγει διαφορετικό σφάλμα από έναν απορριφθέντα κωδικό πρόσβασης και κανένα από τα δύο σφάλματα δεν περιγράφει το στάδιο που καλύπτει το άλλο.

Η αντικατάσταση του ονόματος κεντρικού υπολογιστή με διεύθυνση ή το πάτημα πέρα από την προειδοποίηση πιστοποιητικού αφαιρεί τον έλεγχο που θα εντόπιζε το αποτυχόν στάδιο αντί να το διορθώσει. Κρατήστε την προειδοποίηση και διαβάστε την. Μην επαναφέρετε επίσης κωδικό PPP όταν η ανταλλαγή HTTP δεν έφτασε ποτέ στη συμπεριφορά SSTP, γιατί τα διαπιστευτήρια δεν ζητήθηκαν ποτέ.

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