Hetzner, Proxmox, OPNSense

     

Nachdem mein Artikel über die Konfiguration einer Router-VM (OPNSense, pfSense) basierend auf Proxmox aus dem Jahr 2017 noch immer durch die Decke geht, ich aber immer mehr Rückfragen zum Artikel erhalte, möchte ich heute eine aktualisierte Version veröffentlichen.

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:

Konfiguration der WAN-Schnittstelle

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:

Konfiguration der LAN-Schnittstelle

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:

Konfiguration der Virtual IPs

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:

Konfiguration des 1:1-NAT

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!