到目前为止,我能够使用以下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