Ich versuche, mit systemd-networkd eine Ethernet-Brücke zu erstellen, damit KVM-Gäste auf das Netzwerk zugreifen können. Ich verwende Debian 11 Bullseye und versuche, die Brücke „host1“ auf dem physischen Gerät „eno1“ zu erstellen.
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
Es funktioniert jedoch nicht, wenn ich „systemctl restart systemd-networkd“ ausführe. eno1 ist in Ordnung und behält die Netzwerkverbindung bei, und ich kann Websites und IP-Adressen anpingen, aber die Bridge host1 wird nie angezeigt.
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
Soweit ich das beurteilen kann, sollte es funktionieren. Die Dateien befinden sich in /etc/systemd/network, das die höchste Priorität hat, es gibt eine .netdev-Datei mit der richtigen Syntax und dem richtigen Namen, es gibt eine uplink.network-Datei, die angibt, dass das übergeordnete Element eno1 ist, und es gibt eine host1.network-Datei, die IP, DNS usw. konfiguriert. Das Verschieben von host1.network nach 25-wired.network hilft auch nicht, es scheint also nicht an den Dateinamen zu liegen.
Falls es etwas in /etc/network/interfaces ist, glaube ich aber nicht, dass systemd-networkd diese Datei liest:
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
Ich weiß, ich könnte einfach ein Init-Skript erstellen, um bei jedem Booten eine Brücke zu erstellen, aber das ist ein bisschen umständlich und ich möchte das Problem auf nachhaltige Weise beheben.
Was passiert hier und wie kann ich es beheben, um die Brücke ordnungsgemäß zu erstellen?
Antwort1
Wie wangkaibule in den Fragekommentaren erwähnt hat, hätte ich [NetDev] und nicht [Netdev] schreiben sollen.
Für alle, die sich in einer ähnlichen Situation befinden: Bei systemd-Konfigurationsdateien wird zwischen Groß- und Kleinschreibung unterschieden. Stellen Sie sicher, dass alles richtig und mit der richtigen Schreibweise eingegeben wird, sonst funktioniert es nicht.