如何使用 iptables 在我和外部服务之间建立 TCP 代理?
How can I use iptables to make a TCP proxy between me and a outside service?
到目前为止,我能够使用此 iptables 规则将具有特定目标地址或端口的 TCP 连接重定向到我自己的程序:
iptables -t nat -A OUTPUT -p tcp -d <address> --dport <port> -j REDIRECT --to <local_port>
在我从我的代理创建一个到这个目的地的连接之前,它工作得很好,因为它递归地连接到它自己。
有没有办法让 iptables 知道原始连接是什么并只重定向它?
或者有更好的方法吗?
您可以尝试使用所有者模块并跳过来自代理的流量的重定向。检查 --uid-owner 或 --pid-owner,您应该能够根据其中任何一个来区分流量。
像这样,
iptables -t nat -I OUTPUT -m owner -p tcp -d <address> --dport <port> --uid-owner <proxy-owner> -j ACCEPT
到目前为止,我能够使用此 iptables 规则将具有特定目标地址或端口的 TCP 连接重定向到我自己的程序:
iptables -t nat -A OUTPUT -p tcp -d <address> --dport <port> -j REDIRECT --to <local_port>
在我从我的代理创建一个到这个目的地的连接之前,它工作得很好,因为它递归地连接到它自己。
有没有办法让 iptables 知道原始连接是什么并只重定向它? 或者有更好的方法吗?
您可以尝试使用所有者模块并跳过来自代理的流量的重定向。检查 --uid-owner 或 --pid-owner,您应该能够根据其中任何一个来区分流量。
像这样,
iptables -t nat -I OUTPUT -m owner -p tcp -d <address> --dport <port> --uid-owner <proxy-owner> -j ACCEPT