Es gibt zwei mir bekannte SOCKS-Proxys, die transparentes Proxying für jede ausgehende TCP-Verbindung unterstützen: Tor und Redsocks . Im Gegensatz zu HTTP-Proxys können diese SOCKS-Proxys jede ausgehende TCP-Verbindung einschließlich verschlüsselter Protokolle und Protokolle ohne Metadaten oder Header transparent als Proxy bereitstellen.
Beide Proxys erfordern die Verwendung von NAT, um ausgehenden TCP-Verkehr zum lokalen Port des Proxys umzuleiten. Wenn ich zum Beispiel Tor TransPort 9040
auf meinem lokalen Computer ausführen möchte, müsste ich eine iptables-Regel wie die folgende hinzufügen:
iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-port 9040
Meines Wissens würde dies die ursprüngliche Ziel-IP und den ursprünglichen Ziel-Port durch 127.0.0.1
und ersetzen. Wenn 9040
dies also ein verschlüsselter Stream (wie SSH) oder ein Stream ohne Header (wie whois ) ist, woher kennt der Proxy die ursprüngliche Ziel-IP und den ursprünglichen Ziel-Port?