Warum kommt bei einer Portfreigabe, die zu hundert Prozent richtig ist, trotzdem nichts an? Port stimmt, Ziel stimmt, der Dienst antwortet im Heimnetz, und von draußen: Stille. Ganz oben in r/selfhosted stand diese Woche ein Beitrag mit dem Titel „Ich habe zwei Stunden an einem Reverse Proxy gesessen, nur um zu lernen, was CGNAT ist". Die zwei Stunden kannst du dir sparen. Der Fehler sitzt nicht bei dir, sondern eine Etage höher, beim Anbieter, und man sieht ihn an einer einzigen Zeile in der FritzBox.
Dieser Beitrag ist ein Grundlagen-Stück: was CGNAT und DS-Lite sind, wie du in zwei Minuten prüfst, ob es dich betrifft, und welche drei Wege nach draußen übrig bleiben, wenn die Portfreigabe nicht mehr geht. Die Installation eines dieser Wege, Tailscale, bekommt einen eigenen Beitrag.

Was CGNAT ist, und warum die Portfreigabe ins Leere läuft
Deine FritzBox macht seit jeher einen Trick: Alle Geräte im Haus teilen sich eine einzige Adresse nach draußen. Das ist NAT, und es funktioniert wie ein Mehrfamilienhaus mit einer Hausnummer. Post kommt an der Haustür an, und der Router weiß, in welche Wohnung sie gehört, weil die Wohnung vorher selbst etwas bestellt hat. Eine Portfreigabe ist das Klingelschild für Besucher, die niemand bestellt hat: „Port 8080 bitte in Wohnung 20."
CGNAT heißt Carrier-Grade NAT, und es ist genau dasselbe noch einmal, nur beim Anbieter. Deine FritzBox bekommt vom Anbieter keine öffentliche Adresse mehr, sondern selbst nur eine aus einem Zwischenbereich, und erst ein Gerät im Netz des Anbieters tauscht die gegen eine öffentliche, die sich viele Kunden teilen. Im Bild: Deine Hausnummer gilt nur noch in der Straße, und die ganze Straße hat beim Postamt eine gemeinsame Nummer. Von draußen kann niemand mehr „Haus 20" adressieren, weil das Postamt gar nicht weiß, welches Haus gemeint ist. Dein Klingelschild hängt also richtig, nur kommt der Besucher nie bis zur Haustür.
Der Grund ist Knappheit. IPv4 hat rund vier Milliarden Adressen, und die sind vergeben. Die IETF hat für genau diesen Zwischenbereich 2012 im RFC 6598 den Block 100.64.0.0/10 reserviert, damit Anbieter ihre Kunden mehrfach hinter einer Adresse stapeln können, bis IPv6 überall ist. Vierzehn Jahre später ist IPv6 bei dir zu Hause vermutlich längst da, und die Kabelanbieter stapeln trotzdem weiter. Der Nachteil steht nüchtern im Wikipedia-Artikel: Hinter einem CGN lässt sich in der Regel kein Dienst anbieten, der unter einer IPv4-Adresse erreichbar ist.
In Deutschland begegnet dir das meistens unter dem Namen DS-Lite. AVM erklärt es in der Wissensdatenbank so: Die FritzBox verpackt alle IPv4-Daten in IPv6-Pakete und schickt sie durch die IPv6-Verbindung zum Anbieter, wo ein Server sie auspackt und weiterleitet. Das ist das Tunnel-Stück. Die öffentliche IPv4-Adresse, die dieser Server dann benutzt, teilen sich wieder viele Kunden. Das ist das CGNAT-Stück. Für Surfen, Streaming und Updates merkst du davon nichts. AVM sagt den Satz, um den es hier geht, ohne Umschweife: Ein Zugriff aus dem Internet auf die FritzBox oder Geräte im Heimnetz über IPv4 ist nicht möglich, weil die FritzBox keine öffentliche IPv4-Adresse bekommt.
Was du brauchst
- Zugang zur FritzBox-Oberfläche. Im Browser
http://fritz.boxöffnen; kommt die Anmeldeseite, passt es. Bei einem anderen Router heißt die Seite anders, aber die Zeile, die du suchst, gibt es überall: die WAN- oder Internet-Adresse. - Ein Gerät im Heimnetz mit Terminal, nur für die Gegenprobe über die Shell. Linux, macOS oder Windows mit
curl; prüfen mitcurl --version. - Keine Hardware, keine Installation. Dieser Beitrag endet mit einer Entscheidung, nicht mit einem Container.
- FritzBox-Oberfläche:
http://fritz.box - Heimnetz:
192.168.178.0/24 - Server im Heimnetz, auf dem ein Dienst läuft:
192.168.178.20, Port8080 - CGNAT-Bereich laut RFC 6598:
100.64.0.0bis100.127.255.255 - DS-Lite-Tunnel-Adressen laut AVM:
192.0.0.0bis192.0.0.7
Schritt 1: CGNAT erkennen, an einer Zeile im Online-Monitor
AVM hat dafür eine eigene Seite in der Wissensdatenbank, „Erreichbarkeit der FRITZ!Box im Internet prüfen", und der ganze Test ist ein Blick auf zwei Zeilen.
In der FritzBox-Oberfläche links Internet, dann Online-Monitor (Stand FRITZ!OS 8; bei aktuellen Versionen liegen die Angaben im Reiter Verbindungsdetails). Dort stehen die Zeilen Internet, IPv4 und Internet, IPv6 mit den Adressen, die deine FritzBox vom Anbieter bekommen hat. Die IPv4-Adresse notieren.
Jetzt die Adresse einordnen. AVM nennt in der Wissensdatenbank fünf Bereiche, bei denen die FritzBox über IPv4 nicht aus dem Internet erreichbar ist:
10.0.0.0bis10.255.255.255100.64.0.0bis100.127.255.255, von AVM ausdrücklich als Carrier-Grade NAT bezeichnet172.16.0.0bis172.31.255.255192.0.0.0bis192.0.0.7, der DS-Lite-Tunnel192.168.0.0bis192.168.255.255
Drei Fälle, und einer davon ist deiner:
- Die IPv4-Adresse liegt außerhalb aller fünf Bereiche. Du hast eine öffentliche Adresse, Portfreigaben funktionieren, und das Problem aus dem Einstieg hat eine andere Ursache. Dann lies bei wg-easy unter „Wo es klemmt" weiter oder prüfe die Firewall auf dem Server.
- Die Adresse beginnt mit 100.64 bis 100.127. Das ist CGNAT. Dein Router hat nur die Straßennummer, nicht die Hausnummer.
- Bei IPv4 steht eine 192.0.0.x, nur eine IPv6-Adresse oder gar nichts. Das ist DS-Lite: IPv4 läuft durch den Tunnel, und am anderen Ende teilst du dir die Adresse. Für Portfreigaben dasselbe Ergebnis wie CGNAT.
Die Gegenprobe von der anderen Seite geht über die Shell. Du fragst einen Dienst im Internet, mit welcher Adresse du bei ihm ankommst, und vergleichst sie mit der Zeile im Online-Monitor. ipify ist dafür gedacht und liefert mit api.ipify.org nur IPv4, mit api6.ipify.org nur IPv6.
curl -4 -s https://api.ipify.org; echo
curl -6 -s https://api6.ipify.org; echoDie erste Zeile ist deine öffentliche IPv4-Adresse, so wie das Internet sie sieht. Steht im Online-Monitor dieselbe Adresse, bist du direkt am Netz. Steht dort eine andere, nämlich eine aus den fünf Bereichen, sitzt zwischen dir und dem Internet noch ein NAT, und das ist der Beweis. Die zweite Zeile zeigt, ob du IPv6 hast; ohne IPv6 bricht sie mit einer Fehlermeldung ab, und das darf sie, denn ipify sagt selbst, dass die IPv6-Adresse dann schlicht fehlt. Eine typische Ausgabe an einem Kabelanschluss sieht so aus:
89.xx.xx.xx
2a02:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxxDie erste Adresse ist öffentlich, aber sie gehört nicht dir allein. Die zweite gehört dir, und das ist der Hebel für den zweiten Ausweg. Vorher der einfachste.
Ausweg 1: Beim Anbieter nach Dual Stack fragen
Dual Stack heißt: IPv6 plus eine echte, eigene IPv4-Adresse. Bei DSL und vielen Glasfaseranschlüssen ist das noch Standard; bei Kabel ist es die Ausnahme geworden. AVM formuliert es vorsichtig: Anbieter bieten in der Regel ihren Geschäftskunden Zusatzverträge an, mit denen der Anschluss über alle Ports per IPv4 und IPv6 erreichbar ist. Übersetzt: Privatkunden bekommen es, wenn überhaupt, auf Nachfrage.
Wie die Nachfrage ausgeht, hängt am Anbieter, und die Foren geben ein ehrliches Bild. Im inoffiziellen Vodafone-Kabel-Forum heißt es schon 2018, Vodafone sei bei IPv4 für Privatkunden „sehr restriktiv" und mache im Grunde keine Ausnahmen mehr. In der o2-Community antwortete eine Moderatorin im Mai 2025 auf die Bitte um Dual Stack am Kabelanschluss, dass es dort nicht verfügbar sei; wer zwingend eine öffentliche IPv4 brauche, könne alternativ VDSL bekommen. Einmal anrufen kostet trotzdem nichts, und wer einen Tarifwechsel oder Umzug vor sich hat, fragt vorher nach Dual Stack. Rechne mit einem Nein, und freu dich über ein Ja.
Eine Randnotiz aus der AVM-Doku: Mit dem Port Control Protocol (PCP) kann die FritzBox beim Anbieter Portfreigaben anfordern und so die fehlende IPv4-Adresse umgehen. Das klingt nach der Lösung, hängt aber daran, ob der Anbieter PCP überhaupt anbietet, und laut AVM-Tabelle gilt es selbst dann nur für einzelne Ports. Ich habe keinen deutschen Privatkundentarif gefunden, bei dem das verlässlich läuft; wenn du einen kennst, steht die Frage unten.
Ausweg 2: Die IPv6-Tür öffnen
Der zweite Weg nutzt das, was du schon hast. Bei DS-Lite bekommt dein Anschluss ein ganzes IPv6-Netz, und jedes Gerät darin hat eine eigene, weltweit eindeutige Adresse. Es gibt kein NAT, das sich etwas merken müsste, und deshalb auch keine Hausnummer, die fehlen könnte. AVM: Ein Zugriff aus dem Internet über IPv6 ist an DS-Lite-Anschlüssen möglich, und das gilt auch für MyFRITZ!, das als Voraussetzung nur eine IPv6-Adresse oder eine öffentliche IPv4-Adresse verlangt.
Was im Weg steht, ist nicht der Anbieter, sondern die Firewall der FritzBox, und das ist gut so. Sie blockt eingehende IPv6-Verbindungen zu deinen Geräten standardmäßig, sonst stünde jeder Drucker im Haus offen im Internet. Du musst also nichts umleiten, nur die Tür für genau einen Port und genau ein Gerät aufmachen. AVM nennt das IPv6-Freigabe und hat eine eigene Anleitung dafür; die Voraussetzungen sind, dass die FritzBox vom Anbieter eine IPv6-Adresse bekommt (Schritt 1, zweite Zeile) und dass der Dienst auf dem Server IPv6 spricht.
In der FritzBox-Oberfläche Internet, dann Freigaben, Reiter Portfreigaben, Schaltfläche Gerät für Freigaben hinzufügen (Stand FRITZ!OS 8). Das Gerät auswählen, hier den Server 192.168.178.20, dann Neue Freigabe, dort die IPv6-Freigabe mit Protokoll TCP und Port 8080 anlegen und mit OK übernehmen. Die genaue Feldfolge je nach FRITZ!OS-Version steht in der verlinkten AVM-Anleitung.
Ob es geklappt hat, prüfst du nicht vom Sofa aus, sondern von draußen: Handy ins Mobilfunknetz, WLAN aus, und die IPv6-Adresse des Servers mit Port im Browser aufrufen, in eckigen Klammern, etwa http://[2a02:…:20]:8080. Kommt der Dienst, steht die Tür offen. Die Adresse des Servers zeigt dir auf dem Server selbst dieser Befehl; du brauchst die Zeile mit scope global, nicht die mit fe80.
ip -6 addr show scope globalDer Haken dieses Wegs ist die Gegenseite. Durch die IPv6-Tür kommt nur, wer selbst IPv6 hat. Dein Handy im Mobilfunk meistens ja, das Hotel-WLAN im Urlaub oft nicht, die Firma mit dem alten Proxy fast nie. Für dich und deine Geräte ist das meist in Ordnung; für Freunde, denen du einen Link schickst, ist es Glückssache. Und die Adresse muss sich merken lassen: Ein MyFRITZ!-Name oder ein DynDNS-Dienst mit IPv6-Unterstützung sorgt dafür, dass der Name der Adresse folgt, wenn der Anbieter sie nachts wechselt.
Ausweg 3: Ein Tunnel von innen nach außen
Der dritte Weg dreht die Richtung um, und das ist der Gedanke, der CGNAT komplett entschärft. Eine Portfreigabe wartet darauf, dass jemand von draußen anklopft, und genau das scheitert am Anbieter-NAT. Eine Verbindung, die dein Server selbst nach draußen aufbaut, geht dagegen durch jedes NAT der Welt, denn so funktioniert jeder Browser, jedes Update, jeder Stream. Wenn der Server die Leitung einmal von innen aufgebaut hat, kann über dieselbe Leitung Verkehr in beide Richtungen fließen. Das Mehrfamilienhaus bestellt sich den Besuch selbst, und der Router lässt die Antwort durch, weil er sie erwartet.
Zwei Werkzeuge machen daraus etwas, das auch Einsteiger einrichten können, und sie lösen zwei verschiedene Aufgaben.
Tailscale, für dich und deine Leute. Tailscale baut ein privates Netz über WireGuard zwischen deinen Geräten: Server, Laptop, Handy, egal wo sie hängen. Der Tailscale-Blog beschreibt den Mechanismus offen und lesenswert: Beide Seiten ermitteln über STUN, mit welcher Adresse und welchem Port sie draußen sichtbar sind, dann senden sie gleichzeitig Pakete aneinander, bis die beiden Firewalls dazwischen die Verbindung für erwartet halten, und wenn das nicht klappt, läuft der Verkehr verschlüsselt über ein Relais, das Tailscale DERP nennt. Der Blog sagt dazu auch, warum die klassischen Hilfsmittel wie UPnP hinter CGNAT nichts bringen: Sie reden nur mit dem nächsten NAT, nicht mit dem beim Anbieter. Der Personal-Plan ist laut Preisseite kostenlos, mit bis zu sechs Nutzern und unbegrenzt vielen Geräten, und ein Subnet Router auf einem Gerät im Heimnetz reicht, damit du auch Drucker und NAS erreichst, auf denen kein Tailscale läuft. Was du dafür in Kauf nimmst: Die Koordination, also wer wen kennt und welche Schlüssel gelten, läuft über Tailscales Server. Die Clients sind Open Source, der Koordinator nicht; wer das nicht will, hostet mit Headscale einen eigenen, und das ist dann wieder ein Projekt. Eine trockene Fußnote: Tailscale vergibt seine internen Adressen ausgerechnet aus 100.64.0.0/10, dem CGNAT-Bereich, mit der Begründung, dass die sich nicht mit Heimnetzen beißen. Das Werkzeug gegen CGNAT benutzt die Adressen von CGNAT.
Cloudflare Tunnel, für eine öffentliche Website. Soll etwas ohne App und ohne Anmeldung für alle erreichbar sein, etwa ein Blog oder eine Fotogalerie für die Familie, dann hilft ein Netz zwischen deinen Geräten nicht. Cloudflare Tunnel löst das so: Auf deinem Server läuft ein kleines Programm namens cloudflared, das laut Doku eine ausgehende Verbindung durch deine Firewall zu Cloudflares Netz aufbaut. Danach fließt Verkehr in beide Richtungen, Besucher landen bei Cloudflare, Cloudflare reicht sie durch den Tunnel zu dir. Voraussetzung ist eine eigene Domain, die bei Cloudflare liegt; der Tunnel wird im Dashboard unter Networking, Tunnels angelegt, und der Server muss nach draußen Port 7844 erreichen. Der Preis, den du hier zahlst, ist nicht Geld: Cloudflare sitzt zwischen deinen Besuchern und dir und sieht den Verkehr. Für eine Website, die ohnehin öffentlich ist, finde ich das vertretbar. Für Nextcloud mit deinen Dokumenten würde ich es nicht tun; dafür ist Tailscale da.
Und der dritte, ältere Weg für Leute, die beides nicht wollen: ein kleiner Mietserver mit WireGuard, durch den du deinen Heimserver selbst nach draußen tunnelst. Alles in eigener Hand, aber auch alles in eigener Verantwortung, und ein paar Euro im Monat. Der Blog von ipv64.net nennt ihn in derselben Reihe wie Tailscale, und ich sehe es genauso: Das ist der Weg, wenn du schon weißt, warum du ihn gehst.
Was am Ende entschieden ist
Ein Grundlagen-Beitrag endet nicht mit einem laufenden Dienst, sondern mit einer Entscheidung, die hält. Vier Fragen, vier Antworten:
| Was du willst | Welcher Weg | Was es kostet |
|---|---|---|
| Nur du, Familie, deine eigenen Geräte sollen rein | Tailscale (oder wg-easy, sobald du Dual Stack hast) | Nichts, dafür Vertrauen in den Koordinator |
| Eine Website, die jeder ohne App öffnen kann | Cloudflare Tunnel, oder ein eigener Mietserver mit WireGuard | Domain; Cloudflare sieht den Verkehr |
| Du selbst von unterwegs, und dein Handy hat IPv6 | IPv6-Freigabe plus MyFRITZ!- oder DynDNS-Name | Nichts; Besucher ohne IPv6 bleiben draußen |
| Klassische Portfreigaben, wie früher | Dual Stack beim Anbieter erfragen, sonst Tarif oder Anbieter wechseln | Ein Anruf, manchmal ein Vertrag |
Drei Dinge, die danach eingestellt bleiben sollten, egal welchen Weg du nimmst:
- Die IPv4-Portfreigaben in der FritzBox löschen, die du beim Probieren angelegt hast. Sie tun bei CGNAT nichts, aber sollte der Anbieter dich eines Tages doch auf Dual Stack umstellen, stehen plötzlich Ports offen, an die du nicht mehr denkst.
- IPv6 in der FritzBox anlassen. Unter Internet, Zugangsdaten, Reiter IPv6 steht die Unterstützung normalerweise auf „aktiviert" (Stand FRITZ!OS 8). Bei DS-Lite ist IPv6 nicht Beiwerk, sondern deine einzige direkte Leitung nach draußen.
- Einen Namen für den Anschluss, der IPv6 kann: MyFRITZ! bringt das mit, bei anderen DynDNS-Diensten vorher prüfen, ob sie AAAA-Einträge pflegen. Ohne Namen ist jede Freigabe nach dem nächsten Adresswechsel des Anbieters wieder unerreichbar.
Wo es klemmt
wg-easy läuft, aber niemand kommt rein. Der Klassiker, und der Grund, warum dieser Beitrag existiert. Der wg-easy-Beitrag setzt eine Portfreigabe für UDP 51820 voraus, und die funktioniert hinter DS-Lite nicht. wg-easy ist damit nicht falsch, es braucht nur Dual Stack oder eine IPv6-Freigabe plus einen Namen, der auf IPv6 zeigt; der Client muss dann ebenfalls IPv6 haben.
Online-Monitor zeigt eine öffentliche IPv4, Freigabe geht trotzdem nicht. Dann ist es kein CGNAT. AVM nennt in „Kein Zugriff über Portfreigabe" die üblichen Verdächtigen: Der Anbieter gibt den Port nicht frei oder weist einen anderen zu (in der Freigabe-Übersicht steht die „extern vergebene" Portnummer daneben), die Kindersicherung sperrt das Gerät, oder die Firewall auf dem Server selbst blockt. Bei Docker auf Ubuntu lohnt der Blick in Docker und UFW, da ist es gern andersherum.
Tailscale und der Anbieter streiten sich um 100.64.x.x. Die Tailscale-Doku hat dafür eine eigene Seite, „CGNAT interoperability": Der Linux-Client installiert eine Firewall-Regel, die allen Verkehr aus 100.64.0.0/10 verwirft, der nicht von Tailscale kommt. Für ein Heimnetz ist das fast immer egal, weil die CGNAT-Adresse auf der Außenseite deiner FritzBox klebt und deine Geräte 192.168er-Adressen haben. Es wird erst zum Problem, wenn ein Gerät direkt am Anbieter hängt, etwa ein Server, der ohne Router am Kabelmodem steckt. Die Doku beschreibt den Schalter dafür, warnt aber gleich dazu, dass er den Schutz gegen gefälschte Absender schwächt.
IPv6-Freigabe steht, aber die Adresse des Servers ändert sich. Viele Systeme erzeugen aus Datenschutzgründen regelmäßig neue IPv6-Adressen (Privacy Extensions). Die FritzBox bindet die Freigabe an das Gerät, nicht an eine einzelne Adresse; der Name, unter dem du den Server aufrufst, muss aber auf eine stabile Adresse zeigen. Prüfe mit ip -6 addr show scope global, ob neben der wechselnden Adresse eine dauerhafte steht, und trage im Namen-Dienst diese ein.
Der Beitrag aus r/selfhosted endete übrigens nicht mit einer Lösung, sondern mit einem Aha, und das ist bei diesem Thema schon die Hälfte. Mich interessiert die andere Hälfte: Welcher Anbieter hat dich auf DS-Lite gesetzt, und hat ein Anruf etwas gebracht? Schreib's in die Kommentare, mit Anbieter und Jahr; das hilft dem Nächsten mehr als jede Doku.
Wenn du bis hierhin gelesen hast und nun Tailscale einrichten willst: Der Beitrag dazu ist der nächste in dieser Reihe, und der Newsletter sagt dir Bescheid, sobald er steht. Bis dahin ist Was ist ein Reverse Proxy? die passende Grundlage, denn der kommt hinter jedem der drei Wege als Nächstes dran.
Quellen
- AVM Wissensdatenbank: Erreichbarkeit der FRITZ!Box im Internet prüfen
- AVM Wissensdatenbank: Adressbereich der IPv4-Adresse der Internetverbindung bestimmen
- AVM Wissensdatenbank: Was ist DS-Lite und wie funktioniert es?
- AVM Wissensdatenbank: IPv6-Freigaben in FRITZ!Box einrichten
- AVM Wissensdatenbank: Kein Zugriff über Portfreigabe auf FRITZ!Box-Heimnetz
- AVM Wissensdatenbank: MyFRITZ!-Freigaben einrichten
- RFC 6598: IANA-Reserved IPv4 Prefix for Shared Address Space
- Wikipedia: Carrier-grade NAT
- Tailscale Blog: How NAT traversal works
- Tailscale Docs: What are these 100.x.y.z addresses?
- Tailscale Docs: CGNAT interoperability
- Tailscale Docs: Subnet routers
- Tailscale: Pricing
- Cloudflare Docs: Cloudflare Tunnel
- Cloudflare Docs: Create a tunnel (dashboard)
- ipify: A Simple Public IP Address API
- ipv64.net: Was ist DS-Lite? Vorteile und Nachteile
- o2 Community: Bitte um Umstellung auf Dual Stack (Antwort der Moderation, 05-2025)
- Vodafone-Kabel-Forum (inoffiziell): ipv4 möglich? (2018)