Einführung
Proxmox VE ist eine Open-Source Virtualisierungsplattform mit Unterstützung für KVM und (ab Version 4.0) Linux Containers (LXC). Weiterhin gibt es ab Proxmox 4.0 eine volle Unterstützung für IPv6. Für weitere Informationen bezüglich den Neuerungen, besuchen Sie bitte die offizielle Roadmap im Proxmox VE-Wiki.
Die Einrichtung sollte in der Regel unkompliziert verlaufen, da LXC bereits einiges an Vorarbeit leistet und nicht mehr sonderlich viel zusätzlichen Konfigurationsaufwand benötigt.
Achtung: Ab Version 4.0 wurde die Unterstützung für OpenVZ entfernt und völlig gegen LXC ersetzt. Bitte beachten Sie dies, bevor Sie ein Upgrade durchführen! Mehr Informationen zur Konvertierung der OpenVZ-Container zu LXC, können Sie dem Proxmox Wiki entnehmen: Convert OpenVZ to LXC
Vor der Installation
Vorab einige Anregungen bzw. Ratschläge, bevor mit der Einrichtung der Umgebung begonnen wird:
- Werden nur Linux-Maschinen verwendet werden? Dann wäre unter Umständen LXC ausreichend.
- Soll LXC oder KVM verwendet werden? Beide bieten Vor- sowohl als auch Nachteile. Eine bedachte Entscheidung und gute Recherche kann hierbei für weniger Arbeit/Ärger in der Zukunft sorgen.
- LXC ist etwas performanter, unterstützt dafür aber auch nur unixoide Betriebssysteme und eine Migrierung in andere Formate wie z.B. zu KVM/VMware ESXi ist aufwendiger.
- KVM ist zwar nicht so performant wie OpenVZ/LXC, bietet dafür jedoch eine komplette Hardwarevirtualisierung und ermöglicht das Betreiben jedes der gängigsten Betriebssysteme (auch Windows). Eine Konvertierung der virtuellen Festplatten in Formate wie VMDK ist hierbei einfacher.
Schritt 1 - Installation
Schritt 1.1 - Grundinstallation auf einem Hetzner Server
Den Server in das Rescue-System booten. Dort installimage aufrufen und das gewünschte Debian-System auswählen und installieren.
Um einen möglichst stabilen Betrieb zu ermöglichen empfiehlt es sich die geeignete Debian-Version zu der dazupassenden Proxmox-Version einzusetzen, welche auch Verwendung in den offiziellen vorgefertigten Installationsmedien finden:
- Seit Proxmox 4.0: Debian 8 (jessie)
- Seit Proxmox 5.0: Debian 9 (stretch)
- Seit Proxmox 6.0: Debian 10 (buster)
Nach Wunsch RAID-Level, Partitionierung und Hostnamen in der Konfiguration anpassen. Speichern und nach Abschluss der Installation neustarten.
Schritt 1.2 - APT Sources (/etc/apt/sources.list) anpassen
Als nächstes müssen die APT-Sources angepasst werden:
echo "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
Key hinzufügen:
curl -#o /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg
Nun müssen noch die Pakete aktualisiert werden:
apt update # Paketlisten aktualisieren
apt upgrade # Alle Pakete auf den aktuellsten Stand bringen
apt dist-upgrade # Debian auf den aktuellsten Stand bringen
Da Proxmox eigene Firmware mitbringt, sollten zunächst die vorhandenen Firmwarepakete deinstalliert werden:
apt purge firmware-bnx2x firmware-realtek firmware-linux-free
Anschließend kann Proxmox installiert werden:
apt install proxmox-ve
Nach einem Neustart sollte der Proxmox-Kernel geladen sein:
# uname -rv
5.4.103-1-pve #1 SMP PVE 5.4.103-1 (Sun, 07 Mar 2021 15:55:09 +0100)
Schritt 1.3 - Kernel Modul laden
Prüfen Sie nun mit dem Befehl
lsmod | grep kvm
ob das Modul kvm
geladen wurde. Sollten die Kernel Module nicht geladen worden sein, dann können Sie diesen Schritt manuell nachholen.
Für Intel Prozessoren:
modprobe kvm
modprobe kvm_intel
Für AMD-Prozessoren:
modprobe kvm
modprobe kvm_amd
Beachten Sie: Die Kernel-Module werden für die KVM Hardware-Virtualisierung
benötigt. Sollten diese nicht vorhanden sein, können keine KVM-Gäste gestartet werden.
Schritt 2 - Netzkonfiguration
Zunächst ist es wichtig, zu entscheiden, welche Virtualisierungslösung (LXC
und/oder KVM
) und welche Variante (bridged
/routed
) verwendet werden soll.
LXC (Linux Containers)
- Vorteile:
- leichtgewichtig, schnell, geringerer RAM Bedarf.
- Nachteile:
- Es wird der Kernel des Hostsystems verwendet, nur Linux-Distributionen lassen sich nutzen.
KVM (Kernel-Based Virtual Machine)
- Vorteile:
- Nahezu beliebige Betriebssysteme lassen sich installieren.
- Nachteile:
- Höherer Ressourcenverbrauch, da die VMs Ihren eigenen Kernel nutzen.
Routed
-
Vorteile:
- Sowohl Einzel-IP-Adressen, als auch IP-Adressen aus einem zusätzlichen Subnetz können ohne weiteres in allen VMs genutzt werden.
-
Nachteile:
- Bei IP-Adressen aus verschiedenen Netzen ist ein Pointopoint-Setup erforderlich.
Bridged
-
Vorteile:
- Das Host-System ist transparent und nicht Teil der Route.
- VMs können direkt mit dem Gateway des eigenen IP-Netzes kommunizieren.
-
Nachteile:
- VMs dürfen nur mittels der MAC-Adresse kommunizieren, die der jeweiligen IP-Adresse zugeordnet ist. Diese müssen über den Hetzner Robot beantragt werden.
- IP-Adressen aus zusätzlichen Subnetzen sind nur auf dem Host-System oder einer einzelnen VM mit einer Einzel-IP (sofern das Subnetz auf diese geroutet ist) nutzbar (gilt auch für IPv6)
Bei einem Routed Setup wird die vmbr0
nicht mit dem physischen Interface verbunden. Ebenso muß das IP-Forwarding
auf dem Hostsystem aktiviert werden. Dies kann über /etc/sysctl.conf
beim Booten automatisch geschehen. (Bitte beachten Sie, daß bei der Hetzner-Standardinstallation das Forwarding deaktiviert ist. Die Einstellung finden Sie entweder in /etc/sysctl.conf
oder in /etc/sysctl.d/99-hetzner.conf
)
sysctl -w net.ipv4.ip_forward=1
Für IPv6 muss noch analog IPv6 Forwarding aktiviert werden. Dies ist ebenso in der Hetzner-Standardinstallation vorhanden und muss nur noch aktiviert werden.
sysctl -w net.ipv6.conf.all.forwarding=1
Die virtuellen Maschinen können nach einer erfolgreichen Installation unter https://server-IP:8006
verwaltet werden.
Netzwerkkonfiguration Hostsystem Routed
Bei der Verwendung eines Routed-Setups ist es nötig die Route zu einer virtuellen Maschine manuell hinzuzufügen. Außerdem müssen eventuell zugewiesene virtuelle MAC-Adressen entfernt werden. Da eine Host-Route gesetzt wird, sind auch IP-Adressen aus anderen Subnetzen problemlos möglich. Also zum Beispiel:
# /etc/network/interfaces
### Hetzner Online GmbH - installimage
# Loopback device:
auto lo
iface lo inet loopback
# device: enp1s0
auto enp1s0
iface enp1s0 inet static
address <Haupt-IP>
netmask 255.255.255.255
pointopoint <Gateway-IP>
gateway <Gateway-IP>
iface enp1s0 inet6 static
address <Adresse aus dem IPv6-Subnetz> #z.B. 2001:db8::2
netmask 128
gateway fe80::1
up sysctl -p
# für Einzel-IPs
auto vmbr0
iface vmbr0 inet static
address <Haupt-IP>
netmask 255.255.255.255
bridge_ports none
bridge_stp off
bridge_fd 0
up ip route add <erste Zusatz-IP>/32 dev vmbr0
up ip route add <zweite Zusatz-IP>/32 dev vmbr0
iface vmbr0 inet6 static
address <Adresse aus dem IPv6-Subnetz>
#z.B. 2001:db8::3, sollte nicht die selbe wie auf enp1s0/eth0 sein
netmask 64
up ip -6 route add 2001:db8::/64 dev vmbr0
# für ein zusätzliches IPv4 Subnet
auto vmbr1
iface vmbr1 inet static
address <eine nutzbare Subnetz-IP>
netmask <Netzmaske des Subnetzes>
bridge_ports none
bridge_stp off
bridge_fd 0
Netzwerkkonfiguration Gastsystem Routed
Als Gateway wird immer die IP der Bridge im Hostsystems genutzt, d.h. für Einzel-IPs die Haupt-IP, für Subnetze die im Hostsystem konfigurierte IP aus dem Subnetz.
# /etc/network/interfaces
### Beispiel für Einzel-IP aus fremden Subnetz
# Loopback device:
auto lo
iface lo inet loopback
# device: ens18
auto ens18
iface ens18 inet static
address <Zusatz-IP>
netmask 255.255.255.255
pointopoint <Haupt-IP>
gateway <Haupt-IP>
iface ens18 inet6 static
address <Adresse aus dem IPv6-Subnetz> # z.B. 2001:db8::f001
netmask 64
gateway <IPv6-Adresse vmbr0> # z.B. 2001:db8::3
# /etc/network/interfaces
### Beispiel für Subnetz
# Loopback device:
auto lo
iface lo inet loopback
# device: ens18
auto ens18
iface ens18 inet static
address <Nutzbare IP aus dem Subnetz>
netmask <Netzmaske des Subnetzes>
gateway <Im Hostsystem konfigurierte IP aus dem Subnetz>
iface ens18 inet6 static
address <Adresse aus dem IPv6-Subnetz> # z.B. 2001:db8::f001
netmask 64
gateway <IPv6-Adresse vmbr0> # z.B. 2001:db8::3
Netzwerkkonfiguration Hostsystem Bridged
Bei der Verwendung des Bridge-Modus ist es UNBEDINGT nötig vorher virtuelle MAC-Adressen für die Einzel-IPs zu beantragen. Die Konfiguration von Subnetzen ist analog.
# /etc/network/interfaces
### Hetzner Online GmbH - installimage
# Loopback device:
auto lo
iface lo inet loopback
iface enp1s0 inet manual
auto vmbr0
iface vmbr0 inet static
address <Haupt-IP>
hwaddress <aa:bb:cc:dd:ee> # MAC Addresse der NIC, seit proxmox 7.0 nötig
netmask 255.255.255.255
pointopoint <Gateway-IP>
gateway <Gateway-IP>
bridge_ports enp1s0
bridge_stp off
bridge_fd 1
# für ein Subnet
auto vmbr1
iface vmbr1 inet static
address <eine nutzbare Subnetz-IP>
netmask <Netzmaske des Subnetzes>
bridge_ports none
bridge_stp off
bridge_fd 0
Netzwerkkonfiguration Gastsystem Bridged
Als Gateway für Einzeln-IPs wird das Gateway des Hostsystems oder der zugewiesenen IP genutzt. Für Subnetze erfolgt die Konfiguration identisch zum Routed-Setup.
# /etc/network/interfaces
# Loopback device:
auto lo
iface lo inet loopback
# device: ens18
auto ens18
iface ens18 inet static
address <Zusatz-IP>
netmask 255.255.255.255
pointopoint <Gateway der Zusatz-IP>
gateway <Gateway der Zusatz-IP>
Schritt 3 - Sicherheit
Das Webinterface ist durch zwei verschiedene Authentifzierungsmethoden geschützt: Proxmox VE standard authentication
(von Proxmox eigene Authentifizierung) und Linux PAM standard authentication
(Authentifizierung über Konten des Betriebssystems).
Dennoch wären zusätzliche Schutzmaßnahmen empfehlenswert, um sich gegen das Ausnutzen eventueller Sicherheitslücken oder diverser anderen Attacken zu schützen.
Hier würden sich mehrere Möglichkeiten anbieten:
Fazit
Hiermit sollten sie Proxmox als Platform zur Virtualisierung ihres Servers installiert und konfiguriert haben.