Я знаю два проксі-сервери SOCKS, які підтримують прозоре проксі для будь-якого вихідного TCP-з'єднання: Tor та redsocks . На відміну від проксі-серверів HTTP, ці проксі-сервери SOCKS можуть прозоро проксі проксі будь-яке вихідне TCP-з'єднання, включаючи зашифровані протоколи та протоколи без метаданих чи заголовків.
Обидва ці проксі-сервера вимагають використання NAT для перенаправлення будь-якого вихідного трафіку TCP до локального порту проксі-сервера. Наприклад, якщо я запускаю Tor TransPort 9040
на своїй локальній машині, мені потрібно додати правило iptables, як це:
iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-port 9040
Наскільки мені відомо, це замінить початковий IP-адрес та порт призначення 127.0.0.1
та 9040
, враховуючи, що це зашифрований потік (наприклад, SSH) або той, що не має заголовків (як whois ), як проксі може знати початковий IP-адресу та порт призначення?