Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Proxmox VE Installieren und Konfigurieren

profile picture
Author
Hetzner Online
Published
2025-09-08
Time to read
14 minutes reading time

Einführung

Proxmox Virtual Environment (Proxmox VE) ist eine Open-Source-Virtualisierungsplattform mit Unterstützung für Kernel-based Virtual Machine (KVM) und Linux Containers (LXC). Proxmox bietet eine webbasierte Verwaltungsschnittstelle, CLI-Tools und eine REST-API für Verwaltungszwecke sowie eine großartige Dokumentation mit einem ausführlichen Proxmox VE Guide, Handbuchseiten und API-Viewer.

Dieses Tutorial zeigt, wie man Proxmox VE 9 auf Debian 13 installiert und IP-Adressen auf virtuellen Maschinen konfiguriert.

Schritt 1 - Installation

Es gibt mehrere Möglichkeiten, Proxmox VE auf einem dedizierten Hetzner Root-Server zu installieren. Man kann entweder Debian 13 installieren und anschließend auf Proxmox upgraden oder das offizielle Image verwenden und Proxmox über qemu installieren.

1.1 Installation von Proxmox VE auf Debian

  • Booten Sie den Server in das Rescue System.
  • Führen Sie installimage aus, wählen Sie das erforderliche Debian 13 (trixie) aus und installieren Sie es.
  • Konfigurieren Sie den RAID-Level, den Hostnamen und die Partitionierung.
  • Speichern Sie die Konfiguration und führen Sie nach Abschluss der Installation einen Neustart durch.
  • Sobald der Server wieder erreichbar ist, folge der offiziellen Anleitung zum Upgrade von Debian 13 auf Proxmox.

1.2 Installation mit ZFS

Proxmox kann auch über qemu mit dem offiziellen ISO installiert werden. Dabei wird der Installer in einer virtuellen Maschine aus dem Hetzner Rescue System gestartet. Das Netzwerk muss jedoch vor dem Neustart konfiguriert werden, da das interface in dieser Methode virtualisiert ist.

Vorbereitung

Bevor Sie mit der Installation beginnen, leiten Sie einen lokalen Port weiter und verbinden Sie sich mit Ihrem Server über den folgenden Befehl:

ssh -L 5900:localhost:5900 root@your_server_ip

Kopiere die Download-URL des ISO-Images und lade es im Rescue System mit wget herunter:

wget https://enterprise.proxmox.com/iso/proxmox-ve_9.0-1.iso

Nun kann eine virtuelle Maschine im Rescue System gestartet, die Laufwerke durchgereicht und vom ISO gebootet werden:

qemu-system-x86_64 \
  -enable-kvm \
  -cpu host \
  -m 16G \
  -boot d \
  -cdrom ./proxmox-ve_9.0-1.iso \
  -drive file=/dev/nvme0n1,format=raw,if=virtio \
  -drive file=/dev/nvme1n1,format=raw,if=virtio \
  -bios /usr/share/OVMF/OVMF_CODE.fd \
  -vnc 127.0.0.1:0

(Die Zeile -bios /usr/share/OVMF/OVMF_CODE.fd \ ist nur für EFI-Server erforderlich. Entfernen Sie diese, wenn Ihr Server auf Legacy eingestellt ist. Prüfen können Sie dies mit [ -d "/sys/firmware/efi" ] && echo "UEFI" || echo "BIOS".)

root@rescue ~ # [ -d "/sys/firmware/efi" ] && echo "UEFI" || echo "BIOS"
UEFI

Falls Sie SATA-Laufwerke haben, passen Sie den Befehl entsprechend an (z. B. /dev/sda statt /dev/nvme0n1).

Verbinden Sie sich mit einem VNC-Client zu 127.0.0.1

Bitte beachten Sie, dass der VNC-Client nach dem Klick auf ‚Install‘ einen Timeout bekommen kann. Verbinden Sie sich in diesem Fall einfach erneut.

image

Konfiguration der Netzwerkschnittstelle

Nach Abschluss der Installation beenden Sie QEMU mit strg + C im Terminal. Vor dem Neustart muss das interface in /etc/network/interfaces angepasst werden.

