将对外部 IP 的请求重定向到本地主机(模拟服务器)

将对外部 IP 的请求重定向到本地主机(模拟服务器)

我得到一个应用程序(无源代码)调用一个服务器(硬编码IP)并在启动之前等待答复(一种登录)。

由于服务器有一半的时间处于宕机状态,所以我想创建一个虚拟服务器来模拟官方服务器的行为。

我的问题:

我如何将流量重定向到我的本地机器?

我希望所有发送到 IP wxyz 的请求都重新路由到本地主机(我的虚拟服务器正在运行)

更多信息:

  • 我的虚拟服务器是 apache/php 解决方案。
  • 我尝试使用十六进制编辑器编辑应用程序中的硬编码 IP,但是启动应用程序时某些校验和失败。
  • 因为IP在应用程序中是硬编码的,所以我无法使用hosts文件。
  • 我正在运行 win xp。

有关的: 如何在 Windows Server 2008 上将流量重定向到一个 IP 到另一个 IP

答案1

这完全是一种黑客行为,但你可以尝试将相关服务器的 IP 分配为本地接口上的附加 IP,说明这里

答案2

那么你可以尝试以下方法:

为该 IP 地址设置特定路由,它将使用虚拟服务器作为网关,如下所示:

路线添加-主机wxyz / 32 gw虚拟服务器ip

为此,您需要访问网络的主路由器,或者必须在发送请求的机器上执行此操作。这实际上会将带有 wxyz IP 地址的 TCP 数据包发送到虚拟服务器的 MAC 地址。因此,现在您需要确保虚拟服务器知道如何处理它们。

然后将 wxyz IP 地址作为辅助地址添加到虚拟服务器。
最后更新虚拟服务器上的 apache 配置,以确保它也监听 wxyz 地址,并确保虚拟服务器上的 vhost 接受 IP 地址和域名的传入请求。

请注意,这仅在请求机器和虚拟服务器之间没有其他路由器时才有效。如果涉及任何防火墙,它们也需要更新。

答案3

您可能可以使用 iptables 将某些东西组合在一起。这是我曾经使用过但现在不再使用的东西,可以为您提供立足点:

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 172.16.25.202 -i eth0 -p tcp -m tcp --dport 25 -j DNAT --to 172.16.27.59:8025
-A POSTROUTING -o eth0 -j MASQUERADE 
COMMIT

注意:我很久以前就做过这个,其中可能存在错误

我发现唯一可能存在问题的是它特定于接口。我认为 eth0 仅适用于入站部分,因此使用 lo 接口 (127.0.0.1) 上的 ip 作为目标可能仍然有效...

相关内容