Default gateway in VM abhängig von Node setzen

puldi

Member
Jul 11, 2018
12
1
23
Hallo,

in einem Cluster mit mehreren Nodes laufen pro Node bis zu 20 VM. Eine dieser VM agiert u.a. als DHCP Server und hat auch eine öffentliche IP, alle anderen VMs haben nur eine lokale IP. Aktuell ist es so, dass die VMs vom DHCP alle Netzwerkdaten beziehen und diesen auch als default GW gesetzt haben. Jetzt würde ich aber gerne die VMs so konfigurieren, dass diese die Schnittstelle des jeweiligen Node auf dem sie gerade laufen, als Gateway benutzen. Über den DHCP Server würden dann nur explizit gesetzte Routen laufen z.B. für VPN.

Ziel der Konfig wäre es, das bisherige Gateway und auch das lokale Netzwerk etwas zu entlasten und ausgehenden Traffic der VM direkt über die Schnittstellen des jeweiligen hostenden Node laufen zu lassen. Die extern sichtbare IP ist in diesem Fall egal. Eingehende Anfragen landen sowieso immer auf dem Gateway und werden von dort zur jeweiligen VM geroutet.

Ich könnte jetzt im DHCP für jede VM ein spezifisches default gw setzen, aber das wäre auch wieder statisch. Dann kam mir die Idee, auf jedem Node intern die gleiche IP zu vergeben, aber das würde spätestens dann Probleme machen, wenn eine VM migriert, weil die MAC Adresse sich ändern würde. Das ganze soll absolut transparent ablaufen, aber nicht unbedingt in Echtzeit. Also nach einer Migration könnte für eine Übergangszeit durchaus noch das "alte" gateway angesprochen werden.

Idealerweise würde ich eine Liste an Adressen eintragen und der Netzwerkstack sucht sich automatisch die billigste / kürzeste Route. Das klingt für mich allerdings sehr nach BGP und das zu implementieren wäre ein gigantischer Aufwand! Oder geht das mit klassischem DHCP ebenfalls? Ich habe hierzu nichts finden können.

Hat jemand eine Idee, wie das funktionieren könnte? Kann KVM hier mithelfen? Vielleicht ein ganz anderer Ansatz? Bin für alles offen! :D
 
Hi,

evtl. hinten rum?
https://forum.proxmox.com/threads/how-to-detect-on-wich-node-is-running-a-vm.59930/

Da wird ein Befehl gezeigt der der Node sagt was auf ihm läuft. das per Cron auf jedem Host alle x-Minuten schreiben lassen. Das dann an den DHCP weitergereicht oder als von allen DHCP erreichbarem Folder mit der Liste Node1->VM101,vm102 usw. und er ändert den Gateway-Eintrag. Den Lease halt nicht zu lang machen. Zur Not scp direkt auf den DHCP schreiben oder so.

Oder noch anders.
Freigabe Samba, NFS irgendwas, aber zentral für alle Nodes. Jeder Node schreibt für jede bei ihm laufenden Maschine eine Datei, da steht das GW drin. Die Maschinen pollen dann alle paar Minuten um ihr Gateway aus der Datei zu lesen.

Nächste Variante um nicht zu pollen. beim Start einer Machine mit einem Hook eingreifen der das Gateway der startenden Node in die Datei schreibt. Keine Ahnung ob das geht ohne ernsthaft in den Proxmox code einzugreifen.

Kann auch sein das man über den qemu-guest-agent was schicken kann, habe da aber auf die schnelle nichts gefunden.

War alles nur laut gedacht, evtl. ist ja was dabei.

Gruß
Andreas
 
Last edited:
Danke Andreas, das sind sind super Ansätze!
Es wäre tatsächlich eine Überlegung wert, kein default GW per DHCP zu setzen und dieses aus jeder VM heraus aus einer Datei auszulesen. Das kann auch in beliebigen Intervallen geschehen. Ich prüfe mal, mit wie viel Aufwand das umsetzbar wäre.
 
Man könnte auch mit ebtables die Paket vor dem Verlassen droppen, sodass sie auf der Maschine selbst geroutet werden und eben nicht einfach weitergeleitet werden. So kann man auf jeder bridge routen, ohne dass es irgend welche Einstellungen auf der Client-Seite bedarf.
 

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!