Redireccionar solicitud a una IP externa a localhost (emular un servidor)


12

Tengo una aplicación (sin código fuente) que llama a un servidor (IP codificada) y espero una respuesta antes de comenzar (una especie de inicio de sesión).

Porque el servidor está caído la mitad del tiempo, quiero crear un servidor ficticio que emule el comportamiento del servidor oficial.

Mi problema:

¿Cómo puedo redirigir el tráfico a mi máquina local?

Quiero que toda la solicitud enviada a IP wxyz se redirija a localhost (donde se está ejecutando mi servidor ficticio)

Más información:

  • mi servidor ficticio es una solución apache / php.
  • Traté de editar la IP codificada en la aplicación con un editor hexadecimal, pero algunas sumas de verificación fallan cuando inicio la aplicación.
  • porque la IP está codificada en la aplicación, no puedo usar el archivo hosts.
  • Estoy corriendo win xp.

relacionado: Cómo redirigir el tráfico a una IP a una IP diferente en Windows Server 2008

Respuestas:


8

Esto sería un hackeo total, pero podría intentar asignar la IP del servidor en cuestión como una IP adicional en su interfaz local, instrucciones aquí


¡Esto se ve genial! pero no puedo probarlo ahora (mi internet está caído, estoy conectando 3G). Te doy algunos comentarios al final de la próxima semana.
Loda

1
Esto realmente es genial! trabajando genial, solución muy fácil. Gracias !
Loda

Dulce, contento de escucharlo :)
Robert Swisher

1
Precisión: Agregar una IP 2sd a mi NIC tiene un efecto secundario; toda la IP en el mismo subred externo se redirige a mi NIC. es decir: al agregar IP 50.51.51.51, IP 50.51.51.52 ya no es accesible. Esto es causado por la ruta 50.51.51.0 y la ruta 50.255.255.255. Solución alternativa: agregue la ruta 50.51.51.52 -> puerta de enlace normal.
Loda

el enlace está roto
danilo

2

Bueno, puedes probar lo siguiente:

Configure una ruta específica para esa dirección IP, que utilizará el servidor ficticio como puerta de enlace, de esta manera:

ruta agregar -host wxyz / 32 gw dummy-server-ip

Para esto, necesitará acceder al enrutador principal de su red, o debe hacerlo en la máquina que envía las solicitudes. Esto envía efectivamente los paquetes TCP con la dirección IP de wxyz a la dirección MAC del servidor ficticio. Así que ahora debe asegurarse de que el servidor ficticio sepa qué hacer con ellos.

Luego agregue la dirección IP de wxyz como una dirección secundaria al servidor ficticio.
Finalmente, actualice la configuración de apache en el servidor ficticio para asegurarse de que también escuche en la dirección wxyz, y asegúrese de que el vhost en el servidor ficticio acepte solicitudes entrantes para la dirección IP y el nombre de dominio.

Tenga en cuenta que esto solo funcionará si no hay otros enrutadores entre la máquina solicitante y el servidor ficticio. Y si hay algún firewall involucrado, también necesitan actualizarse.


Gracias por la respuesta, se ve exactamente como lo que quiero hacer. pero tengo problemas para implementarlo. Preferiría no tocar el enrutador, también porque la solución debería ser exclusiva para mi máquina. El comando que me pones como ejemplo no funciona en mi win xp. También probé "route add wxyz 127.0.0.1" sin éxito. No tengo firewall / enrutador entre la aplicación y el servidor ficticio. ambos corren en la misma máquina. (Pero tengo un firewall de software: kaspersky) Realmente agradeceré alguna ayuda sobre cómo configurar esta ruta.
Loda

1
Hay un comando de ruta disponible para Windows: route ADD wxyz MASK 255.255.255.255 127.0.0.1 Esto apuntará la ruta de regreso a su propia máquina. Es posible que deba abrir el firewall para las solicitudes entrantes en la dirección wxyz.
wolfgangsz

Intenté agregar una ruta usando este comando sin éxito. No sé por qué.
Loda

"route add 62.1.1.10 mask 255.255.255.255 127.0.0.1" El mensaje de error dice: "error al agregar la ruta: parámetro incorrecto" (traducido del ES)
Loda

Hmm, tal vez necesites reemplazar 127.0.0.1 con la dirección IP LAN real de esa interfaz. Nunca he intentado algo así antes, así que hay algunas conjeturas involucradas.
wolfgangsz

1

Probablemente podría golpear algo junto con iptables. Aquí hay algo que una vez usé pero que ya no estoy haciendo para apoyarte:

*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: hice esto hace mucho tiempo, puede haber errores allí

Lo único que veo que podría ser un problema es que es específico de la interfaz. Creo que eth0 es solo para la parte entrante, por lo que usar una ip en la interfaz lo (127.0.0.1) como objetivo todavía podría funcionar ...


1
Esa sería una gran respuesta ... pero está ejecutando Windows XP.
Jason Berg

Doh! Creo que vi "apache / php" y dejé de leer. Incluso después de señalarlo, escaneé tres veces antes de verlo. Oh bueno, lo dejaré, tal vez ayude a alguien en algún momento.
jj33

Estoy pensando en Vagrant, busybox e iptables para crear una VPN selectiva. Quiero poder decirle a mi sistema que solo unas pocas direcciones IP conocidas pertenecen a la VPN para que el tráfico a otro lugar no pase por la VPN. Mi idea es usar un Linux muy liviano como busybox para conectarse a la VPN, y luego usar iptables, o archivo de hosts, o algo similar, redirigir las solicitudes de las direcciones IP conocidas a la VM Vagrant invitada para que maneje la VPN . Estas reglas de iptables podrían ayudarme :)
Bruno Finger
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.