maquina - El reenvío de puertos del puerto 80 del host al puerto 80 de VirtualBox no funciona
internet en virtualbox (3)
He leído la guía de reenvío de puertos de VirtualBox, preguntas similares en este sitio y en otros sitios, pero no pude encontrar una solución.
UFW está habilitado en el sistema operativo invitado (Ubuntu), los puertos 80 y 22 están abiertos. Puedo ssh desde el host a ubuntu y puedo acceder al sitio de ubuntu desde el navegador del host.
En Guest, configuro los adaptadores Nat y hostonly (vboxnet3). También se abrió el puerto del enrutador 80 (192.168.1.90) La IP del invitado es 192.168.70.10
Así que en configuración de invitado> Nat> reenvío de puertos pongo:
TCP host-ip: 192.168.1.90 host-port: 80 guest-ip: 192.168.70.10 guestost-port: 80
Sin embargo, esta configuración no funciona. Aprecio si me diriges al camino correcto.
Como mencionó William, un sistema operativo Linux / Unix no permitirá que un proceso escuche en puertos <1024 a menos que se ejecuten como root. Puede ejecutar VirtualBox como root, aunque he leído advertencias sobre cómo hacerlo. Probablemente sea terriblemente inseguro.
En su lugar, configure Apache2 en el sistema host para que escuche en el puerto 80 (ya debería estar configurado para eso), pero en lugar de servir un sitio web en la máquina host, haga que el tráfico proxy se dirija a un puerto superior, por ejemplo, 8080. el anfitrión.
Luego, haga que VirtualBox reenvíe ese puerto superior al puerto 80 del SO huésped.
La configuración de Apache sería algo como esto:
Instale el módulo proxy HTTP
a2enmod proxy_http
Asegúrese de que
/etc/apache2/ports.conf
tenga una directivaListen 80
en ellaAgregue otro sitio en
/etc/apache2/sites-available
o modifique el sitio predeterminado (o simplementeports.conf
enports.conf
)<VirtualHost *:80> ProxyPreserveHost On ProxyRequests Off ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost>
rebotar apache
service apache2 restart
La configuración de VirtualBox sería el host port: 8080, guest port: 80
.
El tráfico iría:
client --> host:80 --> Apache --> host:8080 ---> vbox NAT ----> guest:80
Esto es similar al túnel ssh de William, pero no requiere intervención manual (volver a ingresar una contraseña) cada vez que se reinicia el host.
Este es otro enfoque que podría funcionar si no se siente cómodo ejecutando VirtualBox como usuario root. Puede usar SSH para configurar el reenvío de puertos desde el puerto host 80 a algún puerto no restringido (en el ejemplo a continuación, uso el puerto 8080), que a su vez se reenviará al puerto 80 invitado. Convoluted, pero funciona.
- Reenvíe desde el puerto host 8080 al puerto invitado 80. Asegúrese de que esté funcionando apuntando un navegador al puerto 8080 en su máquina host.
- Asegúrese de que sshd se está ejecutando en su host. En Mac OS X, vaya a
System Preferences -> Internet & Wireless -> Sharing
y asegúrese de queRemote Login
opciónRemote Login
esté marcada. Conviértete en root en tu host
$ sudo su -
Reenvíe el puerto host 80 al puerto 8080 usando SSH (la dirección de enlace
/*
hace que el puerto esté disponible en todas las interfaces).# ssh yourusername@localhost -L /*:80::8080
Tenga en cuenta que le pedirá que inicie sesión con las credenciales que use para su nombre de usuario, por lo que es muy probable que le solicite su contraseña y, cuando tenga éxito, en realidad inicie sesión.
Ahora debería poder acceder al puerto 80 en su máquina host y ver el mismo servicio que al puerto 8080 en su máquina host, también conocido como puerto 80 en su sistema operativo invitado.
Si no desea que otros usuarios de su red puedan acceder al puerto 80 en esa máquina, pero aún desea poder acceder a él desde un navegador en su sistema host, enlace el puerto a localhost
:
# ssh yourusername@localhost -L localhost:80::8080
Según http://www.virtualbox.org/manual/ch06.html#natforward
Reenvío de puertos host <1024 imposible:
En hosts basados en Unix (por ejemplo, Linux, Solaris, Mac OS X) no es posible enlazar a puertos por debajo de 1024 desde aplicaciones que no son ejecutadas por root. Como resultado, si intenta configurar dicho reenvío de puerto, la máquina virtual se negará a iniciar.
Es posible ejecutar VirtualBox como root, que le permitirá reenviar los puertos del Host <1024, por lo que si está convencido de hacerlo con VirtualBox, puede convertirse en root y ejecutar VirtualBox de esta manera:
$ sudo su -
# VirtualBox