Línea 32: | Línea 32: | ||
Creamos una interfaz tap | Creamos una interfaz tap | ||
tunctl -t virt0 | tunctl -t virt0 | ||
+ | ifconfig virt0 promisc up | ||
Creamos un switch (o bridge) virtual y agregamos nuestra interfaz | Creamos un switch (o bridge) virtual y agregamos nuestra interfaz | ||
+ | brctl addbr br0 | ||
+ | brctl addif br0 eth0 | ||
+ | brctl addif br0 virt0 | ||
+ | ifconfig br0 up | ||
+ | |||
+ | Configuramos br0 con la ip que tenía nuestra interfaz física | ||
+ | ifconfig eth0 0.0.0.0 # Desconfiguramos eth0 | ||
+ | ifconfig br0 ... # Configuramos br0 como si fuera eth0 | ||
+ | |||
+ | Luego ejecutamos kvm pasandole el nombre de la interfaz creada | ||
+ | kvm -net nic -net tap,ifname=virt0,script=no maquinaHuesped.img |
El documento está centrado en kvm, pero como el monitor de kvm está basado en qemu, casi todo lo mencionado aquí funcionará en qemu.
Verificación de soporte para virtualización. Para ver si nuestro procesador soporta virtualización podemos ejecutar el siguiente comando
cat /proc/cpuinfo
y verificar si aparece el flag "vmx" para intel, o "svm" para amd.
En el caso de los intel es muy probable que haya que habilitar la opción de virtualización desde el bios y luego apagar y prender la máquina (no reiniciarla, tiene que quedar sin corriente el microprocesador).
Simplemente debemos instalar el paquete kvm con Synaptic o apt-get
apt-get install kvm
En kvm/qemu tenemos varias formas de configurar la red. Voy a nombrar solamente 2 de las más comunes.
Una opción es la red en modo usuario. Este caso es ideal cuando no tenemos privilegios en la máquina anfitrión y no requiere configuración extra.
Desde la máquina huésped podremos usar esta red simplemente ejecutando dhclient o la herramienta correspondiente al sistema operativo que usemos.
Desde el anfitrión no es necesaria ninguna configuración extra, la desventaja de esto es que el anfitrión no podrá conectarse con el huésped (aunque el huésped podrá conectarse con él y con otras máquinas).
Para usar redes en modo usuario debemos ejecutar kvm como sigue:
kvm -net nic -net user maquinaHuesped.img
Con interfaces virtuales podremos hacer que las máquinas virtuales sean visibles desde el anfitrión, desde otras máquinas virtuales e incluso desde otras máquinas físicas.
Para esto precisaremos permisos especiales, en esta guía haremos todo con permisos de root, queda como trabajo para el lector, si es necesario como otorgar permisos a usuarios comunes para que realicen alguna de estas tareas.
En este modo crearemos interfaces virtuales para las máquinas virtuales y les asignaremos un nombre así serán visibles desde el anfitrión con ifconfig. Luego conectaremos estas interfaces como si estuvieran conectadas con un switch con bridge-utils.
Para crear interfaces virtuales tap, debemos instalar uml-utilities y bridge-utils para conectarlas con otras interfaces.
Creamos una interfaz tap
tunctl -t virt0 ifconfig virt0 promisc up
Creamos un switch (o bridge) virtual y agregamos nuestra interfaz
brctl addbr br0 brctl addif br0 eth0 brctl addif br0 virt0 ifconfig br0 up
Configuramos br0 con la ip que tenía nuestra interfaz física
ifconfig eth0 0.0.0.0 # Desconfiguramos eth0 ifconfig br0 ... # Configuramos br0 como si fuera eth0
Luego ejecutamos kvm pasandole el nombre de la interfaz creada
kvm -net nic -net tap,ifname=virt0,script=no maquinaHuesped.img