Hetzner, Proxmox, OPNSense
Zielstellung
Am Ende dieser Anleitung ist es unser Ziel, unsere auf dem Proxmox-Server laufenden virtuellen Maschinen mit Hilfe unserer Router-VM abzuschirmen und so die Sicherheit zu erhöhen bzw. auch ein internes Netz aufzubauen, in das man sich per VPN einwählen könnte – somit kann man auch sensible Daten (z.B. ein DMS o.ä.) auf dem Proxmox-Server lagern.
Voraussetzungen
Vor Beginn müssen ein paar Voraussetzungen geschaffen sein:
dedizierter Server bei Hetzner
eine Zusatz-IP für OPNSense-VM mit MAC-Adresse (bestellbar im Hetzner Robot)
lauffähiges Proxmox-System inkl. VM mit installiertem OPNSense-System
ein Subnetz, gerouted auf die OPNSense-VM (via Support-Ticket an Hetzner)
Sind diese Voraussetzungen erfüllt, können wir mit der Konfiguration starten; hier noch eine kurze Übersicht der im Tutorial verwendeten IP-Adressen.
Verwendung | IP-Adresse | Subnetzmaske | Gateway |
---|---|---|---|
Haupt-IP-Adresse des Servers | 135.181.79.34 | 255.255.255.192 | 135.181.79.1 |
IP-Adresse der OPNSense-VM | 135.181.188.126 | 255.255.255.248 | 135.181.188.121 |
Subnetz /29 | 135.181.188.192 / 29 | 255.255.255.248 | 135.181.188.126 |
Da es im alten Artikel öfter vorkam, dass nicht ganz klar war, welche IP-Adresse nun wohin gehört, werde ich in den folgenden Konfigurationen keine Ersetzungen vornehmen, sondern mit realen IP-Adressen arbeiten.
Proxmox-Konfiguration
Die Proxmox-Konfiguration an sich ist relativ simpel. Im Prinzip kann sie sogar über das Webinterface durchgeführt werden, ich bleibe aber bei den Konfigurationsdateien. Hier meine /etc/network/interfaces
:
auto lo
iface lo inet loopback
iface enp35s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 135.181.79.34/32 ## HAUPT-IP DES SERVERS
gateway 135.181.79.1 ## GATEWAY DER HAUPT-IP
bridge-ports enp35s0
bridge-stp off
bridge-fd 0
pointopoint 135.181.79.1 ## GATEWAY DER HAUPT-IP
up sysctl -w net.ipv4.ip_forward=1
up sysctl -w net.ipv4.conf.enp35s0.send_redirects=0
auto vmbr1
iface vmbr1 inet manual
bridge-ports none
bridge-stp off
bridge-fd 0
Wir legen hier also die Bridge mit der Haupt-IP des Servers an, damit die Maschine im Internet erreichbar ist. Des Weiteren legen wir ein neues Interface vmbr1
an, welches für das interne Netzwerk hinter der OPNSense gedacht ist. Hier muss mein Server nicht erreichbar sein und hat deshalb auch keine IP-Adresse auf vmbr1
, hier kann natürlich aber auch eine private IP-Adresse vergeben werden.
Das war es auch schon – ehrlich! Jetzt würde ich die Proxmox-Maschine neustarten, damit die neue Konfiguration sauber geladen wird. Weiter geht’s dann mit der Konfiguration der OPNSense.
OPNSense-Konfiguration
Konfiguration der WAN-/LAN-Interfaces
Die Konfiguration der OPNSense ist im Prinzip relativ selbsterklärend. Wir legen die VM mit zwei Netzwerkschnittstellen im Proxmox an – vmbr0
für das WAN-Interface und vmbr1
für das LAN-Interface.
Über das Webinterface konfigurieren wir zuerst die WAN-Schnittstelle der OPNSense:
Hier müssen letztlich nur die von Hetzner im Robot bereitgestellten Daten für die zusätzliche IP-Adresse eingetragen werden. Die Konfiguration der LAN-Schnittstelle sollte folgendermaßen aussehen:
Natürlich kann hier ein völlig anderes, privates Netz genommen werden (z.B. 192.168.0.0/24).
Damit ist die Konfiguration der LAN- und WAN-Schnittstelle abgeschlossen.
Konfiguration des Subnetzes
Um unserer OPNSense auch unser Subnetz beizubringen, ist es notwendig, die einzelnen IP-Adressen im Menüpunkt Interfaces -> Virtual IPs -> Settings
einzurichten. Hier ist jede einzelne IP-Adresse aus unserem Subnetz zu hinterlegen. Ein Beispiel:
Nun sind alle IP-Adressen des Subnetz der OPNSense bekannt und man kann damit beginnen, eine VM öffentlich erreichbar zu machen.
Konfiguration der virtuellen Maschinen
Die virtuellen Maschinen werden im Proxmox mit nur einer Netzwerk-Schnittstelle angelegt: vmbr1
. Somit erhalten unsere virtuellen Maschinen nur eine interne IP-Adresse (z.B. 10.0.8.20) und sind eigentlich auch nur über diese Adresse erreichbar. Möchte man eine virtuelle Maschine nun öffentlich erreichen (z.B. als Webserver) muss man ein NAT einrichten.
Was ist ein NAT?
Die Abkürzung NAT steht für Network Address Translation – zu deutsch: Netzwerkadressübersetzung. Kurz gesagt ist es ein Verfahren, dass in Routern (wie unserer OPNSense) eingesetzt wird, um lokale Netzwerke mit dem Internet verbinden. Man übersetzt quasi die interne IP-Adresse in eine öffentliche IP-Adresse.
1:1 NAT
Damit wir nicht jeden Port händisch weiterleiten müssen (wir geben ja sowieso nur bestimmte Ports in der Firewall frei), nutzen wir für dieses Tutorial ein 1:1 NAT. Über den Menüpunkt Firewall -> NAT -> One-to-One
legen wir unsere erste NAT-Regel an:
Nun ist, sofern entsprechende Firewall-Regeln gelten – die virtuelle Maschine mit der internen IP 10.0.8.30
auch auf der externen IP 135.181.188.199
erreichbar. Auf die Konfiguration der entsprechenden Firewall-Regeln möchte ich hier nicht weiter eingehen, das sollte sitzen, wenn man diese Anleitung durcharbeitet.
Falls ihr IPv6 ebenfalls nutzen wollt, schaut doch mal in diesen Artikel.
Wir haben es geschafft und unser Proxmox-/OPNSense-Setup erfolgreich zum Laufen gebracht! Gerne beantworte ich Rückfragen zum Artikel, nehme Hinweise entgegen und freue mich natürlich auch über jedes Lob.
Bitte habt Verständnis, dass ich tiefergehende Fragen und Probleme nicht kostenfrei in den Kommentaren oder per Mail beantworten kann – gerne übernehme ich die Installation und Konfiguration eurer Server zu einem günstigen Preis!