
Para modificar la dirección resuelta de un host, podemos cambiar /etc/hosts.
Quiero tener esa funcionalidad al ejecutar un único script sin modificar /etc/hosts.
Algo
$HOST=foo.bar:10.0.1.256 ping foo.bar
sería lo mismo que tener una entrada en /etc/hosts
10.0.1.256 foo.bar
y$ ping foo.bar
¿Es esto factible?
Respuesta1
Duplicado de¿Puedo crear un archivo hosts específico del usuario para complementar /etc/hosts?, donde se explica el uso de HOSTALIASES.
Básicamente, estableces una variable de entorno HOSTALIASES que apunta a tu propio archivo de hosts.
Mas información enpágina de manual de nombre de host(7)
Respuesta2
No hay archivos de host de usuario, una configuración de enlace compleja funcionaría alojando la aplicación detrás de una IP interna diferente... sin embargo... la aplicación debería poder omitir DNS...
Si desea hacer esto para una aplicación que realiza llamadas http/https, puede omitir el DNS por completo. Al realizar una solicitud http, el dominio se copia en los encabezados, puede omitir este paso anulando el encabezado...
Por ejemplo;
wget --header="Anfitrión: www.ejemplo.com" "http://127.0.0.1/bob/is/cool"
Esto enviará una solicitud http a localhost, sin embargo, la solicitud http sería para www.example.com, no 127.0.0.1...
(evitó dns e hizo una llamada http válida para el dominio correcto).
Si por alguna razón se trata de un servicio tcp alternativo que no tiene un identificador como un host en la solicitud, entonces funcionaría una configuración de enlace loca (niegue la IP src de la aplicación, se resolverá en un servicio DNS diferente).
Otra solución sería utilizar el firewall del kernel...
divida la aplicación a una LAN diferente o tal vez a una dirección de bucle inverso, luego podrá realizar DNAT a una IP diferente según la dirección del paquete de origen...