iptables 是否允许 Squid 处理请求,然后将响应数据包重定向到另一个端口?

iptables 是否允许 Squid 处理请求,然后将响应数据包重定向到另一个端口?

我正在尝试测试一个奇特的流量分析器应用程序,它在端口 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/

相关内容