[SOLVED] Mehrere NICs für eine Bridge

Domsdagr

New Member
Aug 18, 2022
21
0
1
Hallo,

ich bin neu in Proxmox und man würde sagen, dass ich auch neu im Berufsleben bin, da ich gerade erst aus der Ausbildung komme. Ich habe heute blöderweise ein ganzes Netzwerk lahm gelegt und würde gerne verstehen was ich falsch gemacht habe und wie ich das in Zukunft verhindern kann.

Wir haben bei einem Kunden ein Proxmox Cluster, bestehend aus 3 Servern, stehen. Jeder Server ist mit einem onboard NIC (eno8303) und 4 PCIe NICs (eno12399 , eno12409, eno12419, eno12429) an einem Switch angeschlossen. Die Katastrophe begann, als ich auf dem zweiten der drei Server die vmbr0 an die auf dem ersten Server angeglichen habe. Ich habe die vmbr0 editiert und unter Ports/Slaves die PCIe NICs (eno12399 - eno12429) hinzugefügt. Dies war bereits auf dem ersten Server geschehen und das lief über Wochen problemlos. Nachdem ich diese Einstellungen auf der zweiten node übernommen hatte ging im gesamten Netzwerk des Kunden gar nichts mehr.

Nun würde ich gerne wissen, warum das solange es nur auf Server1 konfiguriert war funktioniert hat, warum das alles zerstört hat und wie ich das in Zukunft verhindern kann.


Vielen Dank im Voraus für eure Zeit. Eventuelle Logs kann ich morgen nachliefern, mir muss nur jemand sagen was benötigt wird.
 
Hi,

also die vmbr0 auf server 1 hat ca so ausgesehen?

Code:
auto vmbr0
iface vmbr0 inet static
        address 192.168.10.2/24
        gateway 192.168.10.1
        bridge-ports eno12399 eno12409 ....
        bridge-stp off
        bridge-fd 0

und du hast sie auf server 2 auch so eingetragen? (IP war klarerweise anders)
 
Hi,

also die vmbr0 auf server 1 hat ca so ausgesehen?

Code:
auto vmbr0
iface vmbr0 inet static
        address 192.168.10.2/24
        gateway 192.168.10.1
        bridge-ports eno12399 eno12409 ....
        bridge-stp off
        bridge-fd 0

und du hast sie auf server 2 auch so eingetragen? (IP war klarerweise anders)
Ja genau
 
Eine Linux brdige ist mehr oder weniger ein Switch. Wenn du bei den bridge-ports mehrere interfaces einträgst, die alle zum gleichen Switch gehen würde ich vermuten das dort ein Loop entsteht. Wieso das mit einem funktioniert ist etwas eigenartig ... vielleicht ist meine Theorie auch falsch :).

Es hört sich für mich an als wäre ein Bond eher das gewünschte Setup.
 
Das funktioniert so nicht weil du da ein Spanning Tree Problem bekommst und dir im dümmsten Fall dein ganzen Netz außer Funktion setzt.
Du musst erst einen Bond Interface bauen und dann die Bridge auf den Bond setzen.
 
Das funktioniert so nicht weil du da ein Spanning Tree Problem bekommst und dir im dümmsten Fall dein ganzen Netz außer Funktion setzt.
Du musst erst einen Bond Interface bauen und dann die Bridge auf den Bond setzen.
In meinem Fall ist auch der dümmste Fall eingetreten. Das hat alles zerschossen. Zuerst in einem Bond zusammenfassen klingt logisch.

Direkt mal eine Frage zum Bond: Wenn ich jetzt versuche einen Bond aus allen 5 Ports zu machen meckert Proxmox an zwei Stellen:

1. ist der onboard Port (eno8303), welcher auch für das Webinterface genutzt wird, bereits in vmbr0 vorhanden
und 2. ist das Gateway bereits in vmbr0 vorhanden.

Wie genau würde die Konfiguration eines solchen bondes denn nach best practice Manier aussehen?
 
Also, generell würde ich das Managment immer von den VMs trennen.
Im RZ haben wir in der Regel Proxmox Cluster die so konfiguriert sind.
2 x 1 GBit, LACP Bond, Management Netz
2 x 1 GBit, LACP Bond, Cluster Link
2 x 10 GBit LACP Bond, Tagged Mode, vmbr0 Bridge für die VMs. ( ggf. 40 GBit )
2 x 40 GBit LACP Bond, Ceph Public ( ggf. 100 GBit )
2 x 40 GBit LACP Bond, Ceph Private ( ggf. 100 GBit )

