Estoy intentando crear un puente Ethernet con systemd-networkd para que los invitados KVM puedan acceder a la red. Estoy en Debian 11 Bullseye e intento crear el puente "host1" en el dispositivo físico "eno1".
root@debian-kvm:/etc/systemd/network# ls
20-wired.network host1.netdev host1.network uplink.network
root@debian-kvm:/etc/systemd/network# cat 20-wired.network
[Match]
Name=eno1
[Network]
DHCP=No
Address=192.168.1.57/24
Gateway=192.168.1.1
DNS=1.1.1.1
root@debian-kvm:/etc/systemd/network# cat host1.netdev
[Netdev]
Name=host1
Kind=bridge
root@debian-kvm:/etc/systemd/network# cat host1.network
[Match]
Name=host1
[Network]
Address=192.168.1.2/24
Gateway=192.168.1.1
DNS=1.1.1.1
root@debian-kvm:/etc/systemd/network# cat uplink.network
[Match]
Name=eno1
[Network]
Bridge=host1
Sin embargo, no funciona cuando hago "systemctl restart systemd-networkd". eno1 está bien y conserva la conexión de red, y puedo hacer ping a sitios web y direcciones IP, pero el puente host1 nunca aparece.
root@debian-kvm:/etc/systemd/network# networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 eno1 ether routable configured
3 eno2 ether off unmanaged
4 eno3 ether off unmanaged
5 eno4 ether off unmanaged
root@debian-kvm:/etc/systemd/network# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether b8:ca:3a:64:65:88 brd ff:ff:ff:ff:ff:ff
altname enp1s0f0
3: eno2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether b8:ca:3a:64:65:89 brd ff:ff:ff:ff:ff:ff
altname enp1s0f1
4: eno3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether b8:ca:3a:64:65:8a brd ff:ff:ff:ff:ff:ff
altname enp1s0f2
5: eno4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether b8:ca:3a:64:65:8b brd ff:ff:ff:ff:ff:ff
altname enp1s0f3
Por lo que puedo decir, debería funcionar. Los archivos están en /etc/systemd/network, que tiene la máxima prioridad, hay un archivo .netdev con la sintaxis y el nombre correctos, hay un archivo uplink.network que indica que el padre es eno1 y hay un archivo host1.network que configura la IP, DNS, etc. mover host1.network a 25-wired.network tampoco ayuda, por lo que no parecen ser los nombres de los archivos.
En caso de que sea algo en /etc/network/interfaces, pero no creo que systemd-networkd lea este archivo:
root@debian-kvm:/etc/systemd/network# cat /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 eno1
iface eno1 inet manual
# KVM Host interface, use this to avoid conflicts, physical device is just for physical connection
iface host1 inet manual
# FreeBSD KVM bridge
#iface frbsd1 inet static
# bridge_ports eno1
# address 192.168.1.45
# broadcast 192.168.1.255
# netmask 255.255.255.0
# gateway 192.168.1.1
Sé que podría crear un script de inicio para crear un puente en cada arranque, pero eso es un poco complicado y quiero solucionar el problema de manera sostenible.
¿Qué está pasando aquí y cómo puedo solucionarlo para crear el puente correctamente?
Respuesta1
Como mencionó Wangkaibule en los comentarios de la pregunta, debería haber puesto [NetDev] y no [Netdev].
Para cualquier persona que se encuentre en situaciones similares, los archivos de configuración de systemd distinguen entre mayúsculas y minúsculas; asegúrese de que todo esté escrito correctamente con las mayúsculas y minúsculas correctas o no funcionará.