Mosty SOCKS socat: zachowaj nazwę hosta TLS witryny
Użyj odbiornika TCP loopback dla jednego celu SOCKS, zachowując tożsamość HTTP i TLS w aplikacji.
Aplikacja nie ma opcji SOCKS, ale może połączyć się z wybranym adresem TCP. Adapter o stałym celu może zapewnić rozmowę SOCKS dla jednego celu. Nie musi stawać się kolejnym ogólnym proxy przekazującym.
Dla kompilacji socat oferujących SOCKS4A układ ilustracyjny jest następujący:
socat TCP4-LISTEN:9443,bind=127.0.0.1,reuseaddr,fork \
SOCKS4A:127.0.0.1:service.example.net:443,socksport=1080
Punkt końcowy SOCKS to lokalny port 1080. Adapter nasłuchuje na lokalnym porcie 9443 i prosi ten punkt końcowy o service.example.net:443. To wartości przykładowe, a nie pełne wdrożenie usługi.
Adapter ma jeden stały cel
Każde zaakceptowane połączenie TCP prosi o tę samą usługę. Aplikacja łącząca się z 9443 dostarcza swoje zwykłe bajty protokołu; socat dostarcza negocjację SOCKS4A. Wysłanie nowego żądania HTTP CONNECT do 9443 nie wybrałoby innego celu—wysłałoby te bajty dalej do stałej usługi.
SOCKS4A przekazuje nazwę hosta do punktu końcowego SOCKS do zdalnego rozwiązywania. Różni się to od formy SOCKS4 używającej adresu wybranego przez klienta. Wybrany upstream—w tym publiczny kandydat z listy proxy SOCKS4—musi obsługiwać nazwy hostów SOCKS4A i wymagane uwierzytelnianie; ten przykład nie jest przepisem na logowanie hasłem SOCKS5.
Połącz się lokalnie, rozpoznaj prawdziwą usługę
Zmiana adresu HTTPS na https://127.0.0.1:9443/ zmienia nazwę hosta, której klient może użyć do TLS i HTTP. Certyfikat dla service.example.net nie stanie się ważnym certyfikatem dla loopback.
Gdy klient obsługuje osobne trasowanie połączenia, zachowaj tożsamość oryginalnego adresu URL. Curl może to zilustrować:
curl --noproxy '*' \
--connect-to service.example.net:443:127.0.0.1:9443 \
https://service.example.net/
Gniazdo trafia do lokalnego adaptera, podczas gdy weryfikacja TLS i cel HTTP pozostają service.example.net. Inne aplikacje potrzebują własnej równoważnej obsługiwanej kontroli; nie każdy klient ją zapewnia.
Powiązanie loopback ogranicza ekspozycję sieciową, ale inne kwalifikujące się procesy lokalne nadal mogą do niego dotrzeć. Utrzymuj odpowiedni czas życia usługi i użytkowników. Zachowaj weryfikację TLS zamiast tłumić błąd tożsamości spowodowany adresem loopback.