¿Es posible o sensato piratear DNS para código de prueba unitaria con conexiones HTTP?

¿Es posible o sensato piratear DNS para código de prueba unitaria con conexiones HTTP?

¿Existe una forma sensata de secuestrar DNS de forma limitada para simular conexiones HTTP salientes, con un servidor de prueba local?

La idea es que el código se ejecute de la misma manera que lo haría normalmente, pero la solicitud sería redirigida a algún servidor de prueba local que devuelva respuestas simuladas.

Sé que esto se puede hacer teniendo un conjunto de configuraciones de prueba para que el URI solicitado sea localhost, pero encuentro que eso causa una gran cantidad de problemas, siendo el más común que los desarrolladores se olviden de descomentar la configuración de producción o se confundan acerca de la configuración. configuración de prueba.

Respuesta1

Es aconsejable no tocar el código para comprobarlo. Entonces tienes razón al manipular el entorno para forzar el uso de un servidor de prueba.

Un hackeo de DNS afectaría a toda la red, posiblemente irritando otras pruebas que apuntan al mismo servicio.

Para minimizar el impacto, la forma más sencilla de redirigir el tráfico de red al servidor de prueba sería configurar el hostsarchivoen el clientedonde está instalado el software a probar.

# Linux:
/etc/hosts

# Windows:
%SystemRoot%\System32\drivers\etc\hosts

Simplemente asigne la IP del sistema de prueba a los nombres DNS de los servidores de producción:

# IP of the test server:
192.168.10.20   prod.server.com prod2.server.com
192.168.10.20   prod prod2      # if prod-servers are part of the local network.

Para resolver el nombre del servidor, el sistema primero verificará el hostsarchivo. Luego, si no tiene éxito, seguirá la solicitud de DNS.

Podría ser una buena idea borrar el caché de DNS después de la reconfiguración:

# Linux:
resolvectl flush-caches

# Windows:
ipconfig /flushdns

Para esto (o cualquier solución DNS), debe asegurarse de que el software no codifique la dirección IP del servidor de producción en ninguna parte. (¿Quizás desconectar la red de prueba de Internet/red de producción?)

información relacionada