Tengo un host de Windows 7 que maneja un invitado VirtualBox Debian con nat. Este invitado ejecuta algunos servicios web a los que se puede acceder desde el exterior mediante la redirección de puertos.
Necesito proporcionar acceso externo a estos servicios a través de URL, pero no puedo confiar en una resolución DNS adecuada, por lo que tengo que propagar la IP del host al entorno invitado. ¿Cómo podría hacer eso con el mínimo impacto en el host?
Algunas aclaraciones: "el exterior", "acceso externo" se refiere a navegadores web alojados en el mismo nivel que el host, es decir. no pueden confiar únicamente en la dirección del host.
Un dibujo vale más que mil palabras:
+--------------+ External
| Windows Host | network +---------------------+
| +----+ | | Web client |
| | | NAT | +----------------+ |
| | ------------------------> Page generated | |
| | | | | |by VM with URLs | |
| | VM | | | |to host | |
| | | | | +--------|-------+ |
| | | FWD | | |
| | <--------------------------------+ |
| | | | +---------------------+
| +----+ |
+--------------+
Respuesta1
Una forma de lograrlo es el truco detrás de sitios comowhatsmyip.com. todo lo que necesita es un servidor web en su red que envíe la dirección IP desde donde recibe una solicitud al cliente.
Recuerde, dado que está utilizando NAT, el servidor ve la dirección del enrutador NAT (en este caso, el host VM) como dirección de origen.
Para lograr esto, puede crear un script php (es decir whatsmyip.php
,) en la raíz web de su servidor web, como
//whatsmyip.php
<?php
//Gets the IP address
$ip = getenv("REMOTE_ADDR") ;
Echo "$ip;
?>
y accede a él desde tu invitado comohttp://webserver/whatsmyip.php
(fuente:Pensamientoco.com )
Ahora sólo te falta evaluar esa respuesta en tu servicio.
Respuesta2
Teniendo en cuenta la respuesta de Guntbert, esto implica:
- Utilice un servidor web de terceros en la red "externa" para alojar un respondedor de dirección remota como se describe en la respuesta dada.
- Durante la fase de inicialización de la VM (y/o periódicamente según el contexto de la red), examínela para obtener la dirección externa del host de Windows.
- Utilice la dirección recuperada para falsificar URL mientras crea páginas.