Mi configuración de red para KVM en Debian

By | September 19, 2018

Como ya había comentado anteriormente utilizo mi máquina principal Debian como host para varios servidores virtualizados con KVM. En cuanto a la configuración en red comencé configurando una interfaz bridge por DHCP, aunque actualmente utilizo una configuración bridge estática. La configuración de ambas en Debian no es complicada.

Lo que sí hice desde el principio en ambas configuraciones fue deshabilitar Network Manager para evitar cambios inesperados de configuración:

systemctl stop NetworkManager.service
systemctl disable NetworkManager.service

Configuración estática

Si queremos crear un bridge estático podemos utilizar la siguiente configuración en /etc/network/interfaces:

# This file describes the network interfaces available on your system    
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet manual

# Bridge interface
auto br0
iface br0 inet static
        address 192.168.1.2
        network 192.168.1.0
        broadcast 192.168.1.255
        netmask 255.255.255.0
        gateway 192.168.1.1
        dns-search jota.com
        dns-nameserver 208.67.220.220
        dns-nameserver 208.67.222.222
        bridge_ports eth0
        bridge_stp off

La interfaz lo requiere poca explicación, simplemente levanta automáticamente y se configura como loopback para localhost.

La interfaz primaria eth0 es la que tenía desde el primer momento que instalé Debian. Para la configuración de red KVM la cambié a modo manual. No necesito una IP en dicha interfaz ya que sólo la voy a “puentear” a br0.

La interfaz bridge br0 está configurada para levantar con la máquina (auto) y en modo estático. Los primeros parámetros son típicos: IP, red, dirección de broadcast, máscara de subred, gateway… En cuanto a los parámetros para dns son los utilizados por el programa resolvconf para generar el fichero /etc/resolv.conf de forma dinámica. Por ejemplo si tiro la interfaz br0:

ifdown br0

El fichero /etc/resolv.conf se vacía:

[root@jota-pc ~]# cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

Ahora levanto de nuevo la interfaz:

ifup br0

Y resolvconf se encarga de introducir la configuración correspondiente.

[root@jota-pc ~]# cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 208.67.220.220
nameserver 208.67.222.222
search jota.com

El parámetro bridge_ports lo que hace es mapear los puertos de eth0 a br0. Como no voy a utilizar STP para comunicación entre varias redes bridge desactivo el protocolo Spanning Tree con bridge_stp off.

Configuración DHCP

Para una máquina que va a ser host de varios guest prefiero una configuración estática de red. Sin embargo también podemos configurar la interfaz bridge por DHCP. Incluso en el propio servidor DHCP podríamos asignar manualmente la configuración de red para este host en concreto.

La configuración de /etc/network/interfaces se simplifica:

# This file describes the network interfaces available on your system   
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet manual

# Bridge interface
auto br0
iface br0 inet dhcp
        bridge_ports eth0
        bridge_stp off

Como vemos los parámetros del bridge los mantenemos, sólo cambiamos a modo dhcp. En Debian, ya se encargará el demonio dhclient de encontrar el servidor DHCP para recibir la configuración de red.

Además de los parámetros mencionados, podéis consultar la página man correspondiente para encontrar una explicación detallada de cada uno y configurar los que necesitéis.