VPN ή αναμεταδότης TURN: ποιο μεταφέρει πραγματικά μια κλήση WebRTC;
Η σήραγγα αλλάζει τη διαδρομή που βλέπει το ICE· δεν εκχωρεί ποτέ αναμεταδότη και δεν παρέχει σηματοδότηση. Συγκρίνετε τι προσφέρει μια έξοδος VPN και ένας διακομιστής TURN.
Η σελίδα φορτώνει μέσω του VPN, η κλήση όμως δεν συνδέεται ποτέ: δύο διαφορετικές βλάβες με την ίδια γραμμή διευθύνσεων. Η σήραγγα άλλαξε τη διαδρομή που χρησιμοποιεί το πρόγραμμα περιήγησης· δεν έγινε υπηρεσία σηματοδότησης, διακομιστής STUN ή αναμεταδότης και δεν αποφασίζει ποιο ζεύγος υποψηφίων θα επιλέξει το ICE. Ο διαχωρισμός της εργασίας κάθε στοιχείου είναι αυτό που μετατρέπει το αόριστο «το WebRTC είναι μπλοκαρισμένο» σε συγκεκριμένη βλάβη.
Τέσσερις εργασίες, από τις οποίες η σήραγγα αγγίζει μόνο μία
Η εφαρμογή ανταλλάσσει πληροφορίες συνεδρίας μέσω κάποιας διάταξης σηματοδότησης, και αυτή είναι η πρώτη εργασία. Το ICE συγκεντρώνει διευθύνσεις υποψηφίων και δοκιμάζει ζεύγη ώσπου ένα να δουλέψει, και αυτή είναι η δεύτερη. Το STUN επιτρέπει σε έναν ομότιμο να μάθει πώς φαίνεται η κίνησή του από έξω, και το TURN εκχωρεί αναμεταδότη για περιπτώσεις όπου δεν υπάρχει άμεση διαδρομή. Αυτοί οι τέσσερις ρόλοι είναι διακριτοί, και το VPN επηρεάζει τις διευθύνσεις και το φιλτράρισμα που συναντούν αντί να παρέχει οποιονδήποτε από αυτούς.
Γι’ αυτό μια επιτυχημένη σύνδεση δεν λέει τίποτα για τη διαδρομή των μέσων. Η σηματοδότηση συνήθως ταξιδεύει στο ίδιο HTTPS που ήδη χρησιμοποιεί η σελίδα, στη θύρα 443, ενώ τα μέσα μπορεί να ταξιδέψουν μέσω UDP σε εντελώς διαφορετικό προορισμό.
Η ιδιωτική διευθυνσιοδότηση χειροτερεύει τη σύγχυση. Μια διεύθυνση σήραγγας είναι χρήσιμη σε έναν ομότιμο μόνο όταν αυτός έχει προβλεπόμενη διαδρομή πίσω σε αυτήν· το να είναι ιδιωτική δεν αποτελεί απόδειξη αμοιβαίας προσβασιμότητας, και τα προγράμματα περιήγησης δεν το αντιμετωπίζουν έτσι όταν απορρίπτουν υποψηφίους που δεν μπορούν να ελεγχθούν. Ένας υποψήφιος που σας φαίνεται τοπικός μπορεί να είναι μη ελέγξιμος από την άλλη πλευρά. Αξίζει να αποκλείσετε αυτό το κενό πριν συμπεράνετε ότι η σήραγγα ρίχνει τα μέσα.
Συγκρίνετε μια έξοδο VPN με έναν αναμεταδότη TURN
Και τα δύο προωθούν πακέτα, γι’ αυτό συγχέονται, και ο πίνακας σύγκρισης παραπάνω αξίζει να διαβαστεί στήλη προς στήλη και όχι ως κατάλογος χαρακτηριστικών. Η εκχώρηση αναμεταδότη είναι αντικείμενο ανά συνεδρία που δημιουργείται από πιστοποιημένο αίτημα· η σήραγγα είναι διαδρομή. Το ένα έχει διαπιστευτήρια που λήγουν, το άλλο έχει διεύθυνση ομοτίμου που είτε είναι προσβάσιμη είτε όχι.
| Component | What it contributes | What it needs to work | What it cannot do |
|---|---|---|---|
| VPN exit | Changes the observed mapping and the route packets take | A working tunnel and a policy that permits the media transport | Allocate a relay or supply signaling |
| STUN server | Reports the mapped address a peer appears to use | Reachability from the client, on its configured transport | Carry media when a direct path fails |
| TURN server | Relays media through an authenticated allocation | Valid credentials, an allowed transport and sufficient capacity | Fix a missing ICE policy or an unauthorized client |
| Signaling channel | Carries offers, answers and candidate lists | Both peers reaching the same application endpoint | Establish connectivity by itself |
Οι αριθμοί θυρών κάνουν τη διαφορά συγκεκριμένη. Το TURN ακούει εξ ορισμού στο 3478 για UDP και TCP και στο 5349 για TLS, και ένα δίκτυο που επιτρέπει το 443 αλλά απορρίπτει αυτές τις θύρες θα αποτύχει σε αναμεταδιδόμενες κλήσεις ενώ η περιήγηση συνεχίζεται κανονικά. Η αλλαγή θύρας του VPN δεν ρυθμίζει τίποτα από αυτά, επειδή οι θύρες που μετράνε ανήκουν στην υπηρεσία αναμεταδότη, όχι στη σήραγγα.
Διαβάστε τα διαγνωστικά και μετά δοκιμάστε την κλήση
Τα προγράμματα περιήγησης εκθέτουν τις πληροφορίες που χρειάζεστε χωρίς καταγραφή πακέτων. Ανοίξτε τη σελίδα διαγνωστικών WebRTC για το πρόγραμμα περιήγησής σας, κάντε την κλήση και διαβάστε το επιλεγμένο ζεύγος υποψηφίων αντί για τη συγκεντρωμένη λίστα: ποιοι τύποι τοπικών και απομακρυσμένων υποψηφίων επιλέχθηκαν, μέσω ποιας μεταφοράς και οικογένειας διευθύνσεων, και αν η διαδρομή είναι άμεση ή αναμεταδιδόμενη.
Δύο αναγνώσεις αξίζει να τις ξέρετε εκ των προτέρων. Αν το επιλεγμένο ζεύγος είναι κεντρικός υπολογιστής προς κεντρικό υπολογιστή σε ιδιωτικές διευθύνσεις, τα μέσα μένουν σε διαδρομή για την οποία μπορείτε να συλλογιστείτε· αν είναι αναμεταδότης προς αναμεταδότη, η κλήση καταναλώνει χωρητικότητα αναμεταδότη και εξαρτάται από τη διαθεσιμότητα αυτής της υπηρεσίας. Μια βλάβη που σταματά στο «έλεγχος» χωρίς επιλεγμένο ζεύγος σημαίνει ότι συγκεντρώθηκαν υποψήφιοι αλλά κανένας δεν πέρασε τους ελέγχους συνδεσιμότητας.
Έπειτα συγκρίνετε τα ίδια δύο άκρα στην ίδια κλήση αλλάζοντας μόνο μία εγκεκριμένη συνθήκη, και δεχτείτε το αποτέλεσμα με βάση αμφίδρομα μέσα ή δεδομένα και όχι με βάση ένδειξη «συνδέθηκε». Η συγκέντρωση υποψηφίων πετυχαίνει σε πολλές περιπτώσεις που δεν μεταφέρουν ούτε ένα καρέ ήχου. Επαναλάβετε την κλήση στην άλλη πλευρά της αλλαγής και κρατήστε και τις δύο διαγνωστικές καταγραφές, γιατί η σύγκριση δύο εκτελέσεων πληροφορεί περισσότερο από την ανάγνωση οποιασδήποτε μόνης. Ίδια άκρα, ίδιος κωδικοποιητής, μία μεταβλητή αλλαγμένη.
Μια εφαρμογή που θέτει σκόπιμα την πολιτική μεταφοράς ICE σε relay ζητά μόνο υποψηφίους αναμεταδότη. Αυτή η ρύθμιση δεν δημιουργεί αναμεταδότη και δεν επιδιορθώνει ελλιπή διαπιστευτήρια· κάνει την απαίτηση ρητή, κάτι χρήσιμο όταν κάποιος κατηγορεί το VPN για πολιτική που επέλεξε ο ιστότοπος.
Κρατήστε τον ισχυρισμό περί ιδιωτικότητας τόσο στενό όσο τα στοιχεία
Η έκθεση υποψηφίων εξαρτάται από την πολιτική του προγράμματος περιήγησης και της εφαρμογής, όχι μόνο από την κατάσταση της σήραγγας, και η προδιαγραφή W3C για τη σύνδεση ομοτίμων αντιμετωπίζει τον χειρισμό IP ως δική της υπόθεση. Ένα συνδεδεμένο VPN είναι επομένως κακή βάση για να υποσχεθείτε ότι μια κλήση αποκαλύπτει μόνο μία επιλεγμένη διεύθυνση. Δύο ομότιμοι πίσω από την ίδια σήραγγα μπορούν μάλιστα να επιλέξουν διαδρομή που δεν αφήνει ποτέ τον κεντρικό υπολογιστή, κάτι που είναι ταυτόχρονα βελτίωση της ιδιωτικότητας και περιορισμός της συνδεσιμότητας.
Αυτό που μπορείτε να δηλώσετε με ακρίβεια είναι στενότερο και χρησιμότερο: ποιο ζεύγος υποψηφίων επιλέχθηκε, ποια μεταφορά το έφερε και αν αυτή η διαδρομή έμεινε μέσα στη σήραγγα. Καταγράψτε αυτά τα τρία γεγονότα για μια κλήση που λειτουργεί και για μια που αποτυγχάνει, και η διαφορά συνήθως κατονομάζει το στοιχείο που πρέπει να διορθωθεί.
Όταν η συνδεσιμότητα δουλέψει, διαχωρίστε την απόδοση από την προσβασιμότητα. Απώλειες, καθυστέρηση, ουρές και MTU βρίσκονται όλα κατάντη ενός σωστού ζεύγους υποψηφίων, και το να αντιμετωπίζετε μια κομματιασμένη κλήση ως βλάβη συνδεσιμότητας σας στέλνει πίσω στη λίστα υποψηφίων χωρίς λόγο.