Kaum ein Problem kostet Einsteiger:innen so viele Nerven wie dieses: Der Dienst läuft, die Portfreigabe ist eingerichtet – und von außen kommt trotzdem nichts an. Die gute Nachricht: Mit einer systematischen Prüfung findest du den Fehler fast immer. Der Trick ist, von innen nach außen vorzugehen und jede Stufe einzeln zu testen.

Die Beispiele gehen vom Aufbau dieser Seite aus: Server 192.168.50.30, dahinter der Flint 2 mit OpenWrt, davor die Fritzbox, Domain meinhomelab.duckdns.org, Dienst auf Port 443.

Internet → Fritzbox → Flint 2 (OpenWrt) → Server → Dienst

Stufe 1: Läuft der Dienst überhaupt?

Direkt auf dem Server:

sudo ss -tulpn | grep 443
curl -kI https://localhost
  • ss zeigt, ob überhaupt ein Programm auf dem Port lauscht
  • Steht dort 127.0.0.1:443, lauscht der Dienst nur lokal – von anderen Geräten ist er dann nie erreichbar. Bei Docker: in der ports-Angabe 127.0.0.1: entfernen (oder bewusst so lassen, wenn nur der Reverse Proxy zugreifen soll)
  • Bei Docker zusätzlich: docker compose ps – läuft der Container, oder startet er ständig neu? Dann docker compose logs

Stufe 2: Aus dem Heimnetz erreichbar?

Von einem anderen Gerät im selben Netz (z. B. Laptop am Flint 2):

curl -kI https://192.168.50.30

Unter Windows alternativ in der PowerShell:

Test-NetConnection 192.168.50.30 -Port 443

Klappt das nicht, aber Stufe 1 schon: Eine Firewall auf dem Server blockiert. Mit sudo ufw status bzw. sudo nft list ruleset prüfen.

Stufe 3: Portfreigabe im inneren Router (OpenWrt)

In LuCI unter Network → Firewall → Port Forwards prüfen:

  • Protokoll richtig? (TCP für Webdienste, UDP für WireGuard)
  • Zeigt die Regel auf die richtige, feste IP des Servers?
  • Ist die Regel aktiviert und mit Save & Apply übernommen?

Hat der Server seine IP per DHCP bekommen und inzwischen eine andere? Dann läuft die Freigabe ins Leere – deshalb immer eine feste Zuweisung (Static Lease) einrichten.

Stufe 4: Portfreigabe im äußeren Router (Fritzbox)

Bei Double NAT braucht es zwei Freigaben – das ist der häufigste Fehler überhaupt:

  • Fritzbox: Freigabe an den Flint 2 (nicht an den Server – den kennt die Fritzbox gar nicht)
  • Hat der Flint 2 in der Fritzbox eine feste IP? Sonst zeigt die Freigabe irgendwann auf nichts

Stufe 5: Hast du überhaupt eine öffentliche IPv4?

Das ist die Stufe, an der die meisten ohne es zu wissen scheitern.

  1. In der Fritzbox unter Übersicht die IPv4-Adresse der Internetverbindung ablesen
  2. Mit einer Seite wie "wieistmeineip" die öffentliche Adresse vergleichen
Beobachtung Bedeutung
Beide Adressen gleich alles gut, echte öffentliche IPv4
Fritzbox zeigt 100.64.x.x bis 100.127.x.x Carrier-Grade NAT – von außen kommt nichts an
Fritzbox zeigt "DS-Lite" nur IPv6 von außen erreichbar, IPv4 geteilt
Adressen unterschiedlich vermutlich noch ein Router davor (z. B. Modem mit Routerfunktion)

Auswege: beim Anbieter eine echte IPv4 anfragen, über IPv6 arbeiten oder einen Dienst wie Tailscale oder Cloudflare Tunnel nutzen – siehe Fernzugriff im Vergleich.

Stufe 6: Zeigt die Domain auf die richtige Adresse?

nslookup meinhomelab.duckdns.org

Die Antwort muss deine öffentliche IP aus Stufe 5 sein. Wenn nicht: Läuft das DynDNS-Update? Siehe DuckDNS-Anleitung. Bei Variante A auf OpenWrt ist "IP address source: URL" bei Double NAT Pflicht.

Stufe 7: Richtig von außen testen

  • Handy-WLAN ausschalten und über mobile Daten testen
  • Klappt es von außen, aber nicht von zu Hause über die Domain, fehlt NAT-Loopback: Der Router kann "sich selbst" nicht über die öffentliche Adresse erreichen. Lösung: In Pi-hole unter Local DNS Records die Domain direkt auf die Server-IP zeigen lassen.

Stufe 8: Seltene Sonderfälle

  • Port 80 oder 25 gesperrt: Manche Anbieter blockieren bestimmte Ports. Port 443 ist meist offen.
  • IPv6-Falle: Die Domain hat einen IPv6-Eintrag (AAAA), aber für IPv6 gibt es keine Freigabe – manche Geräte versuchen dann IPv6 und scheitern.
  • Zertifikatsfehler statt Timeout: Dann kommt die Verbindung an! Das Problem liegt beim Reverse Proxy, nicht am Netzwerk – siehe Caddy-Anleitung.

Spickzettel: Symptom → Ursache

Symptom Wahrscheinliche Ursache
Timeout überall, auch im Heimnetz Dienst läuft nicht / lauscht nur auf 127.0.0.1 / Server-Firewall
Im Heimnetz ok, von außen Timeout Portfreigabe fehlt (oft die zweite bei Double NAT) oder CGNAT/DS-Lite
Von außen ok, von zu Hause per Domain nicht NAT-Loopback
Klappte gestern noch IP des Servers oder des Flint 2 hat sich geändert, DynDNS-Update hängt
"Connection refused" Verbindung kommt an, aber auf dem Port lauscht nichts
Zertifikatsfehler Netzwerk ok, Reverse Proxy oder Domain falsch konfiguriert