Obrir ports d'una màquina Virtual amb VirtualBox

 

Es pot donar el cas que ens trobem amb la necessitat d'haver de accedir a un port de la nostra màquina virtual des de l'exterior (Per exemple, si volem accedir per ssh a la màquina virtual el port 22 haurà de ser accessible des de l'exterior). Per configurar això no hi ha de moment com fer-ho amb la interfície gràfica de VirtualBox, però es pot fer per línia de comandaments. Per obrir un port a l'exterior d'una màquina virtual (per exemple de nom Servidor_ubuntu) haurem de crear una regla (Per exemple, de nom ssh) per obrir un port de la màquina virtual (Per exemple el 80) per a un protocol (per exemple , TCP) en un port de la màquina on està instal·lat el VirtualBox (Per exemple, el 8080). D'aquesta manera quan accedim al port que li indiquem de la màquina Amfitrió, estarem accedint al port indicat de la màquina virtual.


 

En aquest Post us comptem com utilitzar una màquina virtualitzada al VirtualBox perquè funcioni com a servidor web, ssh o el que vulguem. En general, podrem fer accessible qualsevol servei que estiguem corrent a la màquina virtual com si en realitat el estiguéssim corrent en el host (la màquina que corre el VirtualBox).

Per poder realitzar això cal re-direccionar ports des del nostre host fins l'hoste que té els serveis.

Primer haurem d'apagar la màquina virtual. Després executarem les següents ordres, Cal executar en aquest ordre:

  • $ VBoxManage setextradata "[nom VM]" "VBoxInternal/Devices/[Tipus de tarjeta]/0/LUN#0/Config/[servei]/Protocol" [protocol]

  • $ VBoxManage setextradata "[nom VM]" "VBoxInternal/Devices/Tipus de tarjeta/0/LUN#0/Config/[servei]/GuestPort" [port VM]

  • $ VBoxManage setextradata "[nom VM]" "VBoxInternal/Devices/Tipus de tarjeta/0/LUN#0/Config/[servei]/HostPort" [port Host]

 

On

* [NomVM] és el nom de la màquina Virtual.

* [Tipus de tarjeta] pcnet o e1000 tipus de la targeta de xarxa (haurem de usar un altre segons el tipus de targeta que haguem posat al VirtualBox ( si és Intel Network Adapter posarem:  e1000 o  si és PCNet posarem: pcnet).

* [0 nombre de tarjeta] aquest indica el nombre de targeta que es va a utilitzar.

* [Servei] és un nom de la nostra elecció que identifica el servei que estem exposant.

* [Port VM] és el port que obre el servei de la màquina virtual. Per exemple, 80 per a un servidor web o 22 per a un servidor ssh.

* [Port Host] és el port que en realitat està exposant el host. Pot ser el mateix o un altre port, l'efecte és que el host obre un servei en aquest port i tot el trànsit que redirigeix al servei que està corrent a la màquina virtual.

* [Protocol] el protocol del servei (TCP o UD. La major part de les vegades serà TCP.

Exemples

El primer que hem de fer és obtenir el nom de la màquina virtual, si no ho sabem podrem veure totes màquines que tenim configurades amb:

$ VBoxManage list vms

 

Exemples per crear Nateos de ports en VirtualBox (sempre que estigui configurada la interfície com NAT):

-Obrir ports per al ssh o sft. Obrim per la màquina virtual el port 22 TCP. Des de fora s'arribaria al port 22 TCP apuntant a "maquinafisica: 2222", que natearía a "maquinavirtual: 22".

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/Protocol” TCP

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/GuestPort” 22

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/HostPort” 2222


-Per l'exemple redireccionar el port 8080 del nostre host al port 80 d'un hoste que funciona com a servidor web, aquest hoste s'anomena Servidor_ubuntu. Els passos per redireccionar els ports són ingressar com a usuari normal els següents comandaments:

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/web/Protocol” TCP

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/web/GuestPort” 80

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/web/HostPort” 8080

 

-Obrir ports per al ftp. Obrim per la màquina virtual el port 21 TCP. Des de fora s'arribaria al port 21 TCP apuntant a "maquinafisica: 2121", que natearía a "maquinavirtual: 21".

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/tcp/Protocol” TCP

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/tcp/GuestPort” 22

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/tcp/HostPort” 2222

 

-Obrir ports per l'eMule: Obrim per la màquina virtual el port 4662 TCP i el port 4672 UDP. Des de fora s'arribaria al port 4662 TCP apuntant a "maquinafisica: 4662", que natearía a "maquinavirtual: 4662".

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/emule/Protocol” TCP

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/emule/GuestPort” 4662

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/emule/HostPort” 4662

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/emule/Protocol” UDP

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/emule/GuestPort” 4672

  • $ VBoxManage setextradata "Servidor_ubuntu" “VBoxInternal/Devices/e1000/0/LUN#0/Config/emule/HostPort” 4672

 

Per comprovar si ha agafat els canvis bé, no tenim més de fer:

$ VBoxManage getextradata [nom VM] enumerate

 

Una vegada que ha escrit les ordres anteriors, vostè necessita tancar la màquina client (un reinici no serà suficient), reinicieu l'ordinador i després podrem connectar-mos a través de SSH.


En encendre la màquina virtual després d'haver obert ports, ens indica aquest error:


Aquest error apareix quan obrim els ports indicant una targeta de xarxa que no és la que li hem indicat en la configuració a la màquina (pcnet, e1000, ...). Per solucionar-haurem de canviar la targeta de xarxa en la configuració de la màquina virtual per la corresponent que haguem posat en obrir el port. O sinó esborrar les dades del port obert i tornar a posar per a la targeta de xarxa correcta.

I això és tot. Recordeu això sí que VirtualBox no obre ports del firewall del host, si volem fer-ho ho hem de fer nosaltres mateixos.

 

Per veure altres configuracions del joomla podeu anar a (Seccions - Eines del Sistema - Oracle VM VirtualBox) d'aquest bloc o des d'aquest enllaç Oracle VM VirtualBox

Salut, fins el següent article.