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

Για εκδόσεις socat που παρέχουν SOCKS4A, μια ενδεικτική διάταξη είναι:

socat TCP4-LISTEN:9443,bind=127.0.0.1,reuseaddr,fork \
  SOCKS4A:127.0.0.1:service.example.net:443,socksport=1080

Το τελικό σημείο SOCKS είναι η τοπική θύρα 1080. Ο προσαρμογέας ακούει στην τοπική θύρα 9443 και ζητά από αυτό το τελικό σημείο service.example.net:443. Αυτές είναι τιμές παραδείγματος, όχι πλήρης ανάπτυξη υπηρεσίας.

Ο προσαρμογέας έχει έναν σταθερό στόχο

Κάθε αποδεκτή σύνδεση TCP ζητά την ίδια υπηρεσία. Μια εφαρμογή που συνδέεται στο 9443 παρέχει τα κανονικά byte πρωτοκόλλου της· το socat παρέχει τη διαπραγμάτευση SOCKS4A. Ένα νέο αίτημα HTTP CONNECT στο 9443 δεν θα επέλεγε άλλον προορισμό—θα έστελνε αυτά τα byte προς τη σταθερή υπηρεσία.

Το SOCKS4A δίνει ένα hostname στο τελικό σημείο SOCKS για απομακρυσμένη επίλυση. Αυτό διαφέρει από τη μορφή SOCKS4 που χρησιμοποιεί διεύθυνση επιλεγμένη από τον πελάτη. Το επιλεγμένο upstream—συμπεριλαμβανομένου ενός δημόσιου υποψηφίου από τη λίστα διακομιστών μεσολάβησης SOCKS4—πρέπει να υποστηρίζει χειρισμό hostname SOCKS4A και την απαιτούμενη πιστοποίηση· αυτό το παράδειγμα δεν είναι συνταγή σύνδεσης με κωδικό SOCKS5.

Συνδεθείτε τοπικά, αναγνωρίστε την πραγματική υπηρεσία

Η αλλαγή μιας διεύθυνσης HTTPS σε https://127.0.0.1:9443/ αλλάζει το hostname που μπορεί να χρησιμοποιήσει ο πελάτης για TLS και HTTP. Ένα πιστοποιητικό για το service.example.net δεν θα γίνει έγκυρο πιστοποιητικό για loopback.

Όπου ο πελάτης υποστηρίζει ξεχωριστή δρομολόγηση σύνδεσης, διατηρήστε την ταυτότητα της αρχικής διεύθυνσης. Το Curl μπορεί να δείξει αυτή τη διάκριση:

curl --noproxy '*' \
  --connect-to service.example.net:443:127.0.0.1:9443 \
  https://service.example.net/

Το socket πηγαίνει στον τοπικό προσαρμογέα, ενώ η επαλήθευση TLS και ο προορισμός HTTP παραμένουν service.example.net. Άλλες εφαρμογές χρειάζονται τον δικό τους αντίστοιχο υποστηριζόμενο έλεγχο· δεν τον παρέχει κάθε πελάτης.

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

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