Có hai proxy SOCKS mà tôi biết về việc hỗ trợ ủy quyền minh bạch cho bất kỳ kết nối TCP gửi đi nào: Tor và redsocks . Không giống như các proxy HTTP, các proxy SOCKS này có thể ủy quyền trong suốt mọi kết nối TCP gửi đi, bao gồm các giao thức và giao thức được mã hóa mà không cần siêu dữ liệu hoặc tiêu đề.
Cả hai proxy này đều yêu cầu sử dụng NAT để chuyển hướng bất kỳ lưu lượng TCP gửi đi nào đến cổng cục bộ của proxy. Chẳng hạn, nếu tôi đang chạy Tor với TransPort 9040
máy cục bộ của mình, tôi sẽ cần thêm quy tắc iptables như thế này:
iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-port 9040
Theo hiểu biết của tôi, điều này sẽ thay thế IP và cổng đích ban đầu bằng 127.0.0.1
và 9040
, do đó đây là một luồng được mã hóa (như SSH) hoặc một luồng không có tiêu đề (như whois ), làm thế nào để proxy biết IP và cổng đích ban đầu?