Sie können den richtigen Interface Namen herausfinden, indem Sie den Befehl predict-check im Rescue-System verwenden:

root@rescue ~ # predict-check 
eth0 -> enp0s31f6

In diesem Fall lautet der Interface Name enp0s31f6. Das im Rescue System aktive Interface können Sie mit netdata einsehen:

root@rescue ~ # netdata
Network data:
   eth0  LINK: yes
         MAC:  aa:bb:cc:dd:cc:ff
         IP:   192.168.1.100/24
         IPv6: (none)
         Intel(R) PRO/1000 Network Driver

Starten Sie Proxmox anschließend erneut mit QEMU, diesmal ohne Installationsmedium:

qemu-system-x86_64 \
  -enable-kvm \
  -cpu host \
  -m 16G \
  -boot d \
  -drive file=/dev/nvme0n1,format=raw,if=virtio \
  -drive file=/dev/nvme1n1,format=raw,if=virtio \
  -bios /usr/share/OVMF/OVMF_CODE.fd \
  -vnc 127.0.0.1:0

Melden Sie sich an und passen Sie das Interface in /etc/network/interfaces an:

nano /etc/network/interfaces

Standard Konfiguration:

auto lo
iface lo inet loopback

auto enp0s31f6
iface enp0s31f6 inet static
        address server_ip/32
        gateway server_gateway

Schritt 2 - Netzwerkkonfiguration

Hetzner hat eine strenge IP/MAC-Bindung, um die Sicherheit zu gewährleisten und Spoofing zu verhindern. In einigen Szenarien ist nur eine geroutete Konfiguration möglich. Beispielsweise sind zusätzliche Subnetze, einzelne Failover-IPs und Failover-Subnetze immer MAC-gebunden und statisch auf die Haupt IP-Adresse des Servers geroutet und können nur in einer gerouteten Konfiguration eingerichtet werden.

In einigen Fällen kann das zusätzliche Subnetz (mit Ausnahme des Failover-Subnetzes) auch an die zusätzliche IP-/MAC-Adresse des Servers gebunden/geroutet werden, wenn im Robot Panel eine virtuelle MAC-Adresse generiert ist. Dies kann direkt über eine Support Ticket Anfrage beantragt werden.

Standardmäßig sind die Haupt- und zusätzlichen einzelnen IP-Adressen an die Haupt MAC-Adresse des Servers gebunden. Für bridged setups müssen Sie im Robot-Panel eine virtuelle MAC-Adresse generieren.

IP-Weiterleitung auf dem Host aktivieren

Bei einem gerouteten Setup sind die Bridges (z.B. vmbr0) nicht mit der physikalischen Schnittstelle verbunden. Die IP-Weiterleitung muss auf dem Host-System aktiviert werden. Bitte beachten Sie, dass die Paketweiterleitung zwischen Netzwerkschnittstellen bei der Standardinstallation von Hetzner deaktiviert ist.

Für IPv4 und IPv6:

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

Änderungen anwenden:

systemctl restart systemd-sysctl

Prüfen, ob das forwarding aktiv ist:

sysctl net.ipv4.ip_forward
sysctl net.ipv6.conf.all.forwarding

Netzwerkkonfiguration hinzufügen

Wählen Sie eine passende Variante:

2.1 Routed Setup

In einer gerouteten Konfiguration dient die Bridge-IP-Adresse des Hostsystems standardmäßig als Gateway. Das manuelle Hinzufügen einer Route zu einer virtuellen Maschine ist erforderlich, wenn die zusätzliche IP nicht zum selben Subnetz gehört. Aus diesem Grund setzen wir die Subnetzmaske auf /32, da Geräte wie vmbr0 grundsätzlich den Datenverkehr nur für IP-Adressen weiterleiten, die zum selben Subnetz gehören. Durch die Verwendung einer /32-Subnetzmaske wird jede zusätzliche IP-Adresse als eigene Netzwerkeinheit behandelt, wodurch sichergestellt wird, dass der Datenverkehr sein richtiges Ziel erreicht, auch wenn die zusätzliche IP-Adresse nicht aus demselben Subnetz stammt.

  • Hostsystem Routed

    Um ein reales Szenario darzustellen, werden wir die folgenden Beispiel-Adressen verwenden:

    • Haupt-IP: 198.51.100.10/24
    • Gateway der Haupt-IP: 198.51.100.1/24
    • Zusätzliches Subnetz: 203.0.113.0/24
    • Zusätzliche Einzel-IP (fremdes Subnetz): 192.0.2.20/24
    • Zusätzliche Einzel-IP (gleiches Subnetz): 198.51.100.30/24
    • Failover Einzel-IP: 172.17.234.100/32
    • Failover Subnetz: 172.17.234.0/24
    • IPv6: 2001:DB8::/64

