如何使用 iptables 转发代理请求

如何使用 iptables 转发代理请求

我有这个场景

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

现在我有一台服务器 B(10.31.1.1),它无法访问代理,但可以访问服务器 A

我需要配置服务器 A 以接受来自服务器 A 的请求并将其转发到代理,以便它可以访问互联网。

我通过 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

答案1

我不确定我是否已经完全理解了所有内容。代理 10.30.2.2 是否过滤了输入请求并知道如何路由数据包?

在这种情况下,我认为您必须使用 MASQUERADE 的选项来替换发件人的地址:

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

相关内容