![iptables 是否允许 Squid 处理请求,然后将响应数据包重定向到另一个端口?](https://linux22.com/image/510026/iptables%20%E6%98%AF%E5%90%A6%E5%85%81%E8%AE%B8%20Squid%20%E5%A4%84%E7%90%86%E8%AF%B7%E6%B1%82%EF%BC%8C%E7%84%B6%E5%90%8E%E5%B0%86%E5%93%8D%E5%BA%94%E6%95%B0%E6%8D%AE%E5%8C%85%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%AB%AF%E5%8F%A3%EF%BC%9F.png)
我正在尝试测试一个奇特的流量分析器应用程序,它在端口 8890 上运行。
我目前的计划是让任何 HTTP 请求进入 Squid 的 3128 端口,并让其处理该请求,然后在它发回响应之前,使用 iptables 将响应数据包(离开 3128 端口)重定向到 8890 端口。
我研究了这个问题一整晚,尝试了很多 iptables 命令,但我还是遗漏了一些东西,而且我的头发都掉了。
我想法类似这样的操作会起作用:
iptables -t nat -A OUTPUT -p tcp --sport 3128 -j REDIRECT --to-ports 8990
这个规则创建成功,但它从不重定向任何东西。
这有可能吗?如果可能,iptables 的哪些命令可以做到这一点?如果不可能,在给定多个远程浏览器客户端的情况下,在单个主机上,有什么方法可以做到吗?
我想知道带有 mod_proxy 的 Apache 是否可以代替 Squid 成为此设置的候选者?
如果我可以告诉 Squid(或 Apache 或任何其他 HTTP 代理)将响应发送到不同的本地端口而不是发送回远程客户端,那么这也可以起作用(即使没有 iptables)。
任何有关具有此功能的其他 HTTP 代理的建议都很好。
答案1
事实证明我原来的计划是不可能实现的。
但是我可以实现最初的预期目标,即允许任何远程客户端看到这个奇特的流量分析器正在工作,方法是在主机上运行 OpenVPN,然后以典型方式使用 iptables 从一个子网(隧道子网)捕获端口 80 的数据包并重定向到另一个子网(主机的正常子网)。这符合分析器的设计,它期望网关本身针对这种类型的重定向进行修改。
答案2
使用带有 TEE 的 iptables 应该可以让你到达你需要的地方。
http://www.bjou.de/blog/2008/05/howto-copyteeclone-network-traffic-using-iptables/