Bitte beachten Sie, dass Sie das Netzwerk nach dem Anwenden der Netzwerkkonfiguration neu starten müssen, damit der Proxmox-Host die statischen Routen hinzufügt. Wenn während des Neustarts des Netzwerks virtuelle Maschinen oder Container aktiv sind, müssen Sie diese anhalten (nicht nur neu starten) und anschließend wieder starten. Dadurch werden die Punkt-zu-Punkt-Verbindungen zwischen den virtuellen Maschinen und dem Host korrekt neu erstellt.

systemctl restart networking
# /etc/network/interfaces

auto lo
iface lo inet loopback

iface lo inet6 loopback

auto enp0s31f6
iface enp0s31f6 inet static
        address 198.51.100.10/32    # Haupt-IP
        gateway 198.51.100.1        # Gateway

        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

# IPv6 des Main-interface
iface enp0s31f6 inet6 static
        address 2001:db8::2/128             # /128 auf dem Ethernet, /64 auf der Bridge
        gateway fe80::1

# Bridge für einzelne IP's (fremdes und gleiches Subnetz)
auto vmbr0
iface vmbr0 inet static
        address 198.51.100.10/32     #Haupt-IP
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        post-up ip route add 192.0.2.20/32 dev vmbr0     # Zusätzliche IP aus einem fremden Subnetz
        post-up ip route add 198.51.100.30/32 dev vmbr0  # Zusätzliche IP aus dem gleichen Subnetz
        post-up ip route add 172.17.234.100/32 dev vmbr0 # Failover IP

# IPv6 für die bridge
iface vmbr0 inet6 static
        address 2001:db8::3/64                # Sollte nicht die gleiche Adresse wie das Main-interface sein

# Zusätzliches Subnetz 203.0.113.0/24
auto vmbr1
iface vmbr1 inet static
        address 203.0.113.1/24 #  Setzen Sie eine nutzbare IP aus dem Subnetzbereich
        bridge-ports none
        bridge-stp off
        bridge-fd 0

# Failover Subnetz 172.17.234.0/24
auto vmbr2
iface vmbr2 inet static
        address 172.17.234.1/24 # Setzen Sie eine nutzbare IP aus dem Subnetzbereich
        bridge-ports none
        bridge-stp off
        bridge-fd 0

  • Gastsystem Routed (Debian 12)

    Als Gateway wird immer die IP der Bridge im Hostsystem verwendet, d.h. die Haupt-IP für einzelne IPs und die IP aus dem im Hostsystem konfigurierten Subnetz für Subnetze.

    Gastkonfiguration:

    • Mit einer zusätzlichen IP aus dem gleichen Subnetz:

      # /etc/network/interfaces
      
      auto lo
      iface lo inet loopback
      
      auto ens18
      iface ens18 inet static
              adresse 198.51.100.30/32   # Zusätzliche IP
              gateway 198.51.100.10      # Haupt-IP
      
      # IPv6
      iface ens18 inet6 static
              address 2001:DB8::4/64      # IPv6-Adresse des Subnetzes
              gateway 2001:DB8::3         # Bridge Adresse
    • Mit einer fremden Additional IP:

      # /etc/network/interfaces
      
      auto lo
      iface lo inet loopback
      
      auto ens18
      iface ens18 inet static
              address 192.0.2.20/32 # Zusätzliche IP aus einem fremden Subnetz
              gateway 198.51.100.10 # Haupt-IP
    • Mit einer IP aus dem zusätzlichen Subnetz:

      # /etc/network/interfaces
      
      auto lo
      iface lo inet loopback
      
      auto ens18
      iface ens18 inet static
              address 203.0.113.10/24 # Subnetz-IP
              gateway 203.0.113.1     # Gateway ist die IP der bridge (vmbr1)
    • Mit einer IP aus dem failover Subnetz:

      # /etc/network/interfaces
      
      auto lo
      iface lo inet loopback
      
      auto ens18
      iface ens18 inet static
              address 172.17.234.10/24      # Failover Subnetz-IP
              gateway 172.17.234.1          # Gateway ist die IP der bridge (vmbr2) 
    • Einzelne failover IP:

      # /etc/network/interfaces
      
      auto lo
      iface lo inet loopback
      
      auto ens18
      iface ens18 inet static
              address 172.17.234.100/32      # Failvoer IP
              gateway 198.51.100.10          # Haupt-IP


