如何用iptables在linux HTTP和HTTPS流量转发到透明代理[关闭](How to u

2019-07-29 12:55发布

我作为上面有两个接口的网关系统中的Ubuntu Linux系统。 一个接口是为本地网络和一个接口是互联网。 我能够将流量路由通过它一点问题都没有。 我用两个iptables规则,从内部接口转发出站流量:

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT

我现在需要创建一个iptables过滤掉,并会将所有TCP端口80和443的流量通过离开我的网络规则eth1接口,并将其发送到位于TCP端口9090上环回接口上的代理服务器。

我一直在寻遍左右,但我一直没能找到工作的例子。 是否有一个有效的方式来做到这一点?

Answer 1:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 9090

HTTPS不能以透明代理来使用。 有一些黑客,但它没有任何意义,是无用的。



Answer 2:

iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp --dport 80 -j DNAT --to squid-box:3128
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d squid-box -j SNAT --to iptables-box
iptables -A FORWARD -s local-network -d squid-box -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT

哪里:

  • 鱿鱼盒 :你鱿鱼服务器
  • 本地网络 :网络(在我的情况是192.168.0.0/24)
  • iptables的盒子 :其中你的iptables软件驻留(通常是网关,在我的情况192.168.1.1)

第一个将来自iptables的盒的包鱿鱼盒。 第二个可以确保得到的答复送回通过iptables的盒,而不是直接给客户(这点很重要!)。 最后一个确保iptables的盒将相应的数据包转发到鱿鱼盒。 它可能并不需要。 因人而异。 请注意,我们指定“-i eth0的”,然后“-o eth0的”,它代表输入接口eth0和输出接口eth0的。 如果你的数据包进出于不同的接口,则需要相应地调整命令。

这些命令添加到在你的/etc/rc.d/下适当的启动脚本

FROM: http://www.tldp.org/HOWTO/TransparentProxy-6.html



文章来源: How to use iptables in linux to forward http and https traffic to a transparent proxy [closed]