将请求重定向到外部IP到localhost(模拟服务器)


12

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

由于服务器关闭了一半时间,因此我想创建一个虚拟服务器来模拟官方服务器的行为。

我的问题:

如何将流量重定向到本地计算机?

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

更多信息:

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

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

Answers:


8

这将是完全黑客,但您可以尝试在本地接口上将有问题的服务器的IP分配为附加IP,请参见此处的说明


这看起来很棒!但我现在无法尝试((我的互联网已关闭,我正在使用3G上网。)。下周末,我会给您一些反馈。
罗达2010年

1
这真是不可思议!工作出色,非常简单的解决方案。谢谢 !
罗达2010年

亲爱的,很高兴听到它:)
罗伯特·斯威舍

1
精度:向我的NIC添加2sd IP会有副作用。同一外部subred中的所有IP都重定向到我的NIC。即:添加IP 50.51.51.51时,IP 50.51.51.52不再可用。这是由路由50.51.51.0和路由50.255.255.255引起的。解决方法:添加路由50.51.51.52->普通网关。
罗达2010年

链接已断开
danilo

2

好吧,您可以尝试以下操作:

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

路由添加-host wxyz / 32 gw虚拟服务器IP

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

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

请注意,这仅在请求计算机与虚拟服务器之间没有其他路由器的情况下有效。并且,如果涉及到任何防火墙,它们也需要更新。


感谢您的回答,它看起来和我想要的完全一样。但是,我在执行它时遇到了问题。我宁愿不要触摸路由器,这也是因为该解决方案应为我的机器专用。您以我为例的命令不适用于win xp。我也尝试了“ route add wxyz 127.0.0.1”,但没有成功。我在应用程序和虚拟服务器之间没有防火墙/路由器。它们都在同一台机器上运行。(但是,我确实有一个软件防火墙:kaspersky)我将非常感谢有关如何设置此路由的帮助。
罗达2010年

1
Windows有可用的route命令:route ADD wxyz MASK 255.255.255.255 127.0.0.1这会将路由指向回到您自己的计算机上。您可能必须打开防火墙以接收wxyz地址上的传入请求。
wolfgangsz

我确实尝试使用此命令添加路由,但未成功。不知道为什么。
罗达2010年

“路由添加62.1.1.10掩码255.255.255.255 127.0.0.1”错误消息说:“添加路由时出错:参数错误”(翻译自ES)
Loda 2010年

嗯,也许您需要用该接口的实际LAN IP地址替换127.0.0.1。我以前从未尝试过这种方法,因此涉及一些猜测。
Wolfgangsz

1

您可能会与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作为目标可能仍然有效...


1
那将是一个很好的答案...但是他正在运行Windows XP。
杰森·伯格

h!我想我看到“ apache / php”并停止阅读。即使您指出了这一点,我也看了三遍才发现。哦,好吧,我会离开的,也许它会在某个时候帮助某人。
jj33

我在想与Vagrant,busybox和iptables一起创建选择性VPN。我希望能够告诉我的系统,只有几个已知IP地址属于VPN,因此到其他地方的流量将不会通过VPN。我的想法是使用一个非常轻巧的Linux作为busybox连接到VPN,然后使用iptables,hosts文件或类似的东西将已知IP地址的请求重定向到来宾Vagrant VM,以便它将处理VPN 。这个iptables规则可能会给我一些帮助:)
Bruno Finger
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.