Existem dois proxies do SOCKS que eu conheço que oferecem suporte ao proxy transparente para qualquer conexão TCP de saída: Tor e redsocks . Ao contrário dos proxies HTTP, esses proxies do SOCKS podem fazer proxy de forma transparente de qualquer conexão TCP de saída, incluindo protocolos e protocolos criptografados sem metadados ou cabeçalhos.
Ambos os proxies requerem o uso do NAT para redirecionar qualquer tráfego TCP de saída para a porta local do proxy. Por exemplo, se eu estiver executando o Tor TransPort 9040
na minha máquina local, precisaria adicionar uma regra do iptables como esta:
iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-port 9040
Que eu saiba, isso substituiria o IP e a porta de destino originais por 127.0.0.1
e 9040
, portanto, como esse é um fluxo criptografado (como SSH) ou sem cabeçalho (como whois ), como o proxy conhece o IP e a porta de destino originais?