
Zum Kontext: Ich richte einen 3-Knoten-Proxmox-Cluster für den persönlichen Gebrauch ein und richte 2 verschiedene Mesh-Netzwerke auf 4 Schnittstellen ein (2 Schnittstellen pro Knoten für jedes Mesh-Netzwerk). Auf diese Weise hat jeder Knoten eine direkte Verbindung zu jedem anderen Knoten. Damit das Netzwerk funktioniert, bin ich auf statische Routen auf jeder Schnittstelle angewiesen, die wie folgt konfiguriert sind:
auto lo
iface lo inet loopback
iface enp5s0f0 inet manual
iface enp5s0f1 inet manual
auto eno1
iface eno1 inet static
address 10.83.86.10/24
up ip route add 10.83.86.11/32 dev eno1
down ip route del 10.83.86.11/32
auto eno2
iface eno2 inet static
address 10.83.86.10/24
up ip route add 10.83.86.12/32 dev eno2
down ip route del 10.83.86.12/32
auto eno3
iface eno3 inet static
address 10.83.67.10/24
up ip route add 10.83.67.11/32 dev eno3
down ip route del 10.83.67.11/32
auto eno4
iface eno4 inet static
address 10.83.67.10/24
up ip route add 10.83.67.12/32 dev eno4
down ip route del 10.83.67.12/32
auto vmbr0
iface vmbr0 inet static
address 192.168.0.20/24
gateway 192.168.0.1
bridge-ports enp5s0f0
bridge-stp off
bridge-fd 0
source /etc/network/interfaces.d/*
IP-Adressen unterscheiden sich zwischen Knoten, aber ansonsten ist die Konfiguration gleich. Schnittstellen eno1
und eno2
sind Teil des 10.83.86.0
Netzwerks, und eno3
und eno4
sind Teil des 10.83.67.0
Netzwerks.
Das Problem besteht darin, dass ich nicht weiß, wie ich diese Netzwerke für VMs und Container verfügbar machen kann, die auf Proxmox laufen. Ich möchte beispielsweise in der Lage sein, die Weboberfläche für Proxmox, die ich nur im Mesh-Netzwerk verfügbar machen möchte, zu lastenausgleichen und per Proxy-Tunnel zu betreiben. Ein weiteres Beispiel ist, dass ich bestimmte Workloads benötige, um auf das öffentliche Ceph-Netzwerk zugreifen zu können, wie etwa den Ceph Kubernetes CSI-Treiber.
So wie ich es verstehe, benötigt Proxmox eine Linux-Bridge für die Virtualisierung virtueller Netzwerkkarten. Ich habe versucht, meine Schnittstellenkonfiguration wie folgt umzuschreiben:
auto eno1
iface eno1 inet manual
up ip route add 10.83.86.11/32 dev eno1
down ip route del 10.83.86.11/32
auto eno2
iface eno2 inet manual
up ip route add 10.83.86.12/32 dev eno2
down ip route del 10.83.86.12/32
auto vmbr1
iface vmbr1 inet static
address 10.83.86.10/24
bridge-ports eno1 eno2
bridge-stp off
bridge-fd 0
Aber diese Konfiguration unterbricht einfach die Netzwerkverbindung zwischen den Knoten, wenn ich mit neu lade ifreload -a
. Ich verstehe nicht ganz, warum.
Antwort1
Routen gehören zu IP-Schnittstellen, nicht zu Bridge-Ports. Ihre Bridge-Ports sollten buchstäblich nichts enthalten. Alle Routen sind Schnittstellen zugeordnet, die IP-Adressen haben.
Überlegen Sie, ob Sie Folgendes hätten:
auto eno1
iface eno1 inet static
address 10.83.86.10/24
up ip route add 10.83.86.11/32 dev eno1
down ip route del 10.83.86.11/32
dann wird es das hier:
iface eno1 inet manual
auto vmbr1
iface vmbr1 inet static
address 10.83.86.10/24
up ip route add 10.83.86.11/32 dev vmbr1
down ip route del 10.83.86.11/32
bridge-ports eno1
bridge-stp off
bridge-fd 0
Beachten Sie, dass alle IP-bezogenen Dinge einfach von der physischen Netzwerkkarte in die Bridge verschoben wurden. Die Netzwerkkarte wird zur Nur-L2-Schnittstelle, betrachten Sie sie als Switch-Port. Switches haben nicht auf jeder Schnittstelle IP-Adressen, und das sollten auch überbrückte Schnittstellen nicht haben.
Sie können mehrere physische Netzwerkkarten überbrücken, indem Sie sie alle in angeben bridge-ports
. Keiner der Ports hat eine IP-Konfiguration. Nur die Brücke kann sie haben.
Ich verstehe nicht, was Sie erreichen wollen, indem Sie jeder Schnittstelle eine eigene /32-Adresse und eine eigene Route zuweisen. Ich weiß nicht, warum Sie das wollen, aber diese Netzwerkkonfiguration sieht ziemlich seltsam aus.
Wenn Sie jedoch die Netzwerkstruktur (Schicht 3) wie in Ihrer Frage beibehalten möchten, müssen Sie für jede IP-Adresse eine dedizierte Brücke erstellen und die jeweilige VM in diese Brücke einfügen.
Wenn dies alles nur für die Host-zu-VM-Kommunikation ist, müssen Sie keine physische Netzwerkkarte in diese Brücken einbringen. Lassen Sie es vmbrX
ohnebeliebigBridge-Ports, aber konfigurieren Sie IP-Adressen. Sie können VMs in diese „leere“ Bridge einfügen und sie kommunizieren untereinander und mit dem Host. Die physischen Netzwerkkarten müssen nur Teil der Bridge sein, wenn Sie dieses virtuelle Netzwerksegment mit dem physischen Netzwerk auf Schicht 2 (z. B. Ethernet) verbinden müssen.