Hasta aquí, tenemos un CentOS con capacidad de proveer páginas web, interpretar php y dar servicio (interno) de MySQL. Lo tenemos medianamente seguro: el acceso por SSH, sin que el usuario root pueda ingresar y un usuario con «súper poderes» cuando los necesite. Ahora es momento de «emular» conexiones a este servidor como si se tratara de un equipo remoto, sin utilizar «localhost» sino su verdadero nombre (o si desean ir más lejos, como un dominio)…
Cómo funcionan las conexiones de Red en Virtual Box
Hasta ahora, cada vez que ingresábamos vía SSH a la Virtual Box lo hacíamos de la forma «usuario@localhost», indicando el puerto NAT y estábamos dentro…
No está mal… Pero ¿Qué significa esto?… Trataré de explicarlo «simple» sin entrar en detalles profundos (perdón). NAT, Network Address Translation (Traducción de Direcciones de Red) es el mecanismo por el cual «algo» se encarga de que una dirección en el destino sea «enrutada» adecuadamente. En nuestro caso, cuando desde «localhost» (el Anfitrión) nos comunicamos hacia el puerto 28022, NAT se encarga que al CentOS (el Invitado) llegue al puerto 22. Una «operadora» que se encarga de «conectar» ambos extremos…
Podríamos «convivir» con esto, sin más… Creando «reglas» de NAT como hicimos hasta ahora, pero… ¿Y si quisiéramos acceder a la Virtual Box de un modo más «real»?¿Cuál es su IP?… ¿Y si tengo varias?…
La IP de una Virtual Box, cuya interfaz por defecto está activa (eth0) es SIEMPRE 10.0.2.15 desde el Invitado… Dicho de otro modo, TODAS las Virtual Box, la eth0 con NAT (por defecto) tienen la IP 10.0.2.15. Y desde el Anfitrión, dicha IP es inaccesible…
Tampoco será accesible la IP estática provista por Virtual Box al Anfitrión (10.0.2.1) desde el Invitado… Y está bien para mantener las cosas «simples».
Pero… ¿Y si quiero emular un «contexto»?… Virtual Box nos provee de hasta 4 interfaces de red (Red 1 hasta Red 4) que en el Invitado se traducen de eth0 a eth3, usualmente…
De todos los tipos ofrecidos, NAT es por defecto para la eth0, lo que le permite al Invitado acceder a, por ejemplo, Internet por medio del Anfitrión de una manera «transparente»… De veras, no quiero profundizar mucho porque confundiría más. De ser de interés, podría en un futuro escribir una guía al respecto…
Si queremos acceder a los Invitados, y éstos al Anfitrión como si se tratara de una red «real», viene a nuestro auxilio el tipo «Sólo Anfitrión». Si, si, si… Ya sé que hay otros modos, pero para mantener esta guía «simple y clara» lo haremos de este modo…
En los próximos pasos activaremos otra interfaz de red y la configuraremos como «Sólo Anfitrión», de modo tal que podremos conectar por IP al Anfitrión y a los Invitados para armar una «red virtual» entre ellos, que todos sean accesibles y visibles entre ellos…
En limpio:
- eth0 de cada Virtual Box será NAT y por medio de ella se tendrá contacto con Internet,
- eth1 de cada Virtual Box será «Sólo Anfitrión» y formará parte de una red «privada» (LAN, Local Área Network) por la que se podrán poner en contacto los Invitados en cada Virtual Box y el Anfitrión…
Habilitar una segunda Red en Virtual Box
Si la Virtual Box de CentOS está en ejecución deberemos apagarla… Supongo que ya saben cómo… ¿No?… Si están «logueados» en ella, «poweroff» (o sudo poweroff si no son root)
Volvemos a «Configuración»:
Seleccionamos Red…
Cliqueamos sobre la pestaña «Adaptador 2»
Lo habilitamos…
Seleccionamos «Adaptador sólo-anfitrión»
Y esto es importante, tomamos nota de la dirección MAC (Media Acces Control, Control de Acceso al Medio).. Es probable que sea diferente, y no tiene importancia (mejor) que así lo sea:
Iniciamos la Virtual Box, e ingresamos para configurar la «nueva» interfaz de red…
Configurar la red nueva en CentOS
Una vez logueados, vamos a la carpeta de configuración de red:
$ cd /etc/sysconfig/network-scripts/ $ sudo cp ifcfg-eth0 ifcfg-eth1
El archivo ifcg-eth0 ya lo habíamos editado antes, ahora lo copiamos y lo editaremos, pero antes… Una sutileza: necesitaremos una UUID para la interfaz de red eth1…
Es un identificador único que, por una mera cuestión formal, le asignaremos a nuestra nueva «placa» virtual… Para ello ejecutamos la siguiente orden:
$ uuidgen eth1 1e3f6f72-6fc6-494a-927d-a85287438565
El número otorgado probablemente sea otro, lo copiamos… Necesitaremos otro dato: la red que configura Virtual Box para el identificador «vboxnet0» que creamos antes… Para averiguarlo realizamos estos pasos:
Luego…
Vamos a Red solo-anfitrión…
Seleccionamos el botón con el «destornillador» (me costó distinguirlo)…
Ésta es la IP del Anfitrión… 192.168.56.1…
Y este será el rango de la IP que ofrecerá al Invitado, como nos interesa conservar la misma IP, tomaremos nota de el Límite inferior (o una que sea diferente a la del Anfitrión)… Yo elijo la que indica como inferior…
Y con esos datos, finalmente, editamos ifcfg-eth1
$ nano ifcfg-eth1
En el editor veremos esto:
DEVICE=eth0 HWADDR=08:00:27:91:F3:F5 TYPE=Ethernet UUID=dca6f6c2-de77-4f37-a93a-53f13bf50c9e ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=dhcp
Lo editamos de modo que quede así:
DEVICE=eth1 HWADDR=08:00:27:6D:21:2B TYPE=Ethernet UUID=1e3f6f72-6fc6-494a-927d-a85287438565 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.56.101 NETMASK=255.255.255.0 GATEWAY=192.168.56.1
Si repasan lo visto hasta ahora, verán las referencias de cada valor…
Guardamos el archivo y, para ahorrarnos pasos más cómodo nos queda un «reboot» (recuerden el sudo si hace falta)…
Al reingresar al CentOS, ahora lo podremos hacer desde la IP (en mi caso 192.168.56.101)
$ ssh [email protected]
¿Qué pasó con el parámetro -p 28022? Pues, ya no hace falta, nos conectaremos por la LAN «virtual» y el SSH nos espera por el puerto 22. El 28022, en nuestro ejercicio, sirve para la eth0, gobernada por la NAT…
Y tanto desde una consola del Anfitrión, como desde el Invitado podremos cruzar «pings» a sus respectivas nuevas IP para confirmar que se «ven»…
Agregar la Virtual Box a hosts
Salgamos del Invitado con «exit» y editamos, en el Anfitrión, el archivo /etc/hosts (no debe faltar el sudo)… Veremos un listado de ip 127.0.0.1 y al final de ellas agregaremos esto:
192.168.56.101 mercurio mercurio.mercurio www.mercurio.local mercurio.local
NOTA: la IP es la que hayan asignado en el punto anterior, el nombre de la máquina CentOS y su dominio el que utilizaron al instalar (ya lo hemos repasado varias veces), luego lo que continúa con «www.» y el valor siguiente son para emular la «web»… En definitiva: los valores son arbitrarios según nuestra necesidad… (guiño pícaro)…
Guardamos y volvemos a ingresar…
$ ssh administrador@mercurio
Ya está: nos conectamos a la Virtual Box como si fuera una máquina «externa» por su nombre ¿NetBIOS?… Es un poco «forzado» el término, pero los que vengan desde Windows entenderán el caso.
También podríamos utilizar cualquiera de los «sinónimos» que colocamos en /etc/hosts para esa IP… Lo «resolvería» y el resultado sería el mismo…
Guardar Estado
Como ya aprendimos, es un buen momento de poner a salvo lo hecho hasta ahora… Por ejemplo «CentOS a punto«…
Transportar la Virtual Box
Así como solemos con un «live stick«, un pendrive, llevar nuestra distribución preferida de Linux (lo más usual) y poder utilizar nuestro «escritorio» portátil en casi cualquier ordenador que permita arrancar desde un dispositivo USB; también podremos hacer lo mismo con nuestra Virtual Box.
A diferencia de aquel, que depende de las bondades físicas del ordenador real, la Virtual Box SIEMPRE tendrá la misma configuración «virtual» de dispositivos. Claro, dependiendo de las capacidades reales del ordenador donde se ejecute.
Por ejemplo, si nuestra Vitrual Box espera tener a su disposición 2 Gb de RAM y la ejecutamos en un ordenador que también tiene 2Gb, tendremos dificultades. Lo mismo para sus otras características.
En este caso particular, que estamos desarrollando, sospecho que no habrá inconvenientes de ejecutarla en casi cualquier ordenador por lo austera de su configuración.
Procedamos a «exportar» la Virtual Box… Por recomendación, DEBE estar «apagada»…
NOTA: Se exportará la Virtual Box en el estado actual, es decir, si tienen varias instantáneas y está activa la (digamos) segunda de los (por ejemplo) 5 instantáneas, ése es el estado que se exportará. Atención con eso…
Elegimos la Máquina a exportar…
El lugar lo ofrecerá por defecto en nuestra carpeta de Documentos (en Ubuntu) o la home… Ya saben…
El archivo Manifest, si lo crean, tendrá todos los parámetros de la Virtual Box, tal como la tenemos configurada al momento de exportarla. No le encontré más utilidad que «verificar» lo que ya contiene el que se incluye en el archivo «.ova»…
Luego de darle «Exportar», al cabo de unos minutos nuestro archivo estará listo para su transporte…
El archivo .ova creado lo podemos, ahora si, copiar a cualquier dispositivo de almacenamiento que llevemos con nosotros. Si tiene capacidad, claro, en este ejemplo el archivo no ocupa más de 450Mb, gracias a la compresión y que no está el disco virtual «abarrotado» de archivos…
Llegamos a donde queremos «importar» la máquinia recién exportada y realizamos estos pasos:
Luego «buscamos» el archivo .ova a importar…
Lo seleccionamos y presionamos «abrir»…
Y luego al botón «siguiente»…
Y nos mostrará los datos de la Virtual Box que estamos «trayendo»…
Le damos «Importar» y esperamos
Al finalizar, en el panel de Virtual Box aparecerá nuestra máquina importada…
Hay otro modo de poder «llevar» nuestra máquina con nosotros, sin exportar ni importar… La carpeta /home/VirtualBox VM/nombre_maquina tiene TODO lo necesario para que nuestra máquina esté al alcance, con sus instantáneas incluídas.
Si copiamos esa carpeta a un dispositivo de almacenamiento, realmente estaremos transportando nuestra Virtual Box.. Pero, quizás los tiempos de acceso sean menores y no siempre un pendrive o un disco de estado sólido es lo más confiable (la discusión al respecto de los SSD, sobre todo, tratemos de evitarla)…
Se puede optar, entonces, copiar toda esa carpeta y volcarla en la máquina de destino, es otra opción…
Como siempre, habrá algunos mensajes de error relativos a las rutas de las carpetas compartidas, de la carpeta en el dispositivo, etc… Nada grave.. Pero los dejo con la inquietud…
Para terminar…
- Ejemplos de uso del servidor de pruebas: conectar otra máquina virtual al CentOS, armando una red, restaurar una DB de desarrollo, Activar un sitio de prueba, utilizando las carpetas compartidas, Otras actividades propuestas (Conclusión)
4 comentarios