Bei einem einzelnen Server kannst du dir Cluster Link und Ceph ja eh schenken, aber die Trennung zwischen Management und VMs auf physikalischer Ebene würde ich sogar dann machen wenn ich alles nur in einem Netz habe.
In deinem Fall mit 5 Netzwerkkarten nimmst du eine für das Management und die anderen 4 als Bond0 das du dann an vmbr0 bindest.
Für das Management brauchst du keine Bridge.
 
  • Like
Reactions: ReverZ and Dunuin
In deinem Fall mit 5 Netzwerkkarten nimmst du eine für das Management und die anderen 4 als Bond0 das du dann an vmbr0 bindest.
Für das Management brauchst du keine Bridge.
Nur damit ich das richtig verstehe:

Ich nehme den onboard Port für das Management (eno8303) aus der vmbr0 raus, erstelle einen Bond (broadcast?) aus den 4x 1GBit/s Ports (eno12399 - eno12429) und füge diesen Bond der vmbr0 hinzu?

Ist denn dann das Management noch unter der selben IP erreichbar? Muss ich dem Port gesondert eine IP zuweisen? Benötige ich für den Port kein Gateway?

Zum Verständnis meiner Situation bzw. der Situation beim Kunden habe ich mal einen Screenshot angehangen.
proxmox-netzwerk.PNG
 
In deinem Fall würde ich die /etc/network/interfaces so einrichten. Achtung ist nur für LACP als Bond Mode.
------------------------------------------------------------

auto lo

auto eno8303

auto eno8403

# Management Bond mit IP

auto bond0
iface bond0 inet static
address 192.168.7.32
netmask 255.255.255.0
network 192.168.7.0
gateway 192.168.7.254
slaves eno8303 eno8403
bond_mode 802.3ad
miimon 100

# Bond1 für VMs

auto eno12399
auto eno12409
auto eno12419
auto eno12429

auto bond1
iface bond1 inet manual
slaves eno12399 eno12409 eno12419 eno12429
bond_mode 802.3ad
miimon 100

# Bridge für den Bond damit die VMs von extern erreichbar sind.

auto vmbr0
iface vnbr0 inet manual
bridge_ports bond1
bridge_stp off
bridge_fd 0

-------------------------------------------------------------------

Damit hast du auf dem Einzelserver eine ausfallsichere Management Verbindung, untagged VLAN auf Switch Seite, und einen extra Bond mit 4 Links für die VMs
IPs und Gateways brauchst du da nicht drauf da die VMs das ja selbst bekommen.
Wenn du dann bei dem Bond1 an der Switch Seite einen Tagged Mode einstellst kannst du so auch VMs mit verschiedenen Netzen und VLANs auf ein und dem selben Server fahren. Du musst dann nur die VLAN ID bei jeder VM in die Konfiguration eintragen.
Das Thema Vlan-Aware Bridge kannst du dir so auch schenken, das verkompliziert die Konfiguration nur.
Allerdings habe ich das noch nie über die Webgui eingestellt sondern nur über die Konsole direkt, und du solltest scher stellen dass das Paket ifenslave-2.6 ( für das Bonding ) installiert ist.
 
Last edited:
In deinem Fall würde ich die /etc/network/interfaces so einrichten. Achtung ist nur für LACP als Bond Mode.
------------------------------------------------------------

auto lo

auto eno8303

auto eno8403

# Management Bond mit IP

auto bond0
iface bond0 inet static
address 192.168.7.32
netmask 255.255.255.0
network 192.168.7.0
gateway 192.168.7.254
slaves eno8303 eno8403
bond_mode 802.3ad
miimon 100

# Bond1 für VMs

auto eno12399
auto eno12409
auto eno12419
auto eno12429

auto bond1
iface bond1 inet manual
slaves eno12399 eno12409 eno12419 eno12429
bond_mode 802.3ad
miimon 100

# Bridge für den Bond damit die VMs von extern erreichbar sind.

auto vmbr0
iface vnbr0 inet manual
bridge_ports bond1
bridge_stp off
bridge_fd 0

-------------------------------------------------------------------

Damit hast du auf dem Einzelserver eine ausfallsichere Management Verbindung, untagged VLAN auf Switch Seite, und einen extra Bond mit 4 Links für die VMs
IPs und Gateways brauchst du da nicht drauf da die VMs das ja selbst bekommen.
Wenn du dann bei dem Bond1 an der Switch Seite einen Tagged Mode einstellst kannst du so auch VMs mit verschiedenen Netzen und VLANs auf ein und dem selben Server fahren. Du musst dann nur die VLAN ID bei jeder VM in die Konfiguration eintragen.
Das Thema Vlan-Aware Bridge kannst du dir so auch schenken, das verkompliziert die Konfiguration nur.
Allerdings habe ich das noch nie über die Webgui eingestellt sondern nur über die Konsole direkt, und du solltest scher stellen dass das Paket ifenslave-2.6 ( für das Bonding ) installiert ist.
Hallo coldenburg, wäre die folgende Konfiguration so in Ordnung?


