首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在linux中使用iptables将http和https流量转发到透明代理

如何在linux中使用iptables将http和https流量转发到透明代理
EN

Stack Overflow用户
提问于 2012-05-24 04:36:31
回答 2查看 66.9K关注 0票数 11

我有一个Ubuntu linux系统作为网关系统,上面有两个接口。一个接口用于本地网络,另一个接口用于互联网。我能够毫无问题地通过它来路由流量。我使用两个iptables规则从内部接口转发出站流量:

代码语言:javascript
复制
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT

现在,我需要创建一个iptables规则,过滤并重定向所有通过eth1接口离开网络的TCP80和443流量,并将其发送到驻留在TCP9090端口上的环回接口上的代理服务器。

我一直在到处寻找,但我还没有找到一个可行的例子。有没有一种有效的方法来做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-24 05:09:57

代码语言:javascript
复制
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 9090

HTTPS不能与透明代理一起使用。有一些技巧,但它没有任何意义,也是无用的。

票数 16
EN

Stack Overflow用户

发布于 2014-04-08 00:45:09

代码语言:javascript
复制
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

其中:

  • squid-box:您的squid server
  • local-network:您的网络(在我的示例中是192.168.0.0/24)
  • iptables-box:您的iptables软件所在的位置(通常是网关,在我的示例中是192.168.1.1)

第一个命令将数据包从iptables-box发送到squid-box。第二个确保回复通过iptables-box返回,而不是直接发送到客户端(这非常重要!)。最后一个确保iptables-box将适当的数据包转发到squid-box。它可能不是必需的。YMMV.请注意,我们指定了'-i eth0',然后指定了‘-oeth0’,这表示输入接口eth0和输出接口eth0。如果数据包从不同的接口进入和离开,则需要相应地调整命令。

将这些命令添加到/etc/rc.d/下的相应启动脚本中

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10727443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档