Przekieruj żądanie do zewnętrznego adresu IP do hosta lokalnego (emuluj serwer)

12

Dostałem aplikację (bez kodu źródłowego) dzwoniącą do serwera (na stałe zakodowane IP) i oczekującą odpowiedzi przed uruchomieniem (rodzaj logowania).

Ponieważ serwer nie działa w połowie czasu, chcę stworzyć fałszywy serwer, który będzie emulował zachowanie oficjalnego serwera.

Mój problem:

Jak mogę przekierować ruch na moją maszynę lokalną?

Chcę, aby wszystkie żądania wysłane do IP wxyz zostały przekierowane na localhost (gdzie działa mój atrapa serwera)

Więcej informacji:

  • mój fikcyjny serwer to rozwiązanie apache / php.
  • Próbowałem edytować zakodowany adres IP w aplikacji za pomocą edytora szesnastkowego, ale niektóre sumy kontrolne zawiodły podczas uruchamiania aplikacji.
  • ponieważ adres IP jest na stałe zakodowany w aplikacji, nie mogę użyć pliku hosts.
  • Korzystam z Win XP.

powiązane: Jak przekierować ruch do jednego adresu IP na inny adres IP w systemie Windows Server 2008

Loda
źródło

Odpowiedzi:

8

Byłby to całkowity włamanie, ale możesz spróbować przypisać adres IP danego serwera jako dodatkowy adres IP interfejsu lokalnego, instrukcje tutaj

Robert Swisher
źródło
To wygląda świetnie! ale nie mogę teraz tego spróbować (mój internet jest wyłączony, tethering przez 3G ..). Daję ci jakieś informacje zwrotne pod koniec przyszłego tygodnia.
Loda,
1
To naprawdę kołysze! działa świetnie, bardzo łatwe rozwiązanie. dzięki !
Loda,
Słodko, miło to słyszeć :)
Robert Swisher
1
Precyzja: Dodanie adresu IP 2sd do mojej karty sieciowej wywołało efekt uboczny; wszystkie adresy IP w tym samym zewnętrznym subredirect są przekierowywane do mojej karty sieciowej. tj .: po dodaniu IP 50.51.51.51, IP 50.51.51.52 nie jest już osiągalny. Jest to spowodowane trasą 50.51.51.0 i trasą 50.255.255.255. Obejście: dodaj trasę 50.51.51.52 -> normalna brama.
Loda
link jest zerwany
danilo
2

Możesz spróbować:

Ustaw określoną trasę dla tego adresu IP, który będzie używał fikcyjnego serwera jako bramy:

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

W tym celu potrzebujesz dostępu do głównego routera sieci lub musisz to zrobić na komputerze, który wysyła żądania. To skutecznie wysyła pakiety TCP z adresem wxyz IP na adres MAC fikcyjnego serwera. Teraz musisz się upewnić, że atrapa serwera wie, co z nimi zrobić.

Następnie dodaj adres IP wxyz jako adres pomocniczy do fikcyjnego serwera.
Na koniec zaktualizuj konfigurację apache na fikcyjnym serwerze, aby upewnić się, że nasłuchuje również na adresie wxyz, i upewnij się, że vhost na fikcyjnym serwerze akceptuje przychodzące żądania zarówno adresu IP, jak i nazwy domeny.

Należy pamiętać, że zadziała to tylko wtedy, gdy nie będzie innych routerów między maszyną żądającą a serwerem zastępczym. A jeśli w grę wchodzą jakieś zapory ogniowe, wymagają one również aktualizacji.

wolfgangsz
źródło
Dzięki za odpowiedź, wygląda dokładnie tak, jak chcę. ale mam problem z jego wdrożeniem. Wolę nie dotykać routera, również dlatego, że rozwiązanie powinno być dostępne wyłącznie dla mojego komputera. Polecenie, które podajesz mi jako przykład, nie działa na moim systemie Windows XP. Próbowałem także „route add wxyz 127.0.0.1” bez powodzenia. Nie mam firewalla / routera między aplikacją a fikcyjnym serwerem. oba działają na tej samej maszynie. (Ale mam zaporę programową: kaspersky) Naprawdę docenię pomoc w ustaleniu tej trasy.
Loda,
1
W systemie Windows dostępne jest polecenie route: route ADD wxyz MASK 255.255.255.255 127.0.0.1 Spowoduje to skierowanie trasy z powrotem na własny komputer. Być może będziesz musiał otworzyć zaporę dla przychodzących żądań na adres wxyz.
wolfgangsz,
Próbowałem dodać trasę za pomocą tego polecenia bez powodzenia. nie wiem dlaczego.
Loda,
„route add 62.1.1.10 mask 255.255.255.255 127.0.0.1” Komunikat o błędzie mówi: „błąd podczas dodawania trasy: niepoprawny parametr” (przetłumaczone z ES)
Loda
Hmm, może trzeba zastąpić 127.0.0.1 faktycznym adresem IP LAN tego interfejsu. Nigdy wcześniej nie próbowałem czegoś takiego, więc wiąże się to z domysłem.
wolfgangsz,
1

Prawdopodobnie możesz uderzyć coś razem z iptables. Oto coś, z czego kiedyś korzystałem, ale nie robię już więcej, aby dać ci szansę:

*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: Zrobiłem to dawno temu, mogą tam być błędy

Jedyne, co widzę, może być problemem, to to, że jest specyficzne dla interfejsu. Myślę, że eth0 jest tylko dla części przychodzącej, więc używanie ip na interfejsie lo (127.0.0.1), ponieważ cel może nadal działać ...

jj33
źródło
1
To byłaby świetna odpowiedź ... ale używa systemu Windows XP.
Jason Berg
Doh! Myślę, że widziałem „apache / php” i przestałem czytać. Nawet po tym, jak zwróciłeś na to uwagę, skanowałem trzy razy, zanim to zobaczyłem. No cóż, zostawię to, może pomoże komuś gdzieś.
jj33,
Zastanawiam się nad Vagrant, busybox i iptables, aby stworzyć selektywną sieć VPN. Chcę móc powiedzieć mojemu systemowi, że tylko kilka znanych adresów IP należy do sieci VPN, więc ruch do innych miejsc nie przechodzi przez sieć VPN. Moim pomysłem jest użycie bardzo lekkiego Linuksa jako busyboksa do połączenia z VPN, a następnie użycie iptables, pliku hosts lub czegoś podobnego, przekierowanie żądań znanych adresów IP do gościa Vagrant VM, aby obsłużył VPN . Te zasady iptables mogą mi pomóc :)
Bruno Finger