Code:
auto lo
iface lo inet loopback

auto eno8303
iface eno8303 inet manual
    address 192.168.7.32/24
    gateway 192.168.7.254

auto enp138s0f2
iface enp138s0f2 inet manual

auto enp138s0f3
iface enp138s0f3 inet manual

iface eno8403 inet manual
#WinBack Maschinennetz

auto eno12399
iface eno12399 inet manual

auto eno12409
iface eno12409 inet manual

auto eno12419
iface eno12419 inet manual

auto eno12429
iface eno12429 inet manual

auto enp138s0f0
iface enp138s0f0 inet static
    address 10.10.10.10/24
    up ip route add 10.10.10.20/32 dev enp138s0f0
    down ip route del 10.10.10.20/32
#10 Gbit/s Ceph pve2

auto enp138s0f1
iface enp138s0f1 inet static
    address 10.10.10.10/24
    up ip route add 10.10.10.30/32 dev enp138s0f1
    down ip route del 10.10.10.30/32
#10 Gbit/s Ceph pve3

auto bond0
iface bond0 inet manual
    bond-slaves eno12399 eno12409 eno12419 eno12429
    bond-miimon 100
    bond-mode balance-rr

auto vmbr0
iface vmbr0 inet static
    bridge-ports bond0
    bridge-stp off
    bridge-fd 0

Das Ceph Netzwerk funktioniert soweit, es geht also nur um bond0, vmbr0 und eno8303. Da eno8403 für etwas anderes benutzt werden soll habe ich kein Bond für das Management erstellt, sondern einfach die Adresse und das Gateway direkt in das Interface eno8303 eingetragen.

Vielen Dank im Voraus!


Liebe Grüße
Dom
 
Das "iface eno12xxx inet manual" kann da noch raus da das "auto eno12xxx" die Karten von Linux Seite schon aktiviert und sie über den bond0 dann konfiguriert werden.
Ansonsten sieht das für mich soweit erstmal korrekt aus.
 
Hallo @coldenburg ich muss nochmal nerven. Ich habe die Konfig jetzt getestet und folgendes Problem:

Die vmbr0 und das bond0 können das Gateway nicht pingen. Somit bekommen die VMs auch keine Verbindung in das Netzwerk. Hast du da spontan eine Idee, woran das liegen könnte?

Danke!
 
Das ist korrekt, wenn sie keine IP haben können sie auch nichts anpingen. Das müssen sie aber auch nicht das die VM die auf der vmbr0 Schnittstelle gebunden wird ja eine IP und GW bekommt und die das dann können sollte.
Ist das nicht der Fall und beide Interface sind up dann hast du ein Problem mit deiner Switch Konfiguration.
 
Das ist korrekt, wenn sie keine IP haben können sie auch nichts anpingen. Das müssen sie aber auch nicht das die VM die auf der vmbr0 Schnittstelle gebunden wird ja eine IP und GW bekommt und die das dann können sollte.
Ist das nicht der Fall und beide Interface sind up dann hast du ein Problem mit deiner Switch Konfiguration.
Problem ist, dass ich der VM eine statische IP in Windows gegeben habe und auch das GW eingetragen habe. Nützt nur leider trotzdem nichts. Muss ich das Gateway in die vmbr0 oder das bond0 eintragen, anstatt in das Interface für das Management?
 
Ist dein Bond korrekt konfiguriert und und alle Interface des Bonds up. Das kannst du mit "cat /proc/net/bonding/bond0" prüfen.
Ist deine Bridge korrekt hochgefahren, am besten über "ip addr" sehen. Alternativ sollte man das auch in der Webgui sehen.
Wenn das der Fall ist muss deine VM, wenn sie auf vmbr0 gebunden ist, auch das Gateway erreichen.
Klappt das nicht würde ich erstmal die Switch Konfiguration überprüfen, ob dort alle Ports korrekt hoch gefahren sind und die VLAN Konfiguration passt. Hast du keine VLANs definiert oder ist das im untagged Mode brauchst du auch keine VLAN ID bei der VM mitgeben, hast du ein VLAN im tagged Modus an deinen Switchports anliegen musst du der VM noch die VLAN ID mitgeben wenn sie in das Netz soll.
Das Management ist davon unabhängig und für dich soweit erstmal uninteressant für den VM Betrieb da es auf einer eigenen Schnittstelle läuft.
 
