iptables:通过公共代理将数据包路由到 example.com

iptables:通过公共代理将数据包路由到 example.com

我想通过公共代理访问某些网站,但使用 iptables 似乎无法正确访问。假设我想通过位于 5.6.7.8:8080 的公共代理访问 IP 地址为 1.2.3.4 的 example.com。我所做的是:

iptables -t nat -A PREROUTING --dst 1.2.3.0/24 -p tcp --dport 80 -j DNAT --to-destination 5.6.7.8:8080
iptables -t nat -A POSTROUTING --dst 5.6.7.8 -p tcp --dport 8080 -j SNAT --to-source 1.2.3.4:80
iptables -t nat -A OUTPUT --dst 1.2.3.0/24 -p tcp --dport 80 -j DNAT --to-destination 5.6.7.8:8080

但后来我根本无法加载网页(好像代理无法访问,但确实如此,因为我在没有设置路由规则的情况下通过在浏览器的代理设置中设置它来测试它)。我究竟做错了什么?

答案1

首先是使用以下命令启用 IP 转发:

echo "1" > /proc/sys/net/ipv4/ip_forward

然后使用添加预路由规则(我认为你不需要提及整个 1.2.3.0/24 网络):

iptables -t nat -A PREROUTING --dst 1.2.3.4 -p tcp --dport 80 -j DNAT --to-destination 5.6.7.8:8080

使用以下命令添加后路由规则:

iptables -t nat -A POSTROUTING -j MASQUERADE

相关内容