Αρχικοί προορισμοί στη διαφανή προώθηση TCP σε SOCKS
Εξηγεί γιατί η διαφανής προώθηση TCP σε SOCKS χρειάζεται έναν μεταφραστή που ανακτά τον αρχικό προορισμό πριν από τη διαπραγμάτευση με τον διαμεσολαβητή.
Ένα τείχος προστασίας μπορεί να αλλάξει πού καταλήγει μια σύνδεση TCP. Δεν μπορεί όμως, μόνο με αυτή την αλλαγή, να μάθει στην εφαρμογή προέλευσης να μιλά SOCKS.
Ένας συνηθισμένος διακομιστής SOCKS περιμένει μια διαπραγμάτευση που περιγράφει τον ζητούμενο προορισμό. Μια εφαρμογή που δεν γνωρίζει τον διαμεσολαβητή στέλνει αντίθετα αμέσως τα δικά της byte πρωτοκόλλου. Αν ανακατευθύνετε αυτά τα byte κατευθείαν σε έναν ακροατή SOCKS, οι δύο πλευρές θα διαφωνήσουν για το πρώτο μήνυμα.
Το εξάρτημα που λείπει είναι ένας μεταφραστής
Ένα διαφανές εξάρτημα TCP-προς-διαμεσολαβητή βρίσκεται ανάμεσα σε αυτές τις διεπαφές. Ανακαλύπτει τον προορισμό που ζήτησε αρχικά η εφαρμογή, δημιουργεί την κατάλληλη συνεδρία SOCKS ή HTTP CONNECT και έπειτα αναμεταδίδει τα δεδομένα της εφαρμογής μέσω της ροής που προκύπτει.
Στη διαδρομή του μέσω Linux iptables, ο πηγαίος κώδικας του redsocks ανακτά τον διατηρημένο προορισμό με το SO_ORIGINAL_DST. Άλλα λειτουργικά συστήματα και μέθοδοι ανακατεύθυνσης χρησιμοποιούν διαφορετικούς μηχανισμούς. Αυτό είναι ιδιότητα του ανακατευθυντή και της ρύθμισης δικτύου, όχι συνηθισμένη λειτουργία πελάτη SOCKS.
Η πληροφορία για τον αρχικό προορισμό εξηγεί επίσης γιατί η μεταφορά ενός κανόνα ανακατεύθυνσης από τον κεντρικό υπολογιστή του διαμεσολαβητή σε μια άσχετη πύλη δεν είναι πάντα ισοδύναμη. Η διεργασία που λαμβάνει χρειάζεται τα μεταδεδομένα που απαιτεί ο τρόπος υποκλοπής της. Μια διεύθυνση που ξαναγράφτηκε αλλού μπορεί να μην παρέχει πλέον αυτή την πληροφορία στην αναμενόμενη μορφή.
Κρατήστε σαφές το πεδίο του μεταφραστή. Μια λειτουργική ανακατευθυνόμενη σύνδεση TCP δεν αποδεικνύει υποστήριξη για αυθαίρετο UDP, ICMP ή για κάθε διαδρομή επίλυσης. Το πρωτόκολλο του ανάντη διαμεσολαβητή και η υλοποίηση του μεταφραστή εξακολουθούν να καθορίζουν τις υποστηριζόμενες λειτουργίες.
Όταν μια ρύθμιση αποτυγχάνει αμέσως μετά τη σύνδεση, ελέγξτε το όριο του πρωτοκόλλου πριν διευρύνετε τους κανόνες πρόσβασης. Ένας απόλυτα προσβάσιμος ακροατής SOCKS μπορεί να απορρίψει byte που δεν ήταν ποτέ αίτημα SOCKS.