Heimserver hinter DS-Lite oder CGNAT erreichbar machen
FRITZ!Box zeigt DS-Lite und der Heimserver ist von außen nicht erreichbar? So prüfst du CGNAT und wählst zwischen Dual-Stack, IPv6, Tailscale, Cloudflare Tunnel und VPS-Tunnel.
Warum die Portfreigabe hinter DS-Lite ins Leere läuft
Ein Heimserver hinter DS-Lite oder CGNAT ist über IPv4 von außen nicht erreichbar, weil dein Router keine eigene öffentliche IPv4-Adresse hat. Die Portfreigabe in der FRITZ!Box ist dann korrekt eingerichtet und trotzdem wirkungslos, denn die Pakete kommen gar nicht erst bei deinem Router an. IPv6 ist an diesen Anschlüssen fast immer nativ und öffentlich, und darüber ist dein Server erreichbar, sobald du die IPv6-Freigabe setzt. Reicht dir das nicht, weil auch Geräte ohne IPv6 hinein sollen, bleiben fünf Wege: Dual-Stack beim Anbieter anfragen, IPv6 plus Portmapper, ein Overlay-Netz wie Tailscale, ein Cloudflare Tunnel für HTTP, oder ein Reverse-Tunnel über einen VPS. Unten stehen alle fünf in der Reihenfolge des Aufwands, mit dem, was jeder Weg nach außen sichtbar macht.
CGNAT ist eine Adressierungsentscheidung deines Anbieters, kein Fehler und keine Sperre. Keiner der Wege unten umgeht eine Regel. Sie nutzen nur, was an deinem Anschluss tatsächlich funktioniert: ausgehende Verbindungen und IPv6.
Was CGNAT und DS-Lite genau bedeuten
NAT (Network Address Translation) übersetzt viele private Adressen auf eine öffentliche. Das macht jeder Heimrouter: dein Laptop hat 192.168.178.20, im Internet erscheint die eine Adresse der FRITZ!Box. Bei CGNAT (Carrier-Grade NAT) macht der Anbieter dasselbe noch einmal eine Stufe höher. Deine FRITZ!Box bekommt auf der WAN-Seite eine Adresse aus 100.64.0.0/10, dem in RFC 6598 dafür reservierten Bereich, und teilt sich mit vielen anderen Kunden eine öffentliche IPv4-Adresse im Rechenzentrum des Anbieters. Eine Verbindung von außen auf diese geteilte Adresse landet beim NAT des Anbieters, und das kennt keine Regel, die auf deinen Anschluss zeigt.
DS-Lite (Dual-Stack Lite, RFC 6333) ist die verbreitete Variante an deutschen Kabel- und Glasfaseranschlüssen. Dein Router bekommt nur noch IPv6 vom Anbieter. IPv4-Pakete aus deinem Heimnetz verpackt die FRITZ!Box in IPv6 und schickt sie durch einen Tunnel zum AFTR (Address Family Transition Router) des Anbieters. Dort werden sie ausgepackt und durch ein CGNAT geschickt. Für dich als Betreiber eines Servers ist das Ergebnis dasselbe wie bei CGNAT ohne Tunnel: das NAT sitzt beim Anbieter, und nur der Anbieter könnte dort einen Port zu dir weiterleiten. Die FRITZ!Box unterstützt dafür PCP (Port Control Protocol), aber das hilft nur, wenn der Anbieter es auf seiner Seite freischaltet, und darauf solltest du nicht bauen.
IPv6 ist die andere Hälfte der Geschichte, und sie ist gut. Dein Anbieter gibt dir ein öffentliches Präfix, meist ein /56 oder /64, und jedes Gerät im Heimnetz bildet daraus eine eigene, weltweit gültige Adresse. Es gibt kein NAT, das im Weg steht. Was im Weg steht, ist nur die IPv6-Firewall der FRITZ!Box, die eingehende Verbindungen standardmäßig verwirft. Die öffnest du pro Gerät und Port, genau wie eine Portfreigabe bei IPv4.
So prüfst du, ob du hinter DS-Lite oder CGNAT hängst
Öffne in der FRITZ!Box-Oberfläche Internet > Online-Monitor. Dort stehen die Adressen der Internetverbindung. Bei DS-Lite meldet die FRITZ!Box den Tunnel ausdrücklich, die Anzeige enthält das Wort DS-Lite, und es gibt keine eigene öffentliche IPv4-Adresse. Bei CGNAT ohne Tunnel steht eine IPv4-Adresse da, und sie liegt zwischen 100.64.0.0 und 100.127.255.255. Eine Adresse aus 10.0.0.0/8, 172.16.0.0/12 oder 192.168.0.0/16 heißt, dass vor der FRITZ!Box noch ein weiterer Router sitzt, etwa das Modem des Anbieters im Routermodus. Die genaue Formulierung unterscheidet sich zwischen FRITZ!OS-Versionen; entscheidend ist, ob eine IPv4-Adresse angezeigt wird und aus welchem Bereich sie stammt.
Vergleiche das mit der Sicht von außen. Auf einem Rechner im Heimnetz:
curl -4 https://icanhazip.com
curl -6 https://icanhazip.comDer erste Befehl gibt die IPv4-Adresse zurück, mit der du im Internet erscheinst. Ist sie eine andere als die, die der Online-Monitor zeigt, sitzt zwischen dir und dem Internet ein NAT des Anbieters, und eingehendes IPv4 ist damit vom Tisch. Bei DS-Lite liefert der Befehl die geteilte Adresse des AFTR, obwohl die FRITZ!Box gar keine IPv4-Adresse anzeigt. Der zweite Befehl sollte eine Adresse liefern, die mit 2 oder 3 beginnt. Bricht er mit einer Meldung wie Couldn't connect to server oder Network is unreachable ab, hat dein Anschluss kein funktionierendes IPv6, und dann fallen Weg 2 und ein Teil von Weg 3 weg.
Prüfe dann auf dem Heimserver selbst, ob er eine globale IPv6-Adresse hat:
ip -6 addr show scope globalDu brauchst eine Adresse, die mit 2 oder 3 beginnt. Eine Adresse mit fe80 am Anfang ist nur im lokalen Netz gültig, eine mit fd ist eine ULA (Unique Local Address) und ebenfalls nur lokal. Steht in der Zeile das Wort temporary, ist das eine wechselnde Privacy-Adresse; für einen Server brauchst du die Adresse ohne dieses Merkmal, weil die Freigabe in der FRITZ!Box an die feste Interface-ID gebunden ist.
Der endgültige Test kommt von außen, von einem Gerät, das nicht in deinem Heimnetz ist. Ein VPS mit IPv6 ist dafür ideal, ein Handy im Mobilfunknetz geht auch, die deutschen Mobilfunknetze haben IPv6. Ersetze die Adresse und den Port durch deine:
nc -6 -zv -w 5 2001:db8:1234:5678:1a2b:3c4d:5e6f:7a8b 8123Connection refused heißt: das Paket ist bei deinem Server angekommen, aber dort lauscht nichts auf dem Port. Das ist ein gutes Zeichen für die Netzwerkseite. Connection timed out heißt: irgendwo wird das Paket verworfen, in der IPv6-Firewall der FRITZ!Box, weil die Freigabe fehlt, oder in der Firewall des Servers.
Weg 1: Dual-Stack beim Anbieter anfragen
Dual-Stack heißt: der Router bekommt eine öffentliche IPv4-Adresse und IPv6 nebeneinander. Damit funktioniert die klassische Portfreigabe wieder, und alles Weitere unten wird optional. Der Weg kostet einen Anruf oder einen Chat, aber er steht nicht bei jedem Anbieter offen. Der Stand im September 2026, zusammengetragen aus den Hilfeseiten und Community-Foren der Anbieter; prüfe die aktuelle Seite deines Anbieters, bevor du dich darauf verlässt:
- Telekom: DSL und Glasfaser laufen für Privatkunden standardmäßig mit Dual-Stack und öffentlicher, dynamischer IPv4-Adresse. Hier gibt es meist nichts anzufragen.
- o2 (Telefónica): DSL und Glasfaser bekommen automatisch Dual-Stack. o2 Kabel läuft nur mit DS-Lite, eine Umstellung ist dort laut o2-Community nicht möglich.
- Vodafone Kabel: Neukunden bekommen DS-Lite. Eine öffentliche dynamische IPv4-Adresse wird in Privatkundentarifen nur noch in Ausnahmefällen geschaltet, die Anfrage läuft über den Kundenservice. Eine feste öffentliche IPv4-Adresse gibt es als kostenpflichtige Option für Geschäftskunden.
- 1&1: viele DSL- und Glasfaseranschlüsse laufen mit DS-Lite. Nutzer berichten, dass der Kundenservice auf Anfrage auf Dual-Stack umstellt.
- Deutsche Glasfaser: Privatkunden bekommen CGNAT. Eine öffentliche IPv4-Adresse gibt es erst in den Geschäftskundentarifen.
Frag nach „Dual-Stack mit öffentlicher IPv4-Adresse“, nicht nach einer „festen IP“. Eine feste Adresse ist ein anderes, meist kostenpflichtiges Produkt; für eine Portfreigabe reicht eine dynamische Adresse plus DynDNS. Nach der Umstellung trennt die FRITZ!Box die Verbindung einmal neu. Danach muss die IPv4-Adresse im Online-Monitor mit der Ausgabe von curl -4 https://icanhazip.com übereinstimmen. Stimmt sie überein, ist das NAT des Anbieters weg.
Was dieser Weg nach außen zeigt: genau die Ports, die du freigibst, für das gesamte Internet. Das ist das Modell, das du vor DS-Lite kanntest, mit den Pflichten, die dazugehören: aktuelle Software und kein Verwaltungsdienst ohne Not im Internet.
Weg 2: Über IPv6 freigeben, mit Portmapper für IPv4-Gäste
Dieser Weg kostet nichts und ist an fast jedem DS-Lite-Anschluss sofort möglich. Er hat eine Grenze: nur Clients mit IPv6 kommen durch. In Deutschland sind das die meisten Heimanschlüsse und die drei Mobilfunknetze. Nicht dabei sind viele Firmennetze, Hotel-WLANs, öffentliche Hotspots und ein Teil der Mobilfunknetze im Ausland. Für diese Fälle gibt es Portmapper, dazu gleich mehr.
Die Freigabe liegt in der FRITZ!Box unter Internet > Freigaben > Portfreigaben. Klicke auf Gerät für Freigaben hinzufügen und wähle den Server aus. Im Dialog steht das Feld IPv6-Interface-ID, die hintere Hälfte der IPv6-Adresse deines Servers. Die FRITZ!Box füllt es mit dem vor, was sie vom Gerät gelernt hat. Vergleiche den Wert mit der globalen Adresse aus ip -6 addr show scope global: die letzten vier Blöcke müssen übereinstimmen. Stimmen sie nicht, hat der Server eine andere Adresse gebildet als die, die die FRITZ!Box kennt, und die Freigabe zeigt ins Leere. Lege dann mit Neue Freigabe den Port an. In FRITZ!OS 7 und 8 gilt eine Portfreigabe für IPv4 und IPv6 zugleich; an einem DS-Lite-Anschluss bleibt davon nur der IPv6-Teil wirksam. Das Häkchen PING6 freigeben ist praktisch für Tests von außen. Den Haken für die komplette Freigabe des Geräts (Exposed Host) lässt du weg, er öffnet jeden Port.
Auf dem Server selbst muss die Firewall den Port für IPv6 durchlassen. ufw tut das nur, wenn in /etc/default/ufw die Zeile IPV6=yes steht, was auf Ubuntu die Vorgabe ist. Wie du prüfst, dass eine Regel wirklich für beide Protokollfamilien gilt, steht in ufw und IPv6-Ports; die Fehlerbilder sind auf einem VPS und einem Heimserver dieselben.
sudo ufw allow 8123/tcp
sudo ufw status verboseufw status verbose sollte den Port zweimal auflisten, einmal mit dem Zusatz (v6). Fehlt die zweite Zeile, ist IPv6 in ufw abgeschaltet, und der Test von außen endet mit einem Timeout.
Für einen Namen brauchst du DynDNS mit einem AAAA-Eintrag, denn das IPv6-Präfix kann sich bei einer Neuverbindung ändern. MyFRITZ! funktioniert an DS-Lite-Anschlüssen; der Name zeigt dann nur auf IPv6, so beschreibt es AVM in seiner Wissensdatenbank. Ein Stolperstein beim Testen: rufst du den eigenen DynDNS-Namen aus dem Heimnetz auf, blockiert die FRITZ!Box die Antwort standardmäßig, weil ihr DNS-Rebind-Schutz keine Namen auflöst, die auf Adressen im Heimnetz zeigen. Trage den Namen unter Heimnetz > Netzwerk > Netzwerkeinstellungen im Abschnitt DNS-Rebind-Schutz als Ausnahme ein, oder teste von außen.
Für Gäste ohne IPv6 gibt es Portmapper: ein Dienst mit öffentlicher IPv4-Adresse nimmt Verbindungen auf einem Port an und baut sie per IPv6 zu deinem Server weiter. Der bekannteste Anbieter im deutschsprachigen Raum ist feste-ip.net. Der Dienst arbeitet mit Guthaben, ein neues Konto startet mit einem kostenlosen Testguthaben, und ein dedizierter Portmapper mit eigener IPv4-Adresse kostet laut FAQ des Anbieters im September 2026 wenige Euro im Monat. Die Grenzen stehen in derselben FAQ: es geht nur TCP, kein UDP, und die Verbindung läuft über die Server des Anbieters, mit 10 bis 30 ms zusätzlicher Verzögerung. Das ist die Vertrauensfrage: bei HTTPS bleibt der Inhalt zwischen Browser und deinem Server verschlüsselt, der Portmapper sieht aber, wer wann mit dir spricht, und er könnte technisch dazwischentreten. Wenn dich das stört, ist Weg 5 dasselbe Prinzip auf einem Server, den du selbst kontrollierst.
Was dieser Weg nach außen zeigt: die freigegebenen Ports für das gesamte IPv6-Internet, und über den Portmapper zusätzlich für IPv4.
Weg 3: Overlay-Netz mit Tailscale oder WireGuard, wenn nur du hinein musst
Wenn niemand außer dir und deiner Familie den Server erreichen soll, brauchst du keinen einzigen offenen Port. Ein Overlay-Netz verbindet deine Geräte über einen verschlüsselten Tunnel, und jedes Gerät baut die Verbindung selbst nach außen auf. Ausgehende Verbindungen funktionieren hinter DS-Lite und CGNAT ohne Einschränkung, also funktioniert das Overlay.
Tailscale ist der schnellste Weg dorthin. Auf dem Heimserver:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
tailscale status
tailscale iptailscale up gibt einen Anmeldelink aus, den du im Browser öffnest. Danach installierst du die App auf Handy und Laptop und meldest sie am selben Konto an. tailscale status listet alle Geräte mit ihrer Tailscale-Adresse. Diese Adressen liegen in 100.64.0.0/10, demselben Bereich, den CGNAT benutzt; das ist kein Fehler und kein Konflikt, weil das Overlay ein eigenes Interface hat. Home Assistant ist danach unter http://100.x.y.z:8123 erreichbar, von jedem Gerät im Overlay und von sonst niemandem.
Ob die Verbindung direkt läuft, siehst du in derselben Ausgabe: steht bei einem Gerät direct, sprechen die beiden Geräte unmittelbar miteinander. Steht dort relay, laufen die Pakete über einen DERP-Server von Tailscale, weil beide Seiten hinter einem NAT sitzen, das sich nicht durchstoßen ließ. Hinter DS-Lite ist das selten, weil beide Seiten meist IPv6 haben und sich darüber direkt finden. tailscale ping <gerät> zeigt für jedes Paket, welchen Weg es nimmt. Wie du damit die Portfreigabe ganz ersetzt, und was das für Dienste bedeutet, die du bisher per DynDNS erreicht hast, steht in Tailscale statt Portfreigabe.
Wenn du lieber ohne Konto bei einem Anbieter auskommst, nimm WireGuard. Direkt nach Hause geht das über IPv6: der Heimserver bekommt in der FRITZ!Box eine Freigabe für UDP 51820, die Clients tragen als Endpoint den DynDNS-Namen ein, und der Tunnel steht. Der Haken ist derselbe wie bei Weg 2: der Client braucht IPv6. Willst du auch aus IPv4-Netzen hinein, nimm einen kleinen VPS als Treffpunkt: der Heimserver baut den Tunnel zum VPS auf, dein Laptop ebenfalls, und der VPS leitet zwischen beiden weiter. Kein Port zu Hause, und der VPS sieht nur verschlüsselte WireGuard-Pakete. Das Setup mit Routing ins ganze Heimnetz steht in WireGuard-Route in dein Heimnetz.
Was dieser Weg nach außen zeigt: nichts. Kein Port und kein Name. Nur Geräte, die du selbst ins Overlay aufgenommen hast, sehen den Server.
Weg 4: Cloudflare Tunnel, wenn es HTTP ist
Soll ein Webdienst öffentlich sein, etwa ein Blog oder Home Assistant für Familienmitglieder ohne App, und willst du keinen VPS mieten, ist ein Cloudflare Tunnel der kürzeste Weg. Der Dienst cloudflared läuft auf dem Heimserver, baut eine ausgehende Verbindung zu Cloudflare auf, und Cloudflare veröffentlicht einen Hostnamen deiner Domain, der durch diesen Tunnel zu deinem Dienst führt. Kein offener Port, kein IPv4 nötig, und die Domain bekommt kostenlos TLS. Die Domain muss dafür bei Cloudflare als DNS-Zone liegen. Schritt für Schritt steht das in Cloudflare Tunnel ohne offene Ports.
Die Grenzen: Der kostenlose Tunnel veröffentlicht HTTP und HTTPS. Cloudflare beendet TLS auf seinen Servern und sieht den Inhalt im Klartext, bevor es ihn durch den Tunnel schickt. Für einen öffentlichen Blog ist das egal, für eine private Dateiablage ist es eine Entscheidung. Andere TCP-Dienste wie SSH gehen nur mit cloudflared auch auf der Client-Seite, UDP geht gar nicht, ein Spieleserver also nicht. Prüfe die Nutzungsbedingungen, bevor du große Medienströme wie Jellyfin darüber schickst.
Was dieser Weg nach außen zeigt: den Hostnamen und den dahinter liegenden Dienst, für das gesamte Internet, sofern du nicht Cloudflare Access davor schaltest.
Weg 5: Reverse-Tunnel über einen VPS für alles andere
Bleibt der Fall: ein öffentlicher Dienst, der kein HTTP ist, oder HTTP, dessen Inhalt kein Dritter sehen soll, oder UDP. Dafür mietest du einen kleinen VPS mit öffentlicher IPv4-Adresse und lässt den Heimserver eine Verbindung dorthin aufbauen, die in die Gegenrichtung genutzt wird. Der VPS nimmt die Verbindungen aus dem Internet an und reicht sie durch den Tunnel nach Hause. Mit ssh -R geht das für einen TCP-Port in einer Zeile, mit WireGuard plus einer NAT-Regel auf dem VPS für jeden Port und jedes Protokoll. Die komplette Anleitung mit systemd-Unit, Autossh und den Fehlerbildern steht in VPS-Reverse-Tunnel hinter CGNAT, und sie gilt für DS-Lite unverändert, weil der Heimserver nur ausgehend spricht.
Du kontrollierst beide Enden, es gibt keinen Betreiber dazwischen, der Verbindungen sieht, und du kannst auf dem VPS eine Firewall und einen Reverse-Proxy mit eigenem Zertifikat betreiben. Die Kosten sind der VPS und die Bandbreite: jedes Byte läuft von zu Hause zum VPS und von dort zum Besucher, dein Upload zu Hause ist damit das Limit. Frag dich vor dem Aufbau einmal ehrlich, ob der Dienst überhaupt zu Hause laufen muss. Ein Blog ohne Bezug zu Daten im Heimnetz ist auf dem VPS selbst besser aufgehoben, siehe eine eigene Website selbst hosten; der Tunnel lohnt sich für das, was zu Hause bleiben muss, etwa den NAS-Speicher oder die Smart-Home-Zentrale.
Was dieser Weg nach außen zeigt: genau die Ports, die du auf dem VPS weiterleitest, unter der Adresse des VPS. Die Heimadresse taucht nirgends auf.
Welcher Weg passt zu dir
Drei Fragen entscheiden: Soll der Dienst öffentlich sein oder nur für dich? Ist es HTTP oder ein beliebiger Port? Bist du bereit, einen VPS zu mieten?
- Nur für dich, beliebiges Protokoll, kein VPS: Tailscale (Weg 3). Zweite Wahl: WireGuard direkt über IPv6, wenn alle deine Clients IPv6 haben.
- Nur für dich, beliebiges Protokoll, VPS vorhanden: WireGuard mit dem VPS als Treffpunkt (Weg 3, zweite Variante). Kein Konto bei einem Anbieter, kein offener Port zu Hause.
- Öffentlich, nur HTTP, kein VPS: Cloudflare Tunnel (Weg 4), mit dem Wissen, dass Cloudflare den Inhalt sieht.
- Öffentlich, beliebiger Port, kein VPS: zuerst Dual-Stack anfragen (Weg 1). Klappt das nicht, IPv6-Freigabe plus Portmapper (Weg 2), mit den Grenzen TCP-only und Fremdbetreiber.
- Öffentlich, beliebiger Port, VPS in Ordnung: Reverse-Tunnel über den VPS (Weg 5).
- In jedem Fall: die IPv6-Freigabe aus Weg 2 kostet nichts, schadet keinem der anderen Wege und bringt jedem Client mit IPv6 den direkten Weg ohne Umleitung.
FAQ
Warum funktioniert meine Portfreigabe in der FRITZ!Box nicht, obwohl sie als aktiv angezeigt wird?
Weil die Freigabe auf der WAN-Adresse der FRITZ!Box wartet, und diese Adresse hinter DS-Lite oder CGNAT keine öffentliche ist. Eine Verbindung aus dem Internet endet am NAT deines Anbieters und erreicht deinen Router nie. Prüfe es mit curl -4 https://icanhazip.com aus dem Heimnetz: weicht die Ausgabe von der IPv4-Adresse unter Internet > Online-Monitor ab, oder zeigt der Online-Monitor DS-Lite, ist genau das der Fall. Die Freigabe wirkt dann nur noch für IPv6.
Was ist der Unterschied zwischen DS-Lite und CGNAT?
CGNAT ist das geteilte NAT beim Anbieter; dein Router bekommt eine Adresse aus 100.64.0.0/10 und teilt sich mit anderen eine öffentliche IPv4-Adresse. DS-Lite ist CGNAT plus Tunnel: der Router bekommt gar keine IPv4-Adresse mehr, verpackt IPv4 in IPv6 und schickt es zum AFTR des Anbieters, der dann das CGNAT macht. Für eingehende Verbindungen sind beide gleich: über IPv4 kommt nichts an, über IPv6 alles, was du freigibst.
Ist Tailscale hinter DS-Lite langsamer als eine direkte Verbindung?
Nur, wenn die Verbindung über einen Relay-Server läuft. tailscale status zeigt pro Gerät direct oder relay. Hinter DS-Lite haben beide Seiten meist IPv6, und darüber findet Tailscale fast immer einen direkten Weg, dann ist der Durchsatz der deines Anschlusses. Steht dort relay, sitzt eine Seite hinter einem NAT ohne IPv6, etwa in einem Firmennetz, und die Pakete nehmen den Umweg über einen DERP-Server von Tailscale.
Sieht Cloudflare oder der Portmapper meinen Datenverkehr?
Cloudflare ja: der Tunnel beendet TLS auf Cloudflares Servern, der Inhalt liegt dort im Klartext vor, bevor er durch den Tunnel zu dir geht. Ein Portmapper wie feste-ip.net reicht TCP-Verbindungen durch, ohne TLS zu beenden; der Inhalt einer HTTPS-Verbindung bleibt verschlüsselt, der Betreiber sieht aber Quelladresse und Zeitpunkt jeder Verbindung. Willst du keinen Dritten in der Verbindung, bleibt Weg 3 für privaten Zugriff oder Weg 5 mit einem eigenen VPS.