将 HTTP(s) 流量重定向到另一台服务器

将 HTTP(s) 流量重定向到另一台服务器

我正在尝试建立一个用于无线平台研究/逆向工程的测试环境。

我有一个路由器 AP 广播我的网络,我正在研究的硬件连接到该网络,从那里 AP 会将所有流量重定向到服务器进行分析。

我在 AP 上用于重定向流量的 iptables nat 规则是:

iptables -t nat -A PREROUTING -p tcp --dport 80 -m conntrack --ctstate NEW -j DNAT --to x.x.x.x:8880
iptables -t nat -A PREROUTING -p tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to x.x.x.x:8443
iptables -t nat -A PREROUTING -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE

AP 和服务器都启用了 IP_FORWARD。

在我的服务器上,我有 sslsplit、mitmproxy 或其他软件,它们可以接收流量并允许我对其进行分析。

问题是,当我以这种方式重定向流量时,由于某种原因,我的服务器上的软件仍然想要连接到自身,而不是连接到正确的端口/域。

例如,如果我的服务器 IP 是 1.1.1.1:8443;当连接到我的 AP 的硬件 192.168.0.100 访问解析为 2.2.2.2:443 的网站时,iptables 规则会将我所有前往 2.2.2.2:443 的流量重定向到 1.1.1.1:8443 进行分析。这一切都很好,但是当软件尝试将连接转发到远程 http 服务器以完成请求/获取响应时,它不是将流量传递到 2.2.2.2:443 以获得响应,而是将其发送到 1.1.1.1:8443(即它自己)。

这是我的 iptables 规则的错误还是某种软件问题?当以远程处理方式使用时,少数软件也会出现相同的结果,因此我相信这是我重定向流量的方式存在问题。

这样的流量重定向是否可行或者是否必须通过其他方式进行?

设置是客户端(192.168.0.100)-> AP -> 路由器 -> 互联网 -> 数据处理服务器(1.1.1.1:8443)-> 互联网 -> 网络主机(2.2.2.2:443)

任何建议都将受到赞赏。

答案1

从您的服务器到 2.2.2.2:443 (原始目的地)的流量是否经过 AP?

在这种情况下,转换将适用,因此请更改您的 DNAT 规则,以便来自服务器的流量被排除在 DNAT 转换之外。

iptables -t nat -A PREROUTING -p tcp ! -s x.x.x.x --dport 80 -m conntrack --ctstate NEW -j DNAT --to x.x.x.x:8880

相关内容