dino47
Goto Top

Proxmox VE Reset adapter unexpectedly in public IP Cluster

Hey, ich weiß nicht ob nicht hier jemand helfen kann, aber ich probiere es mal. Und zwar habe ich folgendes Problem:
Ich habe eine Proxmox Umgebung aus zwei Hosts die im Cluster mit zwei Public IPs laufen, auf jedem der Hosts sind jeweils 3 VMs mit jeweils 3 weiteren Public IPs (Ich kann nicht sagen ob das der Best Practise ist mit den Public IPs). Jetzt bekomme ich seit kutzen immer wieder ein Host Down weil der Link 0 abstürzt und Fehlermeldungen wie: " e1000e 0000:00:1f.6 eno1: Reset adapter unexpectedly", "vmbr0: port 1(eno1) entered disabled state" und "vmbr0: port 1(eno1) entered forwarding state". Wenn ich die Lösungen versuche wie es jeder in jedem Forum schreibt und zwar:
ethtool -K <device name> gso off gro off tso off tx off rx off dann bricht die Verbindung ab und ich darf den Server per Hetzner neu starten.

Das Kuriose ist, die IP auf dem der Proxmox läuft ist nicht erreichbar. Aber der Server scheint zu laufen, da die VMs auf dem Proxmox noch ganz normal erreichbar sind.

Kann mir bitte jemand helfen?

Content-ID: 940931961

Url: https://administrator.de/contentid/940931961

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

Dino47
Dino47 08.07.2021 um 13:17:28 Uhr
Goto Top
Es kann möglich sein dass eine Schleife in der Netzwerkkonfiguration vorhanden ist jedoch mit jeder anderen Konfiguration die ich getestet habe ist zwar der Proxmox Server erreichbar, jedoch die VMs mit der Public IP nicht. Die einzige Konfiguration die funktioniert ist, wenn die Proxmox Schnittstelle und die vmbr0 z.b die gleiche public IP haben.
z.B:
ens0
ip 123.123.123.87/27
gw 123.123.123.65

und die vmbr0
ip 123.123.123.87/27
gw 123.123.123.65
bridge ports ens0
(das sind natürlich nicht alle einstellungen und auch nicht die korrekten IP Adressen)
die VMs auf den Proxmox Servern bekommen ihre public IP Adresse durch deren MAC Adressen (ist wohl eine Einstellung von Hetzner selber).
stefans85
stefans85 09.07.2021 um 02:14:00 Uhr
Goto Top
Wenn Du Bridged Network nutzt, dann hat die physische Karte keine IP zu bekommen sondern die vmbr0 wird auf die ens0 bridged. Sprich die public IP vom Hypervisor hat vmbr0 und da lauscht dann der Hypervisor. Und schon gar nicht 2 mal die IP für die physische und bridged Karte nutzen.
Dein Hypervisor braucht eine IP und Deine VMs brauchen eine IP. Arbeitest Du ohne NAT, braucht jede VM ihre eigene IP. Dafür haste ja aber die vmbr0. Die IP vom Host ist meinetwegen Deine 123.123.123.87/27. Dann gibst Du Deinen VMs (innerhalb der VM, das konfigurierst Du nicht im Proxmox) eigene IPs wie z.B. 123.123.123.88/27, 89/27, 90/27 usw... zumindest wenn Du nur 1 NIC hast.

Das beschriebene Verhalten passt bissl zu IP Dopplung, wenn der Hypervisor und die VM 1 IP haben wollen. Kann das sein?

Für Dein Setup würde ich eher, sofern möglich, NAT empfehlen (alternativ Failover IP) und dann eben ein HA PFSense oder OPNsense. Du könntest den DNS so einstellen, dass der Eintrag einer bestimmten VM immer auf die jeweilige IP vom Host zeigt, um Backend Traffic zu verringern. Letztlich kommst Du für HA aber nicht an failover IPs vorbei die automatisch auf den neuen Host schwenken wenn einer aussteigt.
Dino47
Dino47 09.07.2021 aktualisiert um 09:31:55 Uhr
Goto Top
Alle klar. Vielen Dank. Ich werde versuche das umzusetzen.
Aber:

Nehme ich jetzt die Netzwerkeinstellungen von der ens0 Schnittstelle raus und vergebe die Public IP auf die vmbr0 Schnittstelle, dann habe die VMs keine Netz mehr und diese VMs sollen von außen erreichbar sein.
Ich werde es mal detailliert erklären:

auf dem Proxmox hosts die /etc/network/interfaces:

auto lo
iface lo inet loopback
iface lo inet6 loopback

auto ens0
iface ens0 inet static
address 123.123.199.87
netmask 255.255.255.224
gateway 123.123.199.65
up route add -net 123.123.199.64 netmask 255.255.255.224 gw 123.123.199.65 dev ens0
post-up /sbin/ethtool -K eno1 tso off gso off


auto vmbr0
iface vmbr0 inet static
address 123.123.199.87
netmask 255.255.255.224
pointopoint 123.123.199.65
gateway 123.123.199.65
bridge_ports ens0
bridge_stp off
bridge_fd 1
bridge_hello 2
bridge_maxage 12

mit diesen Einstellungen können die VMs von außen erreicht werden.

Die VMs bekomme die Schnittstelle vmbr0 hinzugefügt und erhalten ihre eigene IP Adresse anhand deren MAC-Adresse von Hetzner
Das Problem ist, dass die VMs nicht unbedingt im gleich Subnetz sind.

VM 1 ist noch im gleichen Subnetz:
  1. The loopback network interface
auto lo
iface lo inet loopback

  1. The primary network interface
allow-hotplug ens18
iface ens18 inet dhcp

die VM bekommt durch das DHCP vom Hetzner die IP Adresse:
address 123.123.199.87
netmask 255.255.255.224
gateway 123.123.199.65


VM 2 ist nicht mehr im gleichen Subnetz:
auch hier anhand der MAC-Adresse die IP Adress vergabe

address 123.123.199.188
netmask: 255.255.255.224
gateway 123.123.199.161
stefans85
Lösung stefans85 09.07.2021 aktualisiert um 17:07:17 Uhr
Goto Top
Ich habe 1 Public IP für den Hypervisor sowie eine weitere für den NAT Router. Da die VMs immer defaultmäßig vmbr0 bekommen hab ich das als VM Netz genommen um nicht immer umherzuklicken:
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

iface lo inet6 loopback

iface enp8s0 inet manual

auto vmbr0
iface vmbr0 inet static
        address 10.0.0.2/24
        bridge-ports none
        bridge-stp off
        bridge-fd 0

auto vmbr1
iface vmbr1 inet static
        address 123.456.12/26
        gateway 123.456.1.1
        bridge-ports enp8s0
        bridge-stp off
        bridge-fd 0

10.0.0.1 hat die Routing VM. 10.0.0.2 hat der Hypervisor weil ich das Webpanel vom Router und das Proxmox Interface über SSH Tunnel nur erreichbar gemacht habe. Alle VMs sind also auf dem vmbr0 "Switch".
Dino47
Dino47 22.07.2021 um 15:33:13 Uhr
Goto Top
Vielen Dank,
habe es so ausprobiert und scheint so oder so ähnlich zu funktionieren.