Vor einigen Tagen habe ich bereits darüber geschrieben, warum ich in meinem Homelab auf ein eigenes DNAT-Setup setze. Statt jede virtuelle Maschine direkt mit einer öffentlichen IP-Adresse zu betreiben, laufen meine Dienste in einem privaten Netzwerk und werden nur über gezielte Portweiterleitungen erreichbar gemacht.
Inzwischen ist aus diesem kleinen Hilfsskript ein vollständiges Open-Source-Projekt geworden.
Warum überhaupt DNAT?
Viele Homelabs oder kleinere Server verfügen lediglich über eine einzige öffentliche IPv4-Adresse. Gleichzeitig sollen aber mehrere Dienste aus dem Internet erreichbar sein – beispielsweise:
- Websites
- Reverse Proxys
- Game-Server
- Mailserver
- APIs
- Docker-Anwendungen
Genau hier kommt Destination NAT (DNAT) ins Spiel.
DNAT sorgt dafür, dass eingehende Verbindungen anhand des Ports an die richtige virtuelle Maschine oder den richtigen Container weitergeleitet werden.
Ein einfaches Beispiel:
- Port 80 → Webserver
- Port 443 → Reverse Proxy
- Port 25565 → Minecraft-Server
- Port 2222 → interne SSH-VM
Nach außen existiert also nur eine öffentliche IP-Adresse, intern können die Dienste jedoch sauber voneinander getrennt betrieben werden.
Warum ich dafür ein eigenes Skript geschrieben habe
Anfangs habe ich sämtliche iptables-Regeln von Hand gepflegt. Das funktionierte zwar, wurde mit der Zeit aber immer unübersichtlicher.
Jeder neue Dienst bedeutete weitere NAT-Regeln, Forward-Regeln und Anpassungen an bestehenden Chains. Nach einigen Änderungen war schnell der Punkt erreicht, an dem ich mir dachte:
“Das muss sich doch automatisieren lassen.”
Also entstand ein kleines Bash-Skript, das die komplette Grundkonfiguration übernimmt.
Was das Skript automatisch erledigt
Der Proxmox NAT Router richtet in wenigen Sekunden ein vollständiges NAT-Setup ein und kümmert sich unter anderem um:
- Aktivierung von IPv4-Forwarding
- Erstellung eigener
iptables-Chains - Einbindung der Chains an den richtigen Stellen
- MASQUERADE für ausgehenden Verkehr
- einfache DNAT-Portweiterleitungen
- automatische Speicherung der Firewall-Regeln
- sicheres erneutes Ausführen ohne doppelte Regeln
Dadurch bleibt die Firewall deutlich übersichtlicher als bei einer rein manuellen Konfiguration.
Neu: Hairpin DNAT
Mit der aktuellen Version unterstützt das Skript außerdem Hairpin DNAT, auch als NAT Loopback bekannt.
Dadurch können Geräte innerhalb des eigenen Netzwerks öffentliche Domains oder die öffentliche IP-Adresse verwenden und landen trotzdem beim internen Dienst.
Das klingt zunächst unspektakulär, macht im Alltag aber einen großen Unterschied.
Ohne Hairpin DNAT funktionieren viele Dienste intern nur über ihre private IP-Adresse. Mit aktiviertem Hairpin DNAT können dieselben Domains verwendet werden wie von außen – ganz ohne zusätzliche DNS-Tricks oder Sonderkonfigurationen.
Gerade bei Reverse Proxys oder selbst gehosteten Webdiensten sorgt das für ein deutlich konsistenteres Setup.
Warum ich das Projekt veröffentlicht habe
Eigentlich war das Skript nie für die Öffentlichkeit gedacht.
Es entstand aus meiner eigenen Infrastruktur heraus und wurde über viele Monate immer wieder erweitert und verbessert. Irgendwann wurde mir jedoch klar, dass viele andere Proxmox-Nutzer vor denselben Herausforderungen stehen.
Statt das Skript ausschließlich für mich zu behalten, habe ich mich deshalb entschieden, es unter der MIT-Lizenz auf GitHub zu veröffentlichen.
Vielleicht spart es jemandem genau die Zeit, die ich damals in die Entwicklung investiert habe.
Das Repository
Das Repository enthält nicht nur das eigentliche Skript, sondern auch eine ausführliche Dokumentation.
Dazu gehören unter anderem:
- Installationsanleitung
- Netzwerkdiagramm
- Konfigurationsbeispiele
- Beispiele für Portweiterleitungen
- Hinweise zur Proxmox-Firewall
- Erklärung der einzelnen Funktionen
Das Projekt findet ihr hier:
GitHub:
https://github.com/eurosatofficial/proxmox-nat-router
Feedback, Verbesserungsvorschläge oder Pull Requests sind jederzeit willkommen.
Fazit
Open Source lebt davon, Lösungen zu teilen.
Mein Proxmox NAT Router ist kein riesiges Framework und ersetzt auch keine dedizierte Firewall-Appliance. Das war nie das Ziel.
Stattdessen soll das Projekt eine einfache, nachvollziehbare und leicht anpassbare Lösung für alle sein, die ihren Proxmox-Host als NAT-Router nutzen möchten und eine saubere Möglichkeit suchen, Portweiterleitungen über iptables zu verwalten.
Wenn euch das Skript weiterhilft, freue ich mich natürlich über einen ⭐ auf GitHub oder euer Feedback. Vielleicht entwickelt sich daraus mit der Zeit ein Projekt, das auch anderen Proxmox-Nutzern den Einstieg erleichtert.


Schreibe einen Kommentar