theHacker's Blog
– It's just a glitch in the Matrix –

Proxmox in einer virtuellen Maschine ausprobieren

VMware geht den Bach runter. Ich habe die freie Alternative "Proxmox" getestet.

Beim Testen in einer virtuellen Umgebung muss man allerdings etwas beachten.

Das Ende von VMware

Ich selber verwende VMware und bin damit eigentlich seit Jahren sehr zufrieden. Der Hypervisor, das ESXi, ist gratis und die ganzen Premium-Features, die über das vCenter kommen, brauche ich nicht wirklich.

Und selbst, wenn ich mich entschließe, einen zweiten Server hinzuzufügen, gibt es eine relativ günstige Lizenz "vSphere Essentials", die einmalig knapp 1.000€ (IIRC) kostet und ich kann dann auf bis zu drei Server aufstocken und erhalte die coolen Features wie z. B. "vMotion", um virtuellen Maschinen von einem Host auf den anderen umzuziehen, und zwar im laufenden Betrieb.

… dieser Plan ist jetzt geplatzt. 😟

Wie aus diesem heise-Artikel hervorgeht, hat Broadcom die Firma gekauft und vergrault jetzt fleißig alle Kunden.

"Kunden" wie mich, die bisher gar nix gezahlt haben und nur mit einem Kauf liebäugeln, will der neue Besitzer ja gleich gar nicht haben. Und ich will keine Abo-Software.

Ergo: VMware muss mittelfristig ersetzt werden!

Proxmox

Proxmox, genauer "PVE", kurz für "Proxmox Virtual Environment" ist, genauso wie VMware, ein Hypervisor Typ 1. Er verwendet KVM und wird auf Basis von Debian installiert.

Installation

Die Installation ist wie jede Linux-Installation denkbar einfach. Installer-ISO von der Webseite herunterladen, booten, den Installations-Wizard durchlaufen, der nur minimale Konfiguration (wie z. B. Netzwerk) erfordert. Danach ist eine schicke Web-Oberfläche im Browser verfügbar, über die man alles weiteres macht.

Ich möchte in diesem Artikel gar nicht auf die Installation selber eingehen, sondern auf ein kleines Detail, was nirgendwo steht.

Die Crux in der virtuellen Umgebung

innerhalb VMware

Die Dokumentation schreibt sogar explizit, dass das Betreiben von Proxmox in einer virtuellen Umgebung funktioniert.

Proxmox VE kann als Gast auf allen gängigen Desktop-Virtualisierungs-Lösungen installiert werden, solange Sie [sic!] "Nested Virtualization" erlauben.

Ich habe mir also in VMware eine virtuelle Maschine angelegt und Proxmox installiert. Danach habe ich mir innerhalb Proxmox eine virtuelle Maschine angelegt und versucht, dort ein Debian zu installieren.

Verwundert war ich, dass der Debian-Installer mir bei der Netzwerkkonfiguration gesagt hat, dass er nicht automatisch mit DHCP konfigurieren konnte. Ich hab mir nix groß gedacht und dann sowieso statische IPs zugewiesen.

Doch auch beim Abschluss der Installation gab es Probleme. Der Installer konnte den Spiegelserver für die Paketquellen nicht erreichen. Als ich auf die Konsole bin, konnte ich das Problem erstmals in seiner ganzen Ausprägung sehen: Die VM in der VM hatte keine Internetverbindung. 🙁

Nach vielen Lesen und Rumprobieren hab ich daraufhin erstmal aufgegeben und habe mit es mit VirtualBox probiert.

innerhalb VirtualBox

VirtualBox läuft auf meinem Desktop-PC. Im Gegensatz zu VMware, wo die virtuellen Maschinen quasi allgegenwärtig sind, muss ich bei VirtualBox die ganze Zeit den Desktop-Rechner und das VirtualBox-VM-Fenster offen lassen.

No problem, ich will ja nur testen.

Bei VirtualBox muss man in der Netzwerkkonfiguration auf "Netzwerkbrücke" schalten, damit die erstellte virtuelle Maschine auch im ganzen Netzwerk sichtbar ist, d. h. sie überall hin zugreifen kann und auch alle anderen Teilnehmer im Netzwerk die virtuelle Maschine erreichen können.

Selbes Spielchen: Proxmox installiert, innerhalb von Proxmox eine VM angelegt und darauf versucht, Debian zu installieren. Selbes Ergebnis: Kein Internet.

Um etwas genauer zu sein: Die Debian-Maschine konnte einzig die Proxmox-Maschine erreichen, aber sonst niemanden. D. h. auch weder das Gateway, um ins Internet zu kommen, noch DNS- oder DHCP-Server.

Routing…?

Ich habe erst Proxmox verdächtig, dass dort irgendwas nicht eingestellt ist. Die Dokumentation schlägt den "Bridge"-Modus vor, genau das, was ich auch möchte: Alle Maschinen im selben Netz. Nix an Routing zu konfigurieren, sondern out-of-the-box muss das einfach gehen.

Tat es aber nicht.

Ich habe dann manuelle Routings erstellt und Teilerfolge verzeichnet, dass bestimmte Rechner die VM erreicht haben. Aber selbst ein ping hatte dann merkwürdige Ausgaben à la Redirect Host(New nexthop: ...), dass etwas im Netzwerk nicht stimmt und es einen einfacheren Weg gibt. Ja klar, nämlich einfach direkt das Paket vom Quell- zum Zielrechner schicken. Die sind (sollten!) ja im selben Netz sein.

Lösung

Schlussendlich habe ich dann die Lösung gefunden, wie ich bei VirtualBox die VM-Einstellungen durchgeklickt habe: Der Promiscuous-Modus.

Im Default steht der auf "deny". Normal macht das Sinn, dass die VM nicht den gesamten Traffic "ablauschen" darf, sondern nur den Traffic bekommt, der für sie zuständig ist. Im Falle von Proxmox (oder allgemeiner: einer Virtualisierungslösung) ist das aber fatal, weil VirtualBox dann denkt "nur Traffic zu Proxmox darf die Proxmox-VM erreichen". Kommt Traffic für die Debian-VM, wird dieser abgeblockt, obwohl die Debian-VM ja auf der Proxmox-VM läuft (VM in VM).

Nachdem die Einstellung auf "erlauben für allen [sic!] VMs und den Host" gestellt ist, klappt es auch. 😌

Der Debian-Installer erreicht während der Installation den DHCP und bezieht von dort automatisch eine IP-Adresse.

Mit diesem Wissen konnte ich Proxmox auch auf VMware zum Laufen bringen. Dort muss man in den zugehörigen virtuellen Switch gehen und in diesem den Promiscuous-Modus aktivieren.

Fazit

Eigentlich logisch: Promiscuous-Modus aktivieren, damit alle Pakete zugestellt werden.

Dennoch sehr nervig, weil nirgendwo ein Hint in der Proxmox-Dokumentation steht, dass man an diese kleine Einstellung denken muss.


Hinterlasst gerne einen Kommentar, wenn euch dieser Artikel geholfen hat oder/und ihr eure Erfahrungen mit Proxmox teilen wollt.

Kommentare zu diesem Artikel

Schreib einen Kommentar zum Artikel

CAPTCHA Das Internet ist leider voller Bots. 🙁 Bitte gib den obenstehenden Code ein.
Falls du den Code nicht lesen kannst oder dir unsicher bist, klick einfach hier, um einen neuen Code zu generieren.

Mit Abschicken des Formulars bestätigst du,
die Datenschutz-Infos gelesen zu haben.