Istnieją dwa proxy SOCKS, które znam o tym, że obsługują przezroczyste proxy dla dowolnego wychodzącego połączenia TCP: Tor i redsocks . W przeciwieństwie do serwerów proxy HTTP, te serwery proxy SOCKS mogą transparentnie proxy każdego wychodzącego połączenia TCP, w tym protokołów szyfrowanych i protokołów bez metadanych lub nagłówków.
Oba te proxy wymagają użycia NAT do przekierowania wszelkiego wychodzącego ruchu TCP na lokalny port proxy. Na przykład, jeśli korzystam z Tora TransPort 9040
na moim komputerze lokalnym, musiałbym dodać regułę iptables w następujący sposób:
iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-port 9040
Według mojej wiedzy zastąpiłoby to pierwotny docelowy adres IP i port, 127.0.0.1
a 9040
zatem, biorąc pod uwagę, że jest to szyfrowany strumień (jak SSH) lub taki bez nagłówków (jak whois ), w jaki sposób serwer proxy zna pierwotny docelowy adres IP i port?