Einführung
Dieser Artikel beschäftigt sich damit, Proxmox auf einem Arm64 Server zu installieren und mehrere VMs hinter einer Router VM zu betreiben. Hierzu ist nur eine zusätzliche IP mit virtueller MAC notwendig.
Schritt 1 - Installation
Es gibt einen Fork von Proxmox, welcher es zur Aufgabe hat auf allen verfügbaren Architekturen zu funktionieren. Aktuell ist unter anderem auch Armv8 (aarch64) verfügbar (siehe GitHub Repository).
Die aktuelle Arm64-Version steht auf folgendem Mirror zur Verfügung: Mirror.
Die Installation verläuft wie bei jedem normalen Proxmox auch. Auch die Nutzung von ZFS ist ohne Probleme möglich.
Die zuletzt erfolgreich getestete Version ist 8.3.2
.
Bei diesem Fork gibt es einige Dinge zu beachten, um eine funktionsfähige Umgebung zu erhalten. Weitere Informationen findest du auch im offiziellen Wiki des Projekts: Wiki.
Schritt 2 - Netzwerkkonfiguration
Es sollte jetzt die Bridge für die interne Kommunikation, zwischen den VMs, angelegt werden. Dies kann über die Web Oberfläche von Proxmox geschehen, oder über das Terminal.
-
Über die Weboberfläche
Die Bridge kann auf dem entsprechenden Host im Punkt Netzwerk angelegt werden. Im Anschluss muss die Konfiguration noch angewendet werden.
-
Über das Terminal
Folgendes muss in die Interfaces Datei hinzugefügt werden.
File: /etc/network/interfaces [...] auto vmbr1 iface vmbr1 inet static bridge-ports none bridge-stp off bridge-fd 0
Die vmbr0
wird bei der Installation per ISO automatisch angelegt und muss nicht manuell erstellt werden.
Schritt 3 - Erstellen der Router VM
Beim Erstellen einer VM gibt es ein paar Dinge zu beachten:
-
Einstellungen
Beschreibung OS Wähle in diesem Tab Do not use any media
, da das RAW Image später direkt eingebunden wird.- CDROM und Cloud-Init
Hier sollte ebenfalls nur SCSI verwendet werden. Andere Optionen werden nicht unterstützt.
System - Graphic Card
Default ist hier virtio-gpu und sollte auch genutzt werden. In wenigen Fällen funktioniert die Ausgabe nicht korrekt. In diesem Fall sollte später eine Serielle Console genutzt werden. - BIOS
Es wird empfohlen die VM mit einem EFI BIOS zu erstellen. Hierzu muss OVMF ausgewählt werden. - Machine type
Der Typ sollte immer virt belassen werden und die Version auf Latest. Dies vermeidet Probleme in der Zukunft. - SCSI controller
Es ist nur VirtIO SCSI, VirtIO SCSI single und virtio-blk unterstützt. Kein SATA oder IDE.
Disks Hier kann bei der Router VM einfach die Platte entfernt werden, da diese später per RAW Image hinzugefügt wird.
Bei der Installation eines Gasts, sollte bei der Platte nurSCSI
verwendet werden.CPU Die Anzahl der Kerne kann frei gewählt werden. - CPU Typ
Beim CPU Typ sollte Host oder Max ausgewählt werden. Default ist hierbei Host. Wenn spezielle Images verwendet werden sollen, kann auch eine andere Arm CPU emuliert werden.
RAM Auch der RAM kann frei zugewiesen werden. Network Beim Netzwerk wird nun zuerst vmbr1 hinzugefügt. Dies ist das Netzwerk für die Interne Kommunikation der VMs. - Netdev
Hier wird virtio empfohlen. Das Emulieren von anderen Netzwerkkarten sollte nicht genutzt werden.
- CDROM und Cloud-Init
-
Netzwerk Interfaces
Das Network Device für die interne Kommunikation sollte
net0
sein und das Device mit der Virtuellen MAC der zusätzlichen IPnet1
. Nur so konfiguriert openWRT das erste Interface direkt als LAN und das zweite als WAN.Die Virtuelle MAC, welche man im Hetzner Robot für die zusätzliche IP erhält, wird in das zweite Netzwerk Device (
net1
) eingetragen. Als Bridge Interface verwendet manvmbr0
. Dies ist die Bridge auf welcher auch die Haupt IP konfiguriert ist und stellt im späteren Teil den WAN Port dar.Dieses zweite Netzwerkinterface wird nun zur VM hinzugefügt. Hierzu einfach im Punkt "Hardware" ein Netzwerkinterface hinzufügen, die MAC eintragen und
vmbr0
auswählen.- Erstes Netzwerkdevice
net0
->vmbr1
(Internes Netzwerk) - Zweites Netzwerkdevice
net1
->vmbr0
(Öffentliches Netzwerk mit virtueller MAC)
- Erstes Netzwerkdevice
-
Serielle Console
Um die Konfiguration der Router VM auch ohne Weboberfläche vornehmen zu können, sollte noch eine Serielle Console zur Hardware der VM hinzugefügt werden. Dies kann ebenfalls im Punkt "Hardware" geschehen.
-
Router Image
Die Optionen für ein Router OS welches auf Armv8 verfügbar sind, ist aktuell limitiert. Die Router VM wird in diesem Fall verwendet um das DHCP, Portweiterleitungen und Firewall Regeln der VMs im Privaten Netzwerk einfacher zu verwalten. Dies ist bei kleinen Setups nicht unbedingt nötig, da Proxmox auch NAT unterstützt. Mehr Informationen hierzu findet man in folgendem Artikel: Proxmox VE Installieren und Konfigurieren #Masquerading (NAT)
Für die Router VM verwenden wir openWRT. Auf diesem Mirror gibt es eine Version für Armv8. Da die VM im UEFI Modus läuft, benötigen wir auch ein EFI Image. Ein passendes Image findet man hier (openwrt-24.10.0-rc7-armsr-armv8-generic-ext4-combined-efi.img.gz). Hierbei handelt es sich um ein Systemabbild, welches direkt gebootet werden kann.
Mit folgenden Befehlen wird das oben genannte Image heruntergeladen, entpackt und anschließend in die VM mit der ID
100
importiert.local-lvm
gibt hierbei den Storage an, auf welchem das Disk image gespeichert werden soll. Bei setups mit zfs heißt dies meistlocal-zfs
.wget https://archive.openwrt.org/releases/24.10.0-rc7/targets/armsr/armv8/openwrt-24.10.0-rc7-armsr-armv8-generic-ext4-combined-efi.img.gz gunzip openwrt-24.10.0-rc7-armsr-armv8-generic-ext4-combined-efi.img.gz qm importdisk 100 openwrt-24.10.0-rc7-armsr-armv8-generic-ext4-combined-efi.img local-lvm
Im Anschluss muss die importierte Disk noch in die VM eingebunden werden und auf eine nutzbare Größe erweitert werden. Um die Disk hinzuzufügen einfach Doppelklick auf diese und im Anschluss "Add" drücken. Zum Anpassen der Größe, die Disk auswählen und oben unter "Disk Action" auf Resize drücken. Hier kann der Speicher eingetragen werden, welcher hinzugefügt werden soll. GGF. muss auch noch die Bootreihenfolge angepasst werden im Punkt "Options".
Nun kann die VM zum ersten mal gestartet werden.
Schritt 4 - Erster Login
Per default stellt das WAN interface keine Web GUI zur Verfügung. Dies ist auch gut, da das Image kein Passwort gesetzt hat. Zunächst sollte ein Passwort gesetzt werden. Dafür kann eine der folgenden Optionen genutzt werden:
-
Über die Konsole der VM
In der Konsole der VM muss
passwd
eingegeben werden. Achtung: Keyboard Layout beachten
-
Über die Serielle Console
Per SSH muss eine Verbindung zum Host hergestellt und mit folgendem Befehl die Serielle Console gestartet werden:
qm terminal <vm id>
Die Serielle Console zeigt zu Beginn keine Ausgabe. Durch Drücken von "Enter" kommt man zum Prompt. Anschließend kann
passwd
eingegeben werden.
Nachdem ein Passwort gesetzt wurde, kann nun die Web GUI auf dem WAN Port aktiviert werden.
Verbinden per WAN (Public IP)
Wenn es nötig ist die GUI direkt über die WAN IP der VM zu erreichen, ist diese auch möglich. Hierzu muss dies in der Firewall freigegeben werden. Folgende Befehle müssen hierzu in der VM eingegeben werden. Dies kann durch die Console in der Proxmox Web GUI geschehen, oder über die Serielle Console in der Proxmox CLI. Um die Serielle Console zu nutzen, muss zunächst ein Serielles Gerät zur VM hinzugefügt werden.
Proxmox CLI
Mit diesem Befehl kann man auf die Console der VM verbinden:
qm terminal <vm id>
uci add firewall rule
uci set firewall.@rule[-1].name='Allow-Admin'
uci set firewall.@rule[-1].enabled='true'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].proto='tcp'
uci set firewall.@rule[-1].dest_port='80 443'
uci set firewall.@rule[-1].target='ACCEPT'
uci commit firewall
service firewall restart
Schritt 5 - Erste Gast VM
Sobald die openWRT VM läuft und die Web GUI erreichbar ist, kann die erste Gast VM erstellt werden. Hier ist das Vorgehen ähnlich wie bei der Router VM. Die Einstellungen können wie oben beschrieben angepasst werden. Generell stehen einige Images für Arm zur Verfügung. Folgend ein paar Beispiele:
Als Netzwerk Interface wird nun immer die vmbr1
verwendet. Auf dieser Bridge verteilt die Router VM IPs und routet den Traffic ins Internet.
Ergebnis
Weitere Informationen zur Konfiguration von Proxmox im Netzwerk von Hetzner, findet man auch im folgenden Community Artikel. Proxmox VE Installieren und Konfigurieren