Anfrage an eine externe IP an localhost umleiten (Server emulieren)

11

Ich habe eine Anwendung (kein Quellcode) erhalten, die einen Server anruft (fest codierte IP) und vor dem Start eine Antwort erwartet (eine Art Login).

Da der Server die Hälfte der Zeit ausgefallen ist, möchte ich einen Dummy-Server erstellen, der das Verhalten des offiziellen Servers emuliert.

Mein Problem:

Wie kann ich den Datenverkehr auf meinen lokalen Computer umleiten?

Ich möchte, dass alle an IP wxyz gesendeten Anforderungen an localhost weitergeleitet werden (wo mein Dummy-Server ausgeführt wird).

Mehr Info:

  • Mein Dummy-Server ist eine Apache / PHP-Lösung.
  • Ich habe versucht, die fest codierte IP in der Anwendung mit einem Hex-Editor zu bearbeiten, aber einige Prüfsummen schlagen fehl, wenn ich die Anwendung starte.
  • Da die IP in der Anwendung fest codiert ist, kann ich die Hosts-Datei nicht verwenden.
  • Ich laufe win xp.

Verwandte Themen : So leiten Sie den Datenverkehr unter Windows Server 2008 auf eine IP-Adresse auf eine andere IP-Adresse um

Loda
quelle

Antworten:

7

Dies wäre ein totaler Hack, aber Sie könnten versuchen, die IP des betreffenden Servers als zusätzliche IP auf Ihrer lokalen Schnittstelle zuzuweisen. Anweisungen hier

Robert Swisher
quelle
Das sieht gut aus! aber ich kann es jetzt nicht versuchen (mein Internet ist ausgefallen, ich bin an 3G angebunden ..). Ich gebe Ihnen Ende nächster Woche ein Feedback.
Loda
1
Das rockt wirklich! funktioniert super, sehr einfache Lösung. Vielen Dank !
Loda
Süß, froh es zu hören :)
Robert Swisher
1
Präzision: Das Hinzufügen einer 2sd-IP zu meiner Netzwerkkarte hat einen Nebeneffekt. Alle IP-Adressen in demselben externen Subred werden an meine Netzwerkkarte weitergeleitet. dh: Beim Hinzufügen von IP 50.51.51.51 ist IP 50.51.51.52 nicht mehr erreichbar. Dies wird durch die Route 50.51.51.0 und die Route 50.255.255.255 verursacht. Problemumgehung: Fügen Sie die Route 50.51.51.52 -> normales Gateway hinzu.
Loda
Die Verbindung ist unterbrochen
Danilo
2

Nun, Sie könnten Folgendes versuchen:

Richten Sie eine bestimmte Route für diese IP-Adresse ein, die den Dummy-Server wie folgt als Gateway verwendet:

route add -host wxyz / 32 gw Dummy-Server-IP

Dazu benötigen Sie entweder Zugriff auf den Hauptrouter Ihres Netzwerks oder Sie müssen dies auf dem Computer tun, der die Anforderungen sendet. Dadurch werden die TCP-Pakete mit der wxyz-IP-Adresse effektiv an die MAC-Adresse des Dummy-Servers gesendet. Jetzt müssen Sie sicherstellen, dass der Dummy-Server weiß, was mit ihnen zu tun ist.

Fügen Sie dann die wxyz-IP-Adresse als sekundäre Adresse zum Dummy-Server hinzu.
Aktualisieren Sie abschließend die Apache-Konfiguration auf dem Dummy-Server, um sicherzustellen, dass auch die wxyz-Adresse abgehört wird, und stellen Sie sicher, dass der vhost auf dem Dummy-Server eingehende Anforderungen sowohl für die IP-Adresse als auch für den Domänennamen akzeptiert.

Bitte beachten Sie, dass dies nur funktioniert, wenn sich zwischen dem anfordernden Computer und dem Dummy-Server keine anderen Router befinden. Und wenn Firewalls beteiligt sind, müssen diese ebenfalls aktualisiert werden.

wolfgangsz
quelle
Vielen Dank für die Antwort. Es sieht genauso aus wie das, was ich tun möchte. Aber ich habe Probleme bei der Implementierung. Ich werde es vorziehen, den Router nicht zu berühren, auch weil die Lösung exklusiv für meinen Computer sein sollte. Der Befehl, den Sie mir als Beispiel geben, funktioniert auf meinem Win XP nicht. Ich habe auch "route add wxyz 127.0.0.1" ohne Erfolg versucht. Ich habe keine Firewall / Router zwischen der Anwendung und dem Dummy-Server. Beide laufen auf derselben Maschine. (Aber ich habe eine Software-Firewall: kaspersky) Ich würde mich sehr über Hilfe beim Festlegen dieser Route freuen.
Loda
1
Für Windows ist ein Routenbefehl verfügbar: route ADD wxyz MASK 255.255.255.255 127.0.0.1 Dadurch wird die Route zurück auf Ihren eigenen Computer geleitet. Möglicherweise müssen Sie die Firewall für eingehende Anforderungen an die wxyz-Adresse öffnen.
wolfgangsz
Ich habe versucht, mit diesem Befehl eine Route hinzuzufügen, ohne Erfolg. Ich weiß nicht warum.
Loda
"route add 62.1.1.10 mask 255.255.255.255 127.0.0.1" Die Fehlermeldung lautet: "Fehler beim Hinzufügen der Route: falscher Parameter" (übersetzt aus ES)
Loda
Hmm, vielleicht müssen Sie 127.0.0.1 durch die tatsächliche LAN-IP-Adresse dieser Schnittstelle ersetzen. Ich habe so etwas noch nie versucht, daher gibt es ein wenig Rätselraten.
Wolfgangsz
1

Sie könnten wahrscheinlich etwas zusammen mit iptables schlagen. Hier ist etwas, das ich einmal benutzt habe, aber nicht mehr tue, um Ihnen einen Haushalt zu geben:

*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

NB: Ich habe das vor langer Zeit gemacht, da kann es Fehler geben

Das einzige, was ich sehe, das ein Problem sein könnte, ist, dass es spezifisch für die Schnittstelle ist. Ich denke, dass eth0 nur für den eingehenden Teil ist, daher könnte die Verwendung einer IP auf der lo-Schnittstelle (127.0.0.1) als Ziel möglicherweise noch funktionieren ...

jj33
quelle
1
Das wäre eine gute Antwort ... aber er verwendet Windows XP.
Jason Berg
Doh! Ich glaube, ich habe "Apache / PHP" gesehen und aufgehört zu lesen. Selbst nachdem Sie darauf hingewiesen haben, habe ich dreimal gescannt, bevor ich es gesehen habe. Na ja, ich lasse es, vielleicht hilft es irgendwo jemandem.
jj33
Ich denke mit Vagrant, Busybox und Iptables nach, um ein selektives VPN zu erstellen. Ich möchte meinem System mitteilen können, dass nur wenige bekannte IP-Adressen zum VPN gehören, damit der Datenverkehr zu einem anderen Ort nicht über das VPN geleitet wird. Meine Idee ist es, ein sehr leichtes Linux als Busybox zu verwenden, um eine Verbindung zum VPN herzustellen, und dann mithilfe von iptables oder einer Hosts-Datei oder Ähnlichem die Anforderungen der bekannten IP-Adressen an die Gast-Vagrant-VM umzuleiten, damit diese das VPN verarbeiten . Diese iptables Regeln könnten mir etwas helfen :)
Bruno Finger