Creación De Máquinas Virtuales Con Qemu Y KVM

Muchas veces es necesario tener máquinas virtuales disponibles en nuestros servidores, ya sea para alojar aplicaciones web, existen aplicaciones dedicadas muy fáciles de usar como ProxMox, VMWare o VirtualBox pero, para producción de ambientes virtualizados en Linux, el estándar es Qemu con KVM.

Primero debemos comprobar los requerimientos de nuestro sistema, en este caso vamos a utilizar una distribución basada en Debian o Ubuntu.

Necesitamos saber como está nuestra red para ver las IPs en uso utilizamos el comando:

$ sudo lsof -i -P -n | grep LISTEN

Tambien debemos comprobar que los CPUs puedan utilizarse para virtualización

$ lscpu | grep Virt
Virtualization:     VT-x

Para instalar los paquetes necesarios para la virtualización es mejor cambiarnos a la cuenta de root:

$ sudo su

E instalamos con apt

# apt-get install qemu qemu-kvm libvirt-clients libvirt-daemon-system 
bridge-utils libguestfs-tools genisoimage virtinst libosinfo-bin

Añadimos a los usuarios necesarios al grupo que administra la virtualización

# adduser <youruser> libvirt
# adduser <youruser> libvirt-qemu
# newgrp libvirt
# newgrp libvirt-qemu

Posteriormente iniciamos el daemon de virtualización

# systemctl enable --now libvirtd

Después tenemos que configurar la red para nuestra máquina virtual para esto usaremos un puente y una configuración NAT (ya luego vemos como sacar la VM con un puerto:

Tenemos que definir el puente en las interfases del servidor /etc/network/interfaces:

auto br0 inet static
        address XX.XX.XX.XX
        netmask 255.255.255.0
        gateway XX.XX.XX.254
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0

añadimos el puente

# brctl addbr brkvm
# ip addr add 192.168.56.101/24 dev brkvm
# ip link set brkvm up

Corremos la máquina virtual como

# qemu-system-x86_64 -hda biblioteca-disk.qcow2 -name biblioteca -m 6144 
-cpu kvm64 -daemonize -smp 8 -vnc :0

En general en mi limitada experiencia es mejor utilizar el creador de máquinas virtuales y configurar las redes en NAT para trabajar en ambientes controlados, nunca me ha funcionado hacer puentes que funcionen completamente libres. Pero puentes NAT con DHCP si y con esto funcionan o cambiando la dirección estática de la configuración por dhcp en lugar de static y quitando el IP, gateway y netmask.