Βοηθά πραγματικά το TCP 443; Μόνο αν ο διακομιστής ακούει εκεί
Ένα προφίλ TCP είναι εφεδρική λύση, όχι μεταμφίεση. Ελέγξτε ότι ο διακομιστής ακούει σε αυτή τη θύρα και μετά ζυγίστε το κόστος του διπλού TCP έναντι του να μην είστε προσβάσιμοι.
Το TCP 443 είναι εφεδρική λύση με προϋπόθεση, όχι μεταμφίεση που γλιστρά ένα τούνελ δίπλα από κάθε φίλτρο. Βοηθά όταν ο πάροχος δημοσιεύει ήδη έναν ακροατή TCP σε αυτή τη θύρα και η διαδρομή αντέχει μια σύνδεση που μένει ανοιχτή για ώρες. Αποτυγχάνει, συνήθως ως λήξη χρόνου, όταν λείπει ένα από τα δύο, και η λήξη χρόνου σπάνια λέει ποιο. Η απόφαση αν πρέπει να αλλάξετε απαιτεί τρεις ερωτήσεις, και μόνο μία αφορά τον αριθμό της θύρας.
Ένας αριθμός θύρας δεν είναι υπόσχεση μεταφοράς
Η θύρα ονομάζει ένα ακραίο σημείο· το TCP τη μετατρέπει σε μια διατεταγμένη ροή bytes· το OpenVPN αποφασίζει τι ταξιδεύει μέσα σε αυτή τη ροή. Ένας διακομιστής ιστού στον ίδιο αριθμό χρησιμοποιεί εντελώς διαφορετική διάταξη εφαρμογής, οπότε η κοινή θύρα 443 κάνει τα δύο να μοιάζουν σε ένα φίλτρο και τίποτα περισσότερο. Ο αριθμός είναι μια ένδειξη που διαβάζει το φίλτρο, όχι ιδιότητα που αλλάζει το περιεχόμενο των πακέτων. Το να τα αντιμετωπίζετε ως ίδια επειδή μοιράζονται θύρα είναι το λάθος πίσω από τις περισσότερες συγχύσεις εδώ.
Τα ενδιάμεσα κουτιά σπάνια παίρνουν μια απλή απόφαση «επιτρέπω ή απαγορεύω» για μια θύρα. Πολλά εξετάζουν τα πρώτα byte, μερικά καρφώνουν έναν προορισμό, και μερικά επαναφέρουν συνδέσεις που μένουν ανοιχτές πολύ ώρα. Γι' αυτό το ίδιο προφίλ μπορεί να δουλεύει από ένα δίκτυο και να λήγει σε άλλο, και γι' αυτό αξίζει να δοκιμάζετε την εφεδρική λύση ως υποστηριζόμενη επιλογή αντί να την εμπιστεύεστε ως υπόσχεση. Όταν ένα φίλτρο εξετάζει την κίνηση, ο αριθμός θύρας είναι μόνο το πρώτο πράγμα που κοιτά.
Επιβεβαιώστε τον ακροατή πριν αγγίξετε το προφίλ
Ο διακομιστής πρέπει να είναι ρυθμισμένος για TCP στη θύρα, και το προφίλ του πελάτη πρέπει να ζητά την ίδια μεταφορά. Το να ξαναγράψετε ένα προφίλ UDP ώστε να ζητά TCP δεν δημιουργεί τον ακροατή, και η λήξη χρόνου που προκύπτει δεν ξεχωρίζει από ένα τείχος προστασίας που ρίχνει τη θύρα. Κατεβάστε το δικό του προφίλ TCP του παρόχου όταν υπάρχει, γιατί μερικές υπηρεσίες δημοσιεύουν ξεχωριστό ακραίο σημείο και ξεχωριστές ρυθμίσεις ταυτότητας για κάθε μεταφορά. Η χειροκίνητη επεξεργασία είναι καλή για ελεγχόμενη δοκιμή και κακός τρόπος να μαντέψετε τη σκοπούμενη ρύθμιση ενός παρόχου.
Οι δύο πλευρές αυτής της αντιστοίχισης φαίνονται στη ρύθμιση, και οι επιλογές ζεύξης του έργου OpenVPN τεκμηριώνουν και τις δύο μορφές. Το ελάχιστο ζεύγος έχει ως εξής:
# server: accept TCP on this port
proto tcp-server
port 443
# client: request the same transport
proto tcp
remote vpn.example.com 443Τρεις συνθήκες κρίνουν αν η εφεδρική λύση αξίζει
Η πρώτη συνθήκη είναι ο πάροχος να προσφέρει καν τη μεταφορά· χωρίς αυτή δεν μετρά τίποτα άλλο. Η δεύτερη είναι η διαδρομή να κρατά ζωντανή μια μακρόχρονη συνεδρία, αφού μερικά δίκτυα επαναφέρουν συνδέσεις που μένουν ανοιχτές αντί να μπλοκάρουν τη θύρα εντελώς. Η τρίτη είναι αν η εφεδρική λύση είναι σκόπιμη εξαίρεση ή πρόχειρη λύση που κρύβει μια βλάβη που δεν διορθώσατε.
Κάθε συνθήκη έχει έναν φθηνό έλεγχο. Μια αποτυχία σε οποιαδήποτε από αυτές φαίνεται ίδια από την πλευρά του πελάτη:
| Condition | How to check it | What a failure decides |
|---|---|---|
| The server offers TCP | The operator's profile list, or a listening-socket check on the server | No client-side edit can help |
| The path keeps long sessions | A test connection left open for an hour | Reconnects will look like server faults |
| The fallback is deliberate | A change record naming the UDP fault | The underlying fault stays invisible |
Πριν συγκρίνετε μεταφορές, ολοκληρώστε κάθε σύνδεση σε πύλη αιχμαλώτισης. Ένα δίκτυο που δεν έχει δεχτεί τη συσκευή σας μπλοκάρει και τις δύο μεταφορές, και τότε η σύγκριση μετρά την πύλη και όχι το τούνελ. Συνδεθείτε, επιβεβαιώστε ότι η συνηθισμένη περιήγηση δουλεύει, και μόνο τότε ξεκινήστε τη δοκιμή.
Το κόστος που δέχεστε: TCP μέσα σε TCP
Το TCP ξαναστέλνει τα χαμένα τμήματα και διατηρεί τη σειρά τους. Όταν μια εφαρμογή που χρησιμοποιεί κι αυτή TCP τρέχει μέσα σε τούνελ TCP, δύο επίπεδα ανάκτησης αντιδρούν στην ίδια απώλεια, και αυτή η αλληλεπίδραση κάνει το τούνελ να φαίνεται αργό σε διαδρομή με απώλειες. Το σύμπτωμα είναι καθυστέρηση και τρεμούλιασμα αντί για καθαρή αποτυχία, κάτι που κάνει εύκολο να κατηγορήσετε το μακρινό άκρο. Μετρήστε από τον πελάτη και με τις δύο μεταφορές πριν βγάλετε συμπέρασμα.
Το UDP αποφεύγει αυτή την εμφώλευση, και αυτός είναι ο κύριος λόγος που οι πάροχοι το προτιμούν και προσφέρουν το TCP μόνο ως εναλλακτική. Μια σταθερή σύνδεση TCP είναι ακόμη πιο χρήσιμη από μια απρόσιτη σύνδεση UDP, οπότε η σύγκριση γίνεται ανάμεσα σε δύο πραγματικά κόστη και όχι ανάμεσα σε καλή και κακή επιλογή. Κρατήστε τη συσκευή και το δίκτυο πρόσβασης σταθερά όσο συγκρίνετε, αλλιώς το αποτέλεσμα περιγράφει τη λάθος μεταβλητή.
Μερικά χαρακτηριστικά του πελάτη τεκμηριώνονται μόνο για μία μεταφορά, οπότε ένα εφεδρικό προφίλ μπορεί να ρίξει σιωπηλά συμπεριφορά στην οποία βασιζόσασταν. Διαβάστε την απαίτηση μεταφοράς της επιλογής πριν αντιμετωπίσετε το προφίλ TCP ως απλή αλλαγή.
Βλάβες που δεν αγγίζει άλλη μεταφορά
Ένα ληγμένο πιστοποιητικό χρειάζεται ακόμη έλεγχο ρολογιού ή ανανέωση, και ένας απορριφθείς λογαριασμός χρειάζεται ακόμη τα σωστά διαπιστευτήρια. Κρατήστε τους ελέγχους ταυτότητας διακομιστή που έδωσε ο πάροχος, γιατί ένας γνώριμος αριθμός θύρας δεν ταυτοποιεί κανέναν. Μια θύρα που απαντά λέει μόνο ότι κάτι ακούει.
Αν το τούνελ σηκωθεί και οι προορισμοί εξακολουθούν να αποτυγχάνουν, το υπόλοιπο πρόβλημα είναι δρομολόγηση ή επίλυση ονομάτων μετά τη σύνδεση, όχι η μεταφορά. Ακολουθήστε αυτή τη διαδρομή αντί να γυρίζετε θύρες, γιατί έτσι χάνεται ένα απόγευμα. Το προφίλ σάς λέει ποια μεταφορά να δοκιμάσετε· δεν σας λέει ποτέ γιατί απέτυχε η διαδρομή UDP.