Σύνδεση μόνο με IPv6, υπηρεσία IPv4: αφήστε έναν μεσολαβητή SOCKS να τη γεφυρώσει
Ένας μεσολαβητής SOCKS δέχεται μία σύνδεση και ανοίγει άλλη, ώστε ένας πελάτης μόνο με IPv6 να φτάνει σε μια υπηρεσία IPv4. Αυτή είναι αναμετάδοση, όχι εγγενής πρόσβαση IPv4.
Δεν χρειάζεστε διεύθυνση από την οικογένεια του προορισμού για να τον φτάσετε, αρκεί κάτι στη διαδρομή να είναι πρόθυμο να αναμεταδώσει. Η εφαρμογή συνδέεται με τον μεσολαβητή, και ο μεσολαβητής ανοίγει δεύτερη σύνδεση προς τον προορισμό. Πρόκειται για δύο υποδοχές με ανεξάρτητες οικογένειες διευθύνσεων, και τίποτα σε κανένα από τα δύο πρωτόκολλα δεν απαιτεί να ταιριάζουν. Αυτή είναι αναμετάδοση σε επίπεδο εφαρμογής και όχι εγγενής διαδρομή IPv4, και η διάκριση καθορίζει τι θα λειτουργήσει και τι όχι. Η σύγχυση των δύο είναι ο τρόπος με τον οποίο ένας φορητός υπολογιστής καταλήγει να περιγράφεται ως έχων συνδεσιμότητα IPv4 ενώ το μόνο που έχει είναι ένας μεσολαβητής.
Δύο υποδοχές, δύο οικογένειες διευθύνσεων
Ένα αίτημα SOCKS5 ονομάζει τον προορισμό σε μία από τρεις μορφές: μια κυριολεκτική διεύθυνση v4, μια κυριολεκτική διεύθυνση v6 ή ένα όνομα για να επιλύσει ο μεσολαβητής. Το αίτημα περιγράφει πού πρέπει να συνδεθεί ο μεσολαβητής, όχι πώς μοιάζει η σύνδεση πελάτη προς μεσολαβητή.
Διαβάστε αυτούς τους τύπους διεύθυνσης ως τρεις ανεξάρτητες επιλογές μέσα σε ένα μήνυμα. Ένας μεσολαβητής προσβάσιμος μέσω IPv6 μπορεί να ανοίξει υποδοχή προορισμού IPv4 όποτε έχει λειτουργική έξοδο IPv4 και η πολιτική του επιτρέπει το αίτημα. Η προδιαγραφή SOCKS5 τις ορίζει χωρίς καμία αναφορά στη μεταφορά του πελάτη.
Ένα ελεγχόμενο παράδειγμα SSH
Πάρτε έναν κεντρικό υπολογιστή SSH που σας επιτρέπεται να χρησιμοποιείτε, ο οποίος απαντά σε IPv6 και μπορεί ο ίδιος να φτάσει μια υπηρεσία HTTPS που υπάρχει μόνο σε v4. Η δυναμική προώθηση του OpenSSH τοποθετεί έναν τοπικό ακροατή SOCKS στο μηχάνημά σας ενώ η συνεδρία σύνδεσης τρέχει μέσω v6.
ssh -6 -N -D 127.0.0.1:1081 -o ExitOnForwardFailure=yes [email protected]Ο κεντρικός υπολογιστής και ο λογαριασμός παραπάνω είναι παραδείγματα, και η σύνδεση loopback κρατά τον ακροατή σε αυτόν τον υπολογιστή. Μην την αντικαταστήσετε με σύνδεση μπαλαντέρ ώστε ένα γραφείο να μοιράζεται έναν μεσολαβητή χωρίς έλεγχο ταυτότητας. ExitOnForwardFailure=yes υπάρχει ώστε μια αποτυχημένη προώθηση να τερματίζει τη συνεδρία αντί να αφήνει μια σιωπηλή εντολή να τρέχει στο παρασκήνιο.
Με τη συνεδρία σε λειτουργία, το αίτημα μοιάζει έτσι:
curl --proxy socks5h://127.0.0.1:1081 https://v4-only.example/Η σύνδεση loopback δεν είναι διαδρομή διαδικτύου IPv4. Αυτό που φεύγει από το μηχάνημά σας είναι η συνεδρία σύνδεσης μέσω v6, και η απομακρυσμένη πλευρά ανοίγει την υποδοχή προορισμού. Η μορφή socks5h επίσης αναθέτει την επίλυση ονομάτων σε εκείνη την πλευρά, κάτι που έχει σημασία όταν ο πελάτης δεν έχει δική του διαδρομή επίλυσης IPv4.
Τι βλέπει πραγματικά ο προορισμός
Ο προορισμός βλέπει τη διεύθυνση εξόδου του αναμεταδότη. Καμία διεύθυνση που ανήκει στον φορητό σας δεν εμφανίζεται εκεί. Μια λίστα επιτρεπόμενων πηγών σε εκείνη την υπηρεσία πρέπει να ονομάζει τον αναμεταδότη. Τα αρχεία καταγραφής της θα αποδώσουν επίσης την κίνηση στον αναμεταδότη. Γράψτε το στο αρχείο αλλαγών πριν από τον έλεγχο, γιατί μια λίστα επιτρεπόμενων χτισμένη γύρω από διευθύνσεις πελατών αποτυγχάνει στο πρώτο αίτημα.
Ο αναμεταδότης είναι επίσης το σημείο όπου φαίνονται τα δύο μισά της συνομιλίας, κάτι που είναι χρήσιμη ιδιότητα κατά τη διάγνωση και βάρος αν ο αναμεταδότης μοιράζεται χωρίς πολιτική.
Αυτό δεν είναι DNS64 ή NAT64
Το DNS64 απαντά με συνθετικά αρχεία που αντιπροσωπεύουν προορισμούς v4, και το NAT64 ξαναγράφει πακέτα κατά μήκος μιας διαμορφωμένης διαδρομής. Κανένα από τα δύο δεν περιγράφει τι συμβαίνει εδώ, όπου μια συνομιλία μεταφοράς τελειώνει και μια άλλη αρχίζει και καμία συνθετική διεύθυνση δεν εξηγεί το αποτέλεσμα. Ένα επιτυχημένο αίτημα επομένως δεν λέει τίποτα για το ποιες υπηρεσίες μετάφρασης λειτουργεί ο πάροχός σας, και ο μεσολαβητής μπορεί να εκτελεί συνηθισμένο NAT στην έξοδό του.
Και οι δύο μηχανισμοί μπορούν να υπάρχουν στο ίδιο δίκτυο, οπότε περιγράψτε αυτόν που επαληθεύσατε πραγματικά και όχι αυτόν που ακούγεται πιο κοντινός.
Γνωρίστε το εύρος προτού το υποσχεθείτε
Η δυναμική προώθηση του OpenSSH μεταφέρει συνδέσεις TCP, όχι αυθαίρετη κίνηση IP, οπότε το UDP, το ICMP και κάθε πρωτόκολλο που αγνοεί τον μεσολαβητή χρειάζονται διαφορετικό υποστηριζόμενο σχεδιασμό. Διατηρήστε την επαλήθευση κλειδιού κεντρικού υπολογιστή SSH, τους περιορισμούς προώθησης του διακομιστή και την επικύρωση πιστοποιητικού HTTPS, γιατί ο μεσολαβητής είναι ένας πρόσθετος έμπιστος συμμετέχων και όχι λόγος να αποδυναμωθούν οι έλεγχοι ταυτότητας. Αν ο στόχος είναι να μεταφερθεί η εξωτερική μεταφορά ενός VPN μέσω του μεσολαβητή, επαληθεύστε ότι και τα δύο άκρα υποστηρίζουν αυτή τη μεταφορά αντί να υποθέσετε ότι οποιοσδήποτε ακροατής SOCKS μπορεί να την αναμεταδώσει.
Τίποτα από αυτά δεν κάνει τον πελάτη διπλής στοίβας, και τίποτα δεν χρειάζεται να το κάνει. Κάνει μία εφαρμογή να φτάνει σε μία υπηρεσία μέσω ενός αναμεταδότη, που είναι μικρότερος ισχυρισμός και πολύ ευκολότερος να επαληθευτεί.