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.

VerwendungIP-AdresseSubnetzmaskeGateway
Haupt-IP-Adresse des Servers135.181.79.34255.255.255.192135.181.79.1
IP-Adresse der OPNSense-VM135.181.188.126255.255.255.248135.181.188.121
Subnetz /29135.181.188.192 / 29255.255.255.248135.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!

23 Gedanken zu „Hetzner, Proxmox, OPNSense“

  1. Hi Dominik,

    super Artikel! Bin darauf gestoßen da ich selbst so ein Setup bereits länger laufen habe.
    Es gibt jedoch eine Sache die ich bisher nicht optimal gelöst bekommen habe:
    Geclusterte OpnSense im HA.

    Hast du das bereits laufen? Wenn du Lust hast, kontaktier mich gerne, können uns sicherlich austauschen. Ich hab auch direkt innerhalb des Proxmox Clusters bei Hetzner mehrere K8S Cluster laufen, rennt super.

    Viele Grüße

    Antworten
  2. Hallo Dominik,

    super beschriebene Anleitung danke dafür!

    Beim Start des vmbr0 interface bekomme ich die Fehlermeldung:
    sysctl: cannot stat /proc/sys/net/ipv4/conf/eth0/send_redirects: No such file or directory

    Ich habe bei mir auch kein eth0 interface, sollte hier enp35s0 stehen?

    Antworten
  3. Hallo Dominic,

    vielen Dank für deine Anleitungen.

    Ich habe eine Frage zur Netzwerkkonfiguration.
    In vielen Anleitungen zum Thema Proxmox wird immer zwischen Routed- und Bridged-Setup unterschieden. Für mich sieht die Konfigdatei nach einem Mix daraus aus (vmbr0 wird gebridged + IP Forwarding). Welche Auswirkungen entstehen dadurch? Ich muss an dieser Stelle auch zugeben, dass ich noch nicht ganz verstanden habe, warum Proxmox mit den vmbr-Bridges arbeitet und wie das ganze läuft.

    Und noch eine allgemeine Frage: Bin ich der einzige der anscheinend nicht in der Lage ist, mittels iptables zu natten? Ich habe eine zusätzliche IP-Adresse, und mein Problem ist u. a., das, schätzungsweise durch mein Routed-Setup, mein HTTPS-Server, den ich auf dem Proxmox Host zu einem Container nat’te, auch unter der zusätzlichen IP-Adresse verfügbar ist.

    Freundliche Grüße,
    Johann

    Antworten
  4. Hallo Dominic.

    Danke für die tolle Anleitung, habe schon einige Anleitungen im Internet gefunden, aber keine ist so ausführlich und gut beschrieben.

    Eine Frage habe ich noch zum Punkt
    ein Subnetz, gerouted auf die OPNSense-VM (via Support-Ticket an Hetzner)

    Wenn ich zB. schon ein Subnetz /29 von Hetzner bestellt habe muss ich dieses dann via Support-Ticket an Hetzner routen zur zusätzlichen öffentlich IP-Adresse (135.181.188.126) verstehe ich das richtig?

    Dankeschön im Voraus & mach bitte weitere so tolle Beiträge zu Proxmox!

    LG Chris

    Antworten
    • Hallo Chris,

      danke für deine lieben Worte, freut mich sehr, dass meine Anleitung dir hilft!

      Zu deiner Frage: du musst das Subnetz durch ein Support-Ticket bei Hetzner auf die öffentliche Zusatz-IP deiner OPNSense routen lassen.

      Beste Grüße und viel Erfolg,
      Dominic

      Antworten
      • Moin auch von mir! Zur Info: Das Routing zus. gebuchter Subnetze ist auch selber im Robot konfigurierbar (analog zur Vorgehensweise des Setzens einer MAC Adresse für eine Einzel-IP). Hier steht für die Ziel-IP ein Dropdown zur Verfügung, welches neben der Haupt-IP auch etwaige öffentliche Zusatz-IPs enthält, sofern diese vorhanden sind).

        Antworten
      • Hallo Dominic,

        bitteschön gerne, so eine tolle Arbeit muss doch gelobt werden. 🙂

        Super perfekt das habe ich jetzt gemacht.
        Noch eine Frage wie komm ich denn auf das Webinterface von der OPNSense? Erreiche ich die dann über die zusätzliche Öffentliche IP-Adresse? Oder über eine IP-Adresse im Subnetz /29?

        Danke im Voraus.
        LG Chris

        Antworten
        • Hallo Chris,

          über die öffentliche IP kommst du in der Standardkonfiguration der OPNSense gar nicht ans Webinterface; das würde ich auch aus Sicherheitsgründen definitiv nicht empfehlen…

          Solltest du dennoch die Firewall entsprechend konfigurieren wollen, kommst du über die zusätzliche IP-Adresse. Ich würde jedoch z.B. über ein VPN (kann die OPNSense von Haus aus) auf das interne Interface der OPNSense zugreifen – da sind auch dann keine Firewallregeln für den Zugriff auf’s Webinterface nötig.

          Warme Grüße aus Bad Kreuznach,
          Dominic

          Antworten
          • Hallo Dominic,

            ok verstehe man kommt also nur von LAN auf die OPNSense was jetzt auch Sicherheitstechnisch Sinn ergibt. 😉

            Ich hab mir jetzt eine VM (Win10) erstellt und die Netzwerkkarte mit vmbr1 hinzugefügt. Wollte dann von dort aus über den Webbrowser auf die OPNSense zugreifen, leider funktioniert das Netzwerk aber auf der VM (Win10) nicht. Schön langsam gebe ich es auf 🙁

            Denke ich komme hier nochmals zwecks Support auf dich zu. Hast du eine Preisübersicht zwecks Support-Stunden?

            Dankeschön

            LG aus dem hitzigen Wien 😉
            Chris

  5. Hi Dominic – thanks for this great article. One addition: on the WAN side you also need to input the separate MAC address in OPNsense. The MAC address can be requested / found in Hetzner Robot

    Antworten
  6. Hallo,

    erstmal vielen Dank für die Anleitung. Ich habe heute Proxmox PVE7 auf einem Hetzner Server geladen. Um Zugang zur Proxmox GUI zu erhalten muss noch die MAC Adresse eingegeben werden. Das sieht dann für die vmbr0 Bridge so aus:

    auto vmbr0
    iface vmbr0 inet static
    address 176.x.xx.144/27
    hwaddress b4:2e:99:ca:59:55 –> kann man abfragen über „ip link show“
    gateway 176.x.xx.129
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0
    pointopoint 176.x.xx.129

    up sysctl -w net.ipv4.ip_forward=1
    up sysctl -w net.ipv4.conf.eno1.send_redirects=0

    Grüße
    Rafael

    Antworten
  7. Hallo Dominic,

    ziemlich cooler Artikel – hat alles reibunglos funktioniert. Danke dir für deine hervorragende Arbeit. Wie sieht es aus, wenn ich ohne ein Subnetz arbeiten möchte – also die Dienste der VMs über die IP des Gateway erreichbar machen möchte?

    Beispiel: Web, Mail, DB, Gameserver, etc.

    Wäre das noch etwas, was man in einem Artikel anschneiden könnte bzw. realisierbar ist? Gern auch per Mail.

    Grüße

    Antworten
    • Hallo!

      Bitte hab Verständnis dafür, dass ich die hier angebotenen Anleitungen tatsächlich nur nach „Lust und Laune“ verfasse und zusammentrage.

      Ich verdiene mit solchen Arbeiten meinen Lebensunterhalt und kann daher öffentlich eher nicht auf individuelle Anforderungen eingehen.

      Bis dann,
      Dominic

      Antworten
  8. Hallo Dominic,

    super Anleitung! Leider wird das Szenario durch die Preisverdopplung für IPv4-Adressen seitens Hetzner spätestens Anfang 2022 ziemlich teuer. Zumindest für eine private „Spielumgebung“.

    Hab aber nichts gegen Hetzner, bin dort seit 10 Jahren Kunde und letztlich geben die ja auch nur die Kosten weiter, die sie durch die IPv4-Knappheit haben…

    Gruß
    Sebastian

    Antworten
  9. Hallo,

    super Artikel, vielen Dank dafür. Kannst du etwas dazu sagen, wie ein zweiter Proxmox Server in Hetzner eingerichtet werden muss? Die Interface Konfiguration ist mir nicht ganz klar dann bei Hetzner.

    Viele Grüße
    Benjamin

    Antworten
  10. Ich glaube, ich steh gerade ein bißchen auf dem Schlauch… wofür die zusätzliche IP-Adresse und wofür das zusätzliche Subnet?

    Oder ist das nur, weil es so natürlich „schöner“ ist, aus Security-Gesichtspunkten aber nicht nötig (sondern mittles NAT und/oder reverse-proxy basierend auf dem Ziel-Port u. a. abbildbar)?

    Wie auch immer, vielen Dank für die Anleitung! Hilft mir schon alleine deshalb, weil es zeigt, dass ich nicht der einzige bin, der die Idee hat (und vermutlich auch nicht der einzige, dem die Firewall-Funktionen von Proxmox nicht ganz schmecken) und ich alleine deshalb ein gutes Stück näher dran bin, die „interne“ (also zwischen linker und rechter Gehirnhälfte) Debatte zwischen VM-Router „ja oder nein“ abzuschließen.

    Antworten
  11. Hallo,

    da die Hetzner IPs mittlerweile sehr teuer sind, kann ich die Frage meines Vorredners nur unterstützen. Geht das ganze auch mit einer IP-Adresse, also ohne zusätzliche IP?

    Gruss,
    Micha

    Antworten

Schreibe einen Kommentar