Ist dein Bond korrekt konfiguriert und und alle Interface des Bonds up. Das kannst du mit "cat /proc/net/bonding/bond0" prüfen.
Ist deine Bridge korrekt hochgefahren, am besten über "ip addr" sehen. Alternativ sollte man das auch in der Webgui sehen.
Wenn das der Fall ist muss deine VM, wenn sie auf vmbr0 gebunden ist, auch das Gateway erreichen.
Klappt das nicht würde ich erstmal die Switch Konfiguration überprüfen, ob dort alle Ports korrekt hoch gefahren sind und die VLAN Konfiguration passt. Hast du keine VLANs definiert oder ist das im untagged Mode brauchst du auch keine VLAN ID bei der VM mitgeben, hast du ein VLAN im tagged Modus an deinen Switchports anliegen musst du der VM noch die VLAN ID mitgeben wenn sie in das Netz soll.
Das Management ist davon unabhängig und für dich soweit erstmal uninteressant für den VM Betrieb da es auf einer eigenen Schnittstelle läuft.
Ein "cat /proc/net/bonding/bond0" ergibt folgendes:

Code:
root@pve1:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v5.15.39-4-pve

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eno12399
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 84:16:0c:ac:2d:40
Slave queue ID: 0

Slave Interface: eno12409
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 84:16:0c:ac:2d:41
Slave queue ID: 0

Slave Interface: eno12419
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 84:16:0c:ac:2d:42
Slave queue ID: 0

Slave Interface: eno12429
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 84:16:0c:ac:2d:43
Slave queue ID: 0

Das sieht also soweit gut aus. Auch ist die vmbr0 laut "ip addr" up:

Code:
13: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 7e:ed:2e:88:4d:12 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::7ced:2eff:fe88:4d12/64 scope link
       valid_lft forever preferred_lft forever

VLANs haben wir keine definiert. Der bond und die vmbr haben jeweils keine IP Adresse und kein Gateway konfiguriert. Wenn ich das Gateway in der vmbr nutzen will, müsste ich ja das Gateway aus dem Interface eno8303 (Management) entfernen - Dann hätte aber der Host keinen Eintrag für ein Gateway mehr, oder verstehe ich das grundlegend falsch?
 
Die brauchst auf der Bridge keine IP denn sie ist wie der Name schon sagt eine Brücke in das Netz.
In dem Fall für deine VMs.
Was ich noch gesehen habe ist das bei dir in der Konfig "iface vmbr0 inet static" drin steht, das solltest du noch auf auf "iface vmbr0 inet manual" setzen.
Poste mal bitte die Netzwerkkonfiguration für deine VM in der Management Oberfläche von Proxmox, das würde ich gern noch sehen.
Aber ändere bitte erst den Eintrag in der /etc/network/interface und starte das Netzwerk durch, das könnte schon dein Problem lösen.
 
  • Like
Reactions: Domsdagr
Die brauchst auf der Bridge keine IP denn sie ist wie der Name schon sagt eine Brücke in das Netz.
In dem Fall für deine VMs.
Was ich noch gesehen habe ist das bei dir in der Konfig "iface vmbr0 inet static" drin steht, das solltest du noch auf auf "iface vmbr0 inet manual" setzen.
Poste mal bitte die Netzwerkkonfiguration für deine VM in der Management Oberfläche von Proxmox, das würde ich gern noch sehen.
Aber ändere bitte erst den Eintrag in der /etc/network/interface und starte das Netzwerk durch, das könnte schon dein Problem lösen.
Den Eintrag in der /etc/network/interfaces Datei zu ändern hat leider nichts gebracht. Hier ein Screenshot von dem Network Device der VM:
VM100-network.PNG
 
Hm, dann stehe ich jetzt auf dem Schlauch denn soweit ich das sehe muss das funktionieren, wir haben alle unsere Proxmox Host so konfiguriert.
Allerdings benutzen wir kein balance-rr für Portchannel/Bonding/LAG sondern LACP Mode, also 802.3ad, weil balance-rr mit unseren Cisco Switchen Probleme macht.
Ich würde jetzt am Switch weiter suchen. Sind da MAC Adressen zu sehen auf den Ports, ist der Portchannel/LAG dort korrekt oben etc, aber auf Proxmox Seite sieht das soweit wie ich das sehe gut aus.
 
  • Like
Reactions: Domsdagr

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!