Reindirizzare la richiesta a un IP esterno su localhost (emulare un server)


12

Ho ricevuto un'applicazione (senza codice sorgente) che chiama un server (IP hard coded) e mi aspetto una risposta prima di iniziare (una specie di login).

Perché il server è inattivo per metà del tempo, voglio creare un server fittizio che emulerà il comportamento del server ufficiale.

Il mio problema:

Come posso reindirizzare il traffico sul mio computer locale?

Voglio che tutte le richieste inviate a IP Wxyz vengano reindirizzate a localhost (dove è in esecuzione il mio server fittizio)

Ulteriori informazioni:

  • il mio server fittizio è una soluzione apache / php.
  • Ho provato a modificare l'IP con codice hard nell'applicazione con un editor esadecimale, ma alcuni checksum falliscono all'avvio dell'applicazione.
  • perché l'IP è hardcoded nell'applicazione, non riesco a usare il file hosts.
  • Sto correndo Win XP.

correlati: Come reindirizzare il traffico verso un IP verso un IP diverso su Windows Server 2008

Risposte:


8

Questo sarebbe un trucco totale, ma potresti provare ad assegnare l'IP del server in questione come un IP aggiuntivo sulla tua interfaccia locale, istruzioni qui


Questo sembra fantastico! ma non posso provarlo ora, (la mia Internet è inattiva, sto collegando il 3G ..). Ti do un feedback alla fine della prossima settimana.
Loda,

1
Questo è davvero incredibile! funziona alla grande, soluzione molto semplice. Grazie !
Loda,

Dolce, felice di sentirlo :)
Robert Swisher,

1
Precisione: l'aggiunta di un IP 2s alla mia scheda di rete ha avuto un effetto collaterale; tutti gli IP nella stessa subred esterna vengono reindirizzati alla mia scheda NIC. vale a dire: quando si aggiunge IP 50.51.51.51, IP 50.51.51.52 non è più raggiungibile. Ciò è causato dalla rotta 50.51.51.0 e dalla rotta 50.255.255.255. Soluzione alternativa: aggiungere il percorso 50.51.51.52 -> gateway normale.
Loda,

il collegamento è interrotto
danilo,

2

Bene, potresti provare quanto segue:

Imposta un percorso specifico per quell'indirizzo IP, che utilizzerà il server fittizio come gateway, in questo modo:

route add -host wxyz / 32 gw dummy-server-ip

Per questo avrai bisogno di accedere al router principale per la tua rete, oppure devi farlo sul computer che sta inviando le richieste. Questo invia efficacemente i pacchetti TCP con l'indirizzo IP wxyz all'indirizzo MAC del server fittizio. Quindi ora devi assicurarti che il server fittizio sappia cosa farne.

Quindi aggiungere l'indirizzo IP wxyz come indirizzo secondario al server fittizio.
Infine, aggiorna la configurazione di Apache sul server fittizio per assicurarti che sia in ascolto anche sull'indirizzo wxyz e assicurati che il vhost sul server fittizio accetti le richieste in arrivo sia per l'indirizzo IP che per il nome del dominio.

Si noti che questo funzionerà solo se non ci sono altri router tra la macchina richiedente e il server fittizio. E se sono coinvolti firewall, devono anche essere aggiornati.


Grazie per la risposta è esattamente come quello che voglio fare. ma ho avuto problemi a implementarlo. Preferirò non toccare il router, anche perché la soluzione dovrebbe essere esclusiva per la mia macchina. Il comando che mi metti come esempio non funziona sul mio Win XP. Ho anche provato "route add wxyz 127.0.0.1" senza successo. Non ho firewall / router tra l'applicazione e il server fittizio. entrambi funzionano sulla stessa macchina. (Ma ho un firewall software: kaspersky) Apprezzerò molto l'aiuto su come impostare questa rotta.
Loda,

1
È disponibile un comando route per Windows: route ADD wxyz MASK 255.255.255.255 127.0.0.1 Questo indicherà il percorso di ritorno sulla propria macchina. Potrebbe essere necessario aprire il firewall per le richieste in arrivo sull'indirizzo wxyz.
Wolfgangsz,

Ho provato ad aggiungere un percorso usando questo comando senza successo. non so perché.
Loda,

"route add 62.1.1.10 maschera 255.255.255.255 127.0.0.1" Il messaggio di errore dice: "errore durante l'aggiunta del percorso: parametro errato" (tradotto da ES)
Loda

Forse è necessario sostituire 127.0.0.1 con l'indirizzo IP LAN effettivo di quella interfaccia. Non ho mai provato nulla di simile prima, quindi ci sono alcune congetture.
Wolfgangsz,

1

Probabilmente potresti battere qualcosa insieme a iptables. Ecco qualcosa che ho usato una volta ma non sto più facendo per darti un'idea:

*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: L'ho fatto molto tempo fa, potrebbero esserci degli errori

L'unica cosa che vedo che potrebbe essere un problema è che è specifica per l'interfaccia. Penso che eth0 sia solo per la parte in entrata, quindi usando un ip sull'interfaccia lo (127.0.0.1) come target potrebbe ancora funzionare ...


1
Sarebbe un'ottima risposta ... ma ha Windows XP.
Jason Berg,

Doh! Penso di aver visto "apache / php" e ho smesso di leggere. Anche dopo averlo sottolineato, ho scansionato tre volte prima di vederlo. Oh bene, lo lascerò, forse aiuterà qualcuno da qualche parte quando.
jj33,

Sto pensando con Vagrant, busybox e iptables per creare una VPN selettiva. Voglio essere in grado di dire al mio sistema che solo pochi indirizzi IP noti appartengono alla VPN in modo che il traffico da qualche altra parte non passi attraverso la VPN. La mia idea è quella di utilizzare un Linux molto leggero come busybox per connettersi alla VPN e quindi utilizzare iptables, o file host o qualcosa di simile, reindirizzare le richieste degli indirizzi IP noti alla VM Vagrant guest in modo che gestisca la VPN . Queste regole di iptables potrebbero darmi un po 'di aiuto :)
Bruno Finger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.