Configuración de red en las máquinas virtuales
Todas las máquinas que hemos creado durante el curso se han conectado de forma predeterminada a la red default.
Sin embargo, en este apartado vamos a aprender algunas cosas nuevas: a crear máquinas virtuales conectadas a otras redes definidas por el usuario y a añadir interfaces de red a máquinas virtuales ya existentes.
Crear máquinas virtuales conectadas a una red existente
Para crear una máquina virtual conectada, por ejemplo, a la red red_nat, podemos usar virt-install:
usuario@kvm:~$ virt-install --connect qemu:///system \
--virt-type kvm \
--name debian12 \
--cdrom /var/lib/libvirt/images/debian-12.10.0-amd64-netinst.iso \
--os-variant debian12 \
--network network=red_nat \
--disk size=10 \
--memory 1024 \
--vcpus 1
- Con la opción
--network network=red_natindicamos que la máquina tendrá una interfaz de red conectada a la red cuyo nombre esred_nat. - Para conectar una máquina a una red también podemos indicar el bridge virtual al que queremos conectarla. En este caso utilizaríamos la opción
--network bridge=virbr1.virbr1es el bridge virtual que gestiona la redred_nat. - Si indicamos varios parámetros
--network, estaríamos añadiendo a la nueva máquina varias interfaces de red.
Añadir nuevas interfaces de red a máquinas virtuales
Para añadir una nueva interfaz de red a una máquina virtual, vamos a modificar su definición XML. Podríamos usar virsh edit e incluir la definición XML de la nueva interfaz. Sin embargo, vamos a usar un comando de virsh que nos facilita la operación de añadir una nueva interfaz de red y, por tanto, la modificación de la definición XML de la máquina. Es recomendable hacer esta operación con la máquina parada.
Por lo tanto, vamos a añadir a la máquina debian12 una interfaz de red conectada a la red red_nat. Esta configuración se puede realizar con la máquina virtual iniciada. Para ello, ejecutamos:
usuario@kvm~$ virsh attach-interface debian12 network red_nat --model virtio --persistent
Si la máquina virtual no tiene entorno gráfico y, por tanto, no tiene instalado el programa NetworkManager habrá que acceder a ella y configurar la nueva interfaz de red. En primer lugar, comprobamos que tenemos una nueva interfaz en la máquina virtual:
usuario@debian12:~$ ip a
...
3: enp7s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 52:54:00:15:16:61 brd ff:ff:ff:ff:ff:ff
La dirección MAC la utilizaremos posteriormente para poder desconectar la interfaz de la máquina virtual. A continuación deberíamos configurar la interfaz de red en la máquina virtual. Este punto se estudiará en apartados posteriores.
Podemos ver la lista de las interfaces de red con el comando virsh:
usuario@kvm~$ virsh domiflist debian12
Interface Type Source Model MAC
-------------------------------------------------------------
vnet0 network default virtio 52:54:00:55:8f:30
vnet1 network red_nat virtio 52:54:00:15:16:61
Podríamos añadir una nueva interfaz de red indicando el puente virtual al que queremos realizar la conexión. En este caso tendríamos que ejecutar la misma instrucción, pero el tipo de la conexión será bridge:
usuario@kvm~$ virsh attach-interface debian12 bridge virbr1 --model virtio --persistent
De nuevo podemos comprobar la lista de interfaces de red:
usuario@kvm~$ virsh domiflist debian12
Interface Type Source Model MAC
-------------------------------------------------------------
vnet0 network default virtio 52:54:00:55:8f:30
vnet1 network red_nat virtio 52:54:00:15:16:61
vnet2 bridge virbr1 virtio 52:54:00:f9:34:f5
Nos fijamos que en los campos Type y Source nos aparece la opción que hemos elegido para realizar la conexión: indicando la red (network) o indicando el puente (bridge).
Desconexión de interfaces de red
Por último indicar que si queremos desconectar una interfaz de red tenemos que indicar el tipo de conexión (network o bridge) y la dirección MAC:
usuario@kvm~$ virsh detach-interface debian12 network --mac 52:54:00:15:16:61 --persistent
usuario@kvm~$ virsh detach-interface debian12 bridge --mac 52:54:00:f9:34:f5 --persistent