Prácticas de redes de ordenadores con VirtualBox Este Este tutori tutorial al está basado basado y probad probado o en la versión versión 3.2.4r6 3.2.4r6246 2467 7 de VirtualBox VirtualBox.. Las máquinas máquinas virtuales virtuales (VM, Virtual utiliza izan n un S.O. S.O. Linu Linux, x, en conc concre reto to la Virtual Machine Machine) util distribución Fedora Core 11. 11 .
Creación de máquinas virtuales a partir de una máquina virtual “base”
(Referencia: http://forum.virtualbox.org/viewtopic.php?f=1&t=23586&start=0 http://forum.virtualbox.org/viewtopic.php?f=1&t=23586&start=0)) En este apartado se creará una máquina virtual “base” que será clonada para generar varias máquinas virtuales iguales. Para estas máquinas clonadas sólo se guardarán las dife diferen renci cias as entr entree los los disco discoss duro duross con con la VM “bas “base”, e”, de form formaa que que se reduc reducir iráá notablemente el espacio requerido en disco. Así, si el disco duro de una VM requiere por ejemplo 5GB, una VM base y 3 clonadas requerirían 20GB. Sin embargo, al usar discos diferenciales (differencing disks) sólo se requerirían 5GB + el espacio necesario para guardar las diferencias (del orden de pocas centenas de MB, dependiendo de esas es as diferencias).
Esta idea ya es habitual en otras soluciones, como los clones enlazados (linked clones) de VMWare VMWare.. Aunque también es posible utilizar este concepto en VirtualBox VirtualBox,, no se puede hacer directamente a través de menús sencillos ni es trivial su uso. Sin embargo, los siguientes pasos lo permiten, reduciéndose así las necesidades de almacenamiento de un ordenador donde queramos crear varias VMs similares. Paso Paso 1. Crea Crearr una una máqu máquina ina virtu virtual al “base “base”: ”: New → Name=VMbase, OS =Linux, =Linux, Version=Fedora (e.g. memoria base=256Mb, create new hard disk with dynamically expanding storage , e.g. con 30GB).
Paso 2. Instalar el S.O. E.g. Fedora Core 11, devices → mount CD/DVD-ROM → elegir la imagen .iso o el DVD con FC11 para instalarlo. Se instala como cualquier PC. Paso 3. El disco duro de esa máquina hay que hacerlo inmutable, para que no pueda modificarse. Para ello:
a) Desconectar el disco duro de la máquina virtual ( Settings → Storage → Open Virtual Media Manager → elegir el disco duro y pulsar “ Release“).
b) En la línea de comandos ejecutar: VBoxManage
modifyhd
--type
immutable
es el nombre del disco duro ( File → Virtual Media Manager → fichero .vdi; también se puede obtener con el comando “VBoxManage showvminfo “, donde es el nombre de la máquina virtual creada). VBoxManage.exe showhdinfo"C:\Users\Jorge\.VirtualBox\HardDisks\VMbase.vdi"
Paso 4. Crear la máquina virtual que será un “clon” de la máquina virtual “base” (igual que paso 1).
Paso 5. Conectar el disco duro inmutable a la máquina virtual “clon”. Al arrancar se crearía un disco duro “diferencial” (differencing disk ) con las diferencias entre el disco duro “base” y los cambios que ejecutemos en esta máquina virtual (no hay que arrancar la máquina en este paso).
Paso 6. Encontrar el identificador UUID del disco duro “diferencial” ejecutando “VBoxManage showvminfo “, donde es el nombre de la máquina virtual “clon”.
Paso 7. Hacer que el disco duro “diferencial” no se elimine cada vez que arrancamos la VM “clon” (opción por defecto). Para ello ejecutaremos “VBoxManage modifyhd --autoreset off“.
Paso 8. Repetir los pasos 4 al 7 tantas veces como máquinas virtuales “clones” queramos crear, e.g. VMbase_clone1, VMbase_clone2 y VMbase_clone3.
Hay que considerar las limitaciones del HW donde estamos ejecutando las VMs, principalmente memoria, procesador y disco duro. Por ejemplo, si la memoria es de 1GB y ejecutamos a la vez 3 máquinas virtuales con 256MB cada una, dejaríamos al sistema anfitrión (S.O. de la máquina real) con 1GB – 3*256MB = 256MB, lo que haría que nuestro sistema fuese muy lento. En este ejemplo sería imposible ejecutar simultáneamente 4 o más máquinas virtuales (por falta de memoria).
Configuración de múltiples redes entre las máquinas virtuales El escenario que se quiere montar en este ejemplo es el representado por la siguiente figura:
Como se observa, cada VM tiene un interfaz de red hacia el exterior (conexión a Internet) y otros interfaces (1 ó 2) hacia las otras VMs (redes 1 y 2, internas entre máquinas virtuales). Configuración del interfaz que accede al exterior (Internet) mediante NAT (Referencia: http://www.virtualbox.org/manual/UserManual.html#changenat) Hay que hacer que cada máquina tenga una dirección distinta en el acceso al exterior, ya que, al partir de la misma VM base, inicalmente tienen la misma dirección IP. Por defecto, se utiliza una dirección del rango 10.0.x.0/24 para cada interfaz conectado al exterior, empezando por x=2 (primer interfaz de red → dirección 10.0.2.15; segundo interfaz de red → dirección 10.0.3.15, …). En nuestro ejemplo se utilizarán los rangos 192.168.10+x.0/24, siendo x=1, 2 ó 3 según la VM de la que se trate. Para modificar la dirección de cada máquina se puede utilizar el comando:
•
•
•
VMbase_clone1:
VBoxManage --natnet1"192.168.11/24" VMbase_clone2: VBoxManage --natnet1"192.168.12/24" VMbase_clone3: VBoxManage --natnet1"192.168.13/24"
modifyvm
"VMbase_clone1"
modifyvm
"VMbase_clone2"
modifyvm
"VMbase_clone3"
Así serán de redes diferentes y no habrá conflicto de direcciones. NOTA: Si algún interfaz (de otras redes, e.g. internas entre máquinas virtuales) tiene definida una pasarela (gateway), el interfaz de red que accede al exterior no funcionará correctamente porque la ruta por defecto la definió el primer interfaz. Dicho de otro modo, no debe haber definida ninguna ruta por defecto para que el interfaz que accede al exterior añada una ruta por defecto a través del motor de red de VirtualBox (dirección 2 de la red NAT creada, e.g. 192.168.11.2). Configuración de interfaces para redes entre máquinas virtuales En primer lugar, hay que configurar los interfaces de red y las redes a las que se conectarán las VMs. El caso que se muestra es el de la VM VMbase_clone2, ya que es la que tiene mayor complejidad. Tendrá un interfaz que se conecta al exterior mediante NAT, otro conectado a la red interna (entre VMs) red1 y un último conectado a la red internared2. En VirtualBox → Machine → Settings → Network :
La configuración de la VM debe quedar:
Después habrá que configurar los interfaces de red en el Sistema Operativo instalado. En el caso de Fedora Core 11 se puede utilizar System → Administration → Network :
También se podría hacer modificando directamente los ficheros /etc/sysconfig/network scripts/ifcfg-ethX (en Fedora Core y RedHat, en otras distribuciones puede ser diferente):
Además de configurar los interfaces de red de las diferentes VMs, hay que realizar algunos cambios para conseguir el escenario deseado: •
VMbase_clone1: creación de ruta hacia la “red 2″
route add -net 172.16.2.0 netmask 255.255.255.0 gw 172.16.1.222 •
VMbase_clone2: actuación como router (reenvío de paquetes)
echo 1 > /proc/sys/net/ipv4/ip_forward •
VMbase_clone3: creación de ruta hacia la “red 1″
route add -net 172.16.1.0 netmask 255.255.255.0 gw 172.16.2.222
Otras opciones de red interesantes (no siempre harán falta) – deshabilitar el uso (no aceptar y no enviar) de mensajes ICMP redirects (para informar de rutas más directas): echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects echo 0 > /proc/sys/net/ipv4/conf/default/accept_redirects echo 0 > /proc/sys/net/ipv4/conf//accept_redirects, donde es
el interfaz de red deseado (e.g. eth0) echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects echo 0 > /proc/sys/net/ipv4/conf//send_redirects, donde es el
interfaz de red deseado (e.g. eth0) Para que estos cambios sean permanentes, se pueden copiar los comandos a los ficheros $HOME\.bashrc de las respectivas máquinas virtuales (e.g. “gedit $HOME\.bashrc &” y añadir los comandos al final del fichero). Para probar que todo funciona correctamente, se puede hacer un ping entre todos los ordenadores. VirtualBox Guest Additions ( VBTools )
Esta herramienta permite mejorar la interacción entre el Sistema Operativo anfitrión (host) y el Sistema Operativo huésped (guest). Por ejemplo, permite cambiar el foco entre uno y otro cuando el ratón sale de la ventana de VirtualBox, permite copiar texto en el portapapeles y pegarlo en el otro Sistema Operativo, etcétera. En VirtualBox → Devices → Install Guest Additions → se monta un CDROM con el programa a instalar.
Tras instalarlo hay que decirle al S.O. que lo ejecute al arrancar. En el caso de FC11 sería enSystem → Preferences → Startup programs → Add (name=vboxclient,command=/usr/bin/VBoxClient-all, comment=VirtualBox User Session Services) (comprobar si lo añade automáticamente).
Directorios compartidos
Una manera sencilla para compartir ficheros entre el S.O. anfitrión y el S.O. huésped sería utilizar una memoria usb. Sin embargo, sería más sencillo poder tener un directorio del disco duro que fuese accesible tanto para la máquina real como para la máquina virtual. Esto se conoce como directorio compartido .
Para crear un directorio compartido, en VirtualBox → VM settings → shared folders → (+) → directory (e.g. d:\work), name(e.g. work).
En Linux → dentro del fichero $home\.bashrc (el fichero que ejecuta comandos y procesos al arrancar la sesión del usuario puede variar en función de la distribución de Linux utilizada), hay que incluir la línea “ mount -t vboxsf work /mnt/work “.
Uso básico de la herramienta YUM
Comprobación de la existencia de un paquete para su posterior instalación: yum list nombre_de_paquete, e.g. yum list xinetd
Instalación de un paquete:
yum install nombre_de_paquete_completo, e.g. yum install xinetd.i586
Instalación del superservidor xinetd : yum install xinetd.i586
Instalación del servidor de telnet (requiere xinetd ): yum install telnet-server.i586
Instalación de un servidor de FTP:
Pasos a seguir para instalar vsftpd : 1) yum install vsftpd 2) Editar el fichero /etc/vsftpd.conf : •
•
•
Cambiar “anonymous_enable=YES ” a “anonymous_enable=NO” para deshabilitar el uso de FTP anónimo. Descomentar “local_enable=YES” para habilitar el uso de cuentas en la máquina local (i.e. el servidor FTP). Comentar “listen=YES ” para permitir que xinetd pueda escuchar en su lugar.
Para configurarlo con xinetd : (Referencia: http://www.polarhome.com:793/~anujhere/2008/07/01/vsftpd-integrationwith-xinetd-on-linux/): 1) Crear un fichero /etc/xinetd.d/vsfpt con las entradas siguientes: # default: off # description: The vsftpd FTP server serves FTP connections. It uses # normal, unencrypted usernames and passwords for authentication. service ftp{ disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd nice = 10 #allow only 10.1.10.2 machine only_from = 10.1.10.2 }
2) Editar el fichero /etc/vsftpd/vsftpd.conf y comentar la línea con “ listen=YES ”. 3) Reiniciar el servicio xinetd . /sbin/service xinetd reload
Para comprobar la configuración se ejecuta el comando:
netstat -a |grep ftp
Y para eliminar conflictos en tiempo de arranque hay que para el servicio vsftpd. chkconfig vsftpd off
Una vez comprobado que vsftpd está integrado con xinetd , hay que comprobar que xinetd arranca de forma automática. chkconfig xinetd on
Instalación de wireshark: yum install wireshark-gnome
Otras cosas: # Instalar KDE en Ubuntu (Referencia: http://www.my-guides.net/en/content/view/120/26/) sudo aptitude update && sudo aptitude install kubuntu-kde4-desktop
(Referencia: http://www.watchingthenet.com/switch-between-gnome-and-kde-desktopsin-ubuntu-or-kubuntu.html) # KDE: sudo apt-get install kubuntu-desktop # GNOME: sudo apt-get install ubuntu-desktop Terminal en el menú contextual: # KDE – Terminal en menú contextual (Referencia: http://ubuntuforums.org/showthread.php?t=455627) En un terminal, ejecutar kcontrol. Entonces, navegar al desktop → behaviour → mouse button actions → right button → custom menu 1 → pulsar el botón edit, y configurar cualquier acción u opción que se requiera al menú contextual (botón derecho del ratón). # GNOME: “apt-get install nautilus-open-terminal“