Esistono due proxy SOCKS che conosco che supportano il proxy trasparente per qualsiasi connessione TCP in uscita: Tor e redsocks . A differenza dei proxy HTTP, questi proxy SOCKS possono delegare in modo trasparente qualsiasi connessione TCP in uscita, inclusi protocolli e protocolli crittografati senza metadati o intestazioni.
Entrambi questi proxy richiedono l'uso di NAT per reindirizzare qualsiasi traffico TCP in uscita verso la porta locale del proxy. Ad esempio, se sto eseguendo Tor con TransPort 9040
sul mio computer locale, dovrei aggiungere una regola iptables come questa:
iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-port 9040
Per quanto ne so , questo sostituirà l'IP e la porta di destinazione originali con 127.0.0.1
e 9040
, quindi dato che si tratta di un flusso crittografato (come SSH) o uno senza intestazioni (come whois ), come fa il proxy a conoscere l'IP e la porta di destinazione originali?