如何在不丢失原始目标的情况下将 TCP 包重定向到代理



im 试图将 TCP 包重定向到我的代理,但我在此过程中丢失了原始 IP 目标。 因此,我的代理无法启动连接到原始目的地。我的设置如下所示:

我有一个普通的TLS Linux服务器,我称之为C。
我的 Linux PC 上有一个名为 B 的中间人代理。
A 是一个安卓模拟器,其中启动了与 C 的 tls 连接。A 不使用 HTTP 或 HTTPS。它只是通过TLS发送随机数据。

我希望 A 连接到 B,B 连接到 C。
在 Android 模拟器中,我输入了一个 iptables 规则将 TCP 包重定向到我的代理服务器,它可以工作。唯一的问题是我的代理不知道原始目标的目标 IP。我需要吗以某种方式向包添加标头,或者我将如何解决此问题?

如果将

数据包重定向到另一台计算机,原始目标 IP 地址将永久丢失,因为在这种情况下需要替换数据包的目标 IP。无法将有关原始 IP 地址的某些信息附加到数据包。

如果您仅重定向到同一台计算机上的某些代理,则情况会有所不同。在这种情况下,代理可以通过调用getsockopt(fd, SOL_IP, SO_ORIGINAL_DST)来检索原始目标(在 Linux 上,其他系统可能有所不同(,因为它仍然作系统内核知道。

因此,您需要确保在代理所在的同一系统上执行重定向。为此,代理系统必须位于路由路径中才能接收数据包,例如将其设置为默认网关。

相关内容

最新更新