如何使用iptables转发代理请求

我有这个schenario

----------------- ---------------- ---------- | SERVER A | ---(port:2128)> | PROXY | ---> | INTERNET | | (10.30.1.1) | | (10.30.2.2) | ----------- ----------------- ---------------- 

现在我有一个SERVER B(10.31.1.1)谁不能访问PROXY,BU可以访问SERVER A.

我需要的是configurationSERVER A接受来自SERVER A的请求,并将它们转发给PROXY,以便它可以访问Internet。

我以这种方式通过iptables尝试:

 echo "1" > /proc/sys/net/ipv4/ip_forward iptables -A FORWARD -p tcp -i 10.30.1.1 --dport 3128 -d 10.30.2.2 -j ACCEPT iptables -t nat -I PREROUTING -p tcp -i 10.30.1.1 --dport 3128 -j DNAT --to 10.30.2.2:3128 

但在服务器B我得到了

 Unable to connect to 10.30.1.1 

我不确定是否已经很好地理解了一切。 代理10.30.2.2是否过滤了input请求并知道如何路由数据包?

在这种情况下,我想你将不得不使用MASQUERADE的选项来replace发件人的地址:

iptables -t nat -I PREROUTING -p tcp -i 10.30.1.1 -s 10.31.1.1 -J MASQUERADE