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