2.2 Bridged Setup

Wenn Sie Proxmox im Bridged-Modus einrichten, müssen Sie unbedingt virtuelle MAC-Adressen für jede einzelne zusätzliche IP-Adresse über das Robot Panel anfordern (virtuelle MAC-Adressen können nur für einzelne zusätzliche IP-Adressen generiert werden). In diesem Modus fungiert der Host als transparente Brücke und ist nicht Teil des Routing-Pfads. Das bedeutet, dass Pakete, die am Router ankommen, die MAC-Quelladresse der virtuellen Maschinen enthalten. Wenn die MAC-Quelladresse vom Router nicht erkannt wird, wird der Datenverkehr als "Abuse" eingestuft und kann dazu führen, dass der Server blockiert wird. Daher ist es wichtig, virtuelle MAC-Adressen im Robot Panel anzufordern.

  • Hostsystem Bridged

    Wir konfigurieren hier nur die Haupt-IP des Servers. Die zusätzlichen IPs werden in den Gastsystemen konfiguriert.

    # /etc/network/interfaces
    
    auto lo
    iface lo inet loopback
    
    auto enp0s31f6
    iface enp0s31f6 inet manual
    
    auto vmbr0
    iface vmbr0 inet static
            address 198.51.100.10/32    # Haupt-IP
            gateway 198.51.100.1        # Gateway
            bridge-ports enp0s31f6
            bridge-stp off
            bridge-fd 0

  • Gastsystem Bridged (Debian 12)

    Hier verwenden wir das Gateway der zusätzlichen IP, oder wenn die zusätzliche IP im gleichen Subnetz wie die Haupt-IP liegt, verwenden wir das Gateway der Haupt-IP.

    Statische Konfiguration:

    # /etc/network/interfaces
    
    auto ens18
    iface ens18 inet static
            address 192.0.2.20/32   # Zusätzliche IP 
            gateway 192.0.2.1       # Gateway der zusätzlichen IP

    Im Bridged Modus kann DHCP auch zur automatischen Konfiguration der Netzwerkeinstellungen verwendet werden. Es ist jedoch wichtig, die virtuelle Maschine so zu konfigurieren, dass sie die vom Robot Panel erhaltene virtuelle MAC-Adresse für die spezifische IP-Konfiguration verwendet.

    d5ce2092 8887 4695 9bd1 ba9e3c8e3f71

    Sie können dies auch manuell in der virtuellen Maschine selbst, in /etc/network/interfaces, einstellen:

    # /etc/network/interfaces
    
    auto lo
    iface lo inet loopback
    
    auto ens18
    iface ens18 inet dhcp
            hwaddress ether aa:bb:cc:dd:ee:ff # Die MAC-Adresse ist nur ein Beispiel

    Dasselbe kann für LXC-Container über die Proxmox-GUI gemacht werden, indem Sie einfach auf den Container klicken, zu "Network" navigieren und dann auf die Bridge klicken. Wählen Sie DHCP und fügen Sie die korrekte MAC-Adresse aus dem Robot Panel hinzu (in unserem Fall wäre das Beispiel aa:bb:cc:dd:ee:ff):

    e569dbf9 2431 4973 abad d950b6b75eda



2.3 vSwitch mit öffentlichem Subnetz

Proxmox kann auch so eingerichtet werden, dass es sich direkt mit einem Hetzner vSwitch verbindet, der das Routing für ein öffentliches Subnetz verwaltet, so dass IP-Adressen aus diesem Subnetz direkt an VMs und Container zugewiesen werden können. Das Setup muss ein Bridged-Setup sein und es muss ein virtuelles Interface erstellt werden, damit die Pakete den vSwitch erreichen können. Die Bridge muss nicht VLAN-fähig sein und es muss keine VLAN-Konfiguration innerhalb der VM oder des LXC-Containers vorgenommen werden, das VLAN tagging erfolgt hier über das Subinterface, in unserem Beispiel das enp0s31f6.4009. Jedes Paket, das durch das Interface geht, wird mit der entsprechenden VLAN ID getaggt. (Bitte beachten Sie, dass diese Konfiguration für die LXC/VM's gedacht ist. Wenn Sie möchten, dass der Host selbst mit dem vSwitch kommunizieren kann, müssen Sie eine zusätzliche Routing-Tabelle erstellen). In diesem Fall werden wir 203.0.113.0/24 als Beispielsubnetz verwenden.

  • Hostsystem Konfiguration:
    # /etc/network/interfaces
    
    auto enp0s31f6.4009
    iface enp0s31f6.4009 inet manual
    
    auto vmbr4009
    iface vmbr4009 inet static
            bridge-ports enp0s31f6.4009
            bridge-stp off
            bridge-fd 0
            mtu 1400
    #vSwitch Subnetz 203.0.113.0/24

  • Gastsystem Konfiguration:
    # /etc/network/interfaces
    
    auto lo
    iface lo inet loopback
    
    auto ens18
    iface ens18 inet static
            address 203.0.113.2/24 # Subnetz-IP vom vSwitch
            gateway 203.0.113.1    # vSwitch-Gateway


2.4 Hetzner Cloud Netzwerk

Es ist auch möglich, eine Verbindung zwischen den virtuellen Maschinen/LXC in Proxmox mit dem Hetzner Cloud Netzwerk herzustellen. Für dieses Beispiel nehmen wir an, dass Sie Ihr Cloud Netzwerk bereits eingerichtet haben und den vSwitch mit der folgenden Konfiguration hinzugefügt haben:

  • 192.168.0.0/16 - Ihr Cloud Netzwerk (übergeordnetes Netzwerk)
  • 192.168.0.0/24 - Subnetz des Cloud Servers
  • 192.168.1.0/24 - vSwitch (#12345)

Die Konfiguration sollte in etwa wie folgt aussehen:

3935fcac 0bc7 47c1 8965 511f11d7f72c

Ähnlich wie im Beispiel zuvor erstellen wir zunächst eine virtuelle Schnittstelle und definieren die VLAN ID, in unserem Fall wäre das enp0s31f6.4000. Wir müssen die Route zum Cloud Netzwerk 192.168.0.0/16 über den vSwitch hinzufügen. Bitte beachten Sie, dass das Hinzufügen einer Route zum Hetzner-Cloud-Netzwerk und das Zuweisen einer IP-Adresse aus dem privaten Subnetzbereich des vSwitch an die Bridge nur notwendig ist, wenn der Proxmox-Host selbst mit dem Hetzner-Cloud-Netzwerk kommunizieren soll.

  • Hostsystem Konfiguration:
    # /etc/network/interfaces
    
    auto enp0s31f6.4000
    iface enp0s31f6.4000 inet manual
    
    auto vmbr4000
    iface vmbr4000 inet static
            address 192.168.1.10/24
            bridge-ports enp0s31f6.4000
            bridge-stp off
            bridge-fd 0
            mtu 1400
            post-up ip route add 192.168.0.0/16 via 192.168.1.1 dev vmbr4000
            
    #vSwitch-to-cloud Privates Subnetz 192.168.1.0/24

  • Gastsystem Konfiguration:
    # /etc/network/interfaces
    
    auto lo
    iface lo inet loopback
    
    auto ens18
    iface ens18 inet static
            address 192.168.1.2/24
            gateway 192.168.1.1

2.5 Masquerading (NAT)

Die Freigabe der virtuellen Maschinen/LXC-Container gegenüber dem Internet ist auch möglich, ohne weitere öffentliche zusätzliche IP-Adressen zu konfigurieren/zu nutzen. Hetzner hat eine strenge IP/MAC-Bindung, d.h. wenn der Datenverkehr nicht richtig geroutet wird, kommt es zu Abuse und kann zu Server-Sperrungen führen. Um dieses Problem zu vermeiden, können wir den Datenverkehr von den LXC/VMs über das Main-Interface des Hosts leiten. Dadurch wird sichergestellt, dass alle Netzwerkpakete die gleiche MAC-Adresse verwenden. Masquerading ermöglicht virtuellen Maschinen mit privaten IP-Adressen den Internetzugang über die öffentliche IP-Adresse des Hosts für ausgehende Kommunikation. Iptables ändert jedes ausgehende Datenpaket so, dass es so aussieht, als käme es vom Host, und eingehende Antworten werden so angepasst, dass sie an den ursprünglichen Absender zurückgeleitet werden können.

# /etc/network/interfaces

auto lo
iface lo inet loopback

iface lo inet6 loopback

auto enp0s31f6
iface enp0s31f6 inet static
        address 198.51.100.10/24
        gateway 198.51.100.1
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward

        #post-up iptables -t nat -A PREROUTING -i enp0s31f6 -p tcp -m multiport ! --dports 22,8006 -j DNAT --to 172.16.16.2
        #post-down iptables -t nat -D PREROUTING -i enp0s31f6 -p tcp -m multiport ! --dports 22,8006 -j DNAT --to 172.16.16.2

auto vmbr4
iface vmbr4 inet static
        address 172.16.16.1/24
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        post-up   iptables -t nat -A POSTROUTING -s '172.16.16.0/24' -o enp0s31f6 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '172.16.16.0/24' -o enp0s31f6 -j MASQUERADE
#NAT/Masq

Bitte beachten Sie, dass diese Regeln (unten) nicht notwendig sind, damit die LXC/VM's Zugang zum Internet haben. Diese Regel ist optional und dient dem Zweck des externen Zugriffs auf eine bestimmte VM/Container. Sie leitet den gesamten eingehenden Datenverkehr, außer auf den Ports 22 und 8006 (22 ist hier ausgenommen, damit Sie sich weiterhin über SSH mit Proxmox verbinden können, und 8006 ist der Port für das Webinterface), an eine bestimmte virtuelle Maschine unter `172.16.16.2` innerhalb des Subnetzes um. Dies ist ein übliches Szenario/Setup für Router-VMs wie pfSense, bei dem der gesamte eingehende Verkehr an die Router-VM umgeleitet und dann entsprechend geroutet wird.
post-up iptables -t nat -A PREROUTING -i enp0s31f6 -p tcp -m multiport ! --dports 22,8006 -j DNAT --to 172.16.16.2
post-down iptables -t nat -D PREROUTING -i enp0s31f6 -p tcp -m multiport ! --dports 22,8006 -j DNAT --an 172.16.16.2

Schritt 3 - Sicherheit

Das Webinterface ist durch zwei verschiedene Authentifizierungsmethoden geschützt:

  • Proxmox VE-Standard-Authentifizierung (Proxmox-eigene Authentifizierung)
  • Linux PAM-Standard-Authentifizierung

Dennoch wären zusätzliche Schutzmaßnahmen empfehlenswert, um sich vor der Ausnutzung von Sicherheitslücken oder verschiedenen anderen Angriffen zu schützen.

Hier sind einige Möglichkeiten:

Ergebnis

Mit diesem Tutorial sollten Sie Proxmox VE als Virtualisierungsplattform auf Ihrem Server installiert und konfiguriert haben.

Proxmox VE unterstützt auch Clustering. Details finden Sie im Tutorial "Einrichten einer eigenen Public Cloud mit Proxmox auf Hetzner Bare Metal" (EN).

Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue

Discover our

Dedicated Servers

Configure your dream server. Top performance with an excellent connection at an unbeatable price!

Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more