在 DD-WRT 路由器上将所有传出的 HTTP 流量从一台计算机重定向到另一台计算机

在 DD-WRT 路由器上将所有传出的 HTTP 流量从一台计算机重定向到另一台计算机

我正在尝试调试网络上一台计算机(我们称之为 A)的一些 HTTP 流量。我想将所有流量重定向到另一台计算机(我们称之为 B),而无需直接更改 A 上的任何配置。B 正在运行一个 Web 服务器,该服务器记录对其发出的所有 HTTP 请求。这两台计算机都使用运行 DD-WRT 的路由器连接到网络。

我相信应该可以使用 iptables 进行此重定向。我提出了以下 iptables 配置:

iptables -t nat -I PREROUTING -s AAA.AAA.AAA.AAA -p tcp -m tcp --dport 80 -j DNAT --to-destination BBB.BBB.BBB.BBB:80

当我在路由器中加载它时,A 根本无法从发出的 HTTP 请求中获取任何响应,但 B 根本看不到任何东西。

我怎样才能让它工作?

答案1

因为您的计算机 B 与 A 位于同一网络上,所以 B 直接向 A 发送回复,而不是通过路由器,因此 DNAT 不起作用。

您必须添加额外的 iptables 命令来从 A 更改 IP 源,这样 B 就会将数据包发送到路由器,DNAT 进行向后转换并将答复发送给 A。

iptables -t nat -A POSTROUTING -s AAA.AAA.AAA.AAA -d BBB.BBB.BBB.BBB -p tcp --dport 80 -j SNAT --to-source IP.OF.GW.LAN

其中 IP.OF.GW.LAN 是路由器 LAN 接口上的 IP 地址,但理论上您可以设置任何不在本地网络中的地址。您将看到来自 AAA.AAA.AAA.AAA 的所有 BBB.BBB.BBB.BBB 请求都来自 IP.OF.GW.LAN

相关内容