Creación de Dispositivo Puente para VirtManager KVM-QEmu en Debian 13 Server
· 10min · virt
Introducción
Uno de los problemas que tenemos cuando creamos máquinas virtuales con Virt Manager KVM y Qemu es que por defecto no nos permite colocar un interfaz de red en la máquina virtual para que dicha máquina pueda tener una configuración de red en Puente y que la tarjeta de red de la máquina pueda estar en la misma red que el servidor host.
En esta entrada realizaremos la creación de este dispositivo puente para que las máquinas virtuales puedan configurarse a nivel de red de esta manera.
Primeros pasos
Lo primero que deberíamos hacer sería, actualizar el sistema e instalar el paquete bridge-utils que nos permitirá crear el dispositivo puente como root.
apt update
apt upgrade -y
apt install bridge-utils -y
Para después comprobar la configuración de red de la máquina donde hemos instalado el Virt Manager
ip a s
Esto debería sacarnos una salida similar a esta:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:1f:39:de brd ff:ff:ff:ff:ff:ff
inet 192.168.1.123/24 brd 192.168.1.255 scope global dynamic noprefixroute enp1s0
valid_lft 2982sec preferred_lft 2982sec
inet6 fe80::5054:ff:fe1f:39de/64 scope link
valid_lft forever preferred_lft forever
Como vemos nos daría dos interfaces de red el típico lo de loopback (el 127.0.0.1) y la tarjeta de red normal en este caso se llamaría enp1s0 y tendría la dirección ip asignada de 192.168.1.123
Creando el interfaz puente de manera manual
sudo ip link add name br0 type bridge
sudo ip link set enp1s0 master br0
sudo ip addr add 192.168.1.125/24 dev br0
sudo ip link set br0 up
sudo ip link set enp1s0 up
sudo ip route add default via 192.168.1.1
Creando el interfaz puente de manera permanente con el fichero interfaces (old fashion)
Editamos el fichero /etc/network/interfaces
# Loopback
auto lo
iface lo inet loopback
# Interfaz física sin IP
allow-hotplug enp1s0
iface enp1s0 inet manual
# Configuración del puente
auto br0
iface br0 inet static
bridge_ports enp1s0
address 192.168.1.125
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 1.1.1.1
Reiniciamos el servicio de red
systemctl restart networking
Verificamos la configuración de red
ip a s
Deberíamos ver algo similar a esto:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 52:54:00:3a:b4:1c brd ff:ff:ff:ff:ff:ff
altname enx5254003ab41c
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 0a:2b:07:56:e3:f8 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.125/24 brd 192.168.1.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::82b:7ff:fe56:e3f8/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
Creando el interfaz puente de manera permanente con systemd (new fashion)
Primero deshabilitamos el dispositivo de red enp1s0 de la manera anterior Editamos el fichero /etc/network/interfaces
# Loopback
auto lo
iface lo inet loopback
# Interfaz física sin IP
allow-hotplug enp1s0
iface enp1s0 inet manual
Reiniciamos el servicio de red
systemctl restart networking
Crea un archivo /etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge
Crea un archivo /etc/systemd/network/br0.network
[Match]
Name=br0
[Network]
Address=192.168.1.125/24
Gateway=192.168.1.1
Crea un archivo /etc/systemd/network/enp1s0.network
[Match]
Name=enp1s0
[Network]
Bridge=br0
Habilita y reinicia systemd-networkd
systemctl enable systemd-networkd
systemctl restart systemd-networkd
Verificamos la configuración de red
ip a s
Editamos el resolv.conf para poner el cliente DNS de la manera antigua
sudo nano /etc/resolv.conf Añadimos la línea nameserver 8.8.8.8 Guardamos y salimos
Verificando la conexión
Hacemos ping al gateway
ping -c 4 192.168.122.1
Hacemos ping a google
ping -c 4 google.es
Configuración de la Máquina Virtual
Como vemos en el apartado de la configuración de la máquina virtual de la Tarjeta de Red (NIC) debemos configurar el dispositivo puente br0 y el modelo de dispositivo VirtIO