Deine Freunde tippen deine Adresse ein, und das Spiel antwortet mit höflichem Nichts. Wahrscheinlich teilt sich dein Anschluss eine IPv4-Adresse mit der halben Nachbarschaft. So kommen trotzdem alle rein.
Kurz gesagt
Ein Gameserver hinter CGNAT oder DS-Lite ist per IPv4 nicht aus dem Internet erreichbar, weil dein Router nie eine eigene öffentliche IPv4-Adresse bekommt. Eine Portfreigabe im Router führt dann ins Leere [1][2]. Fünf Wege darum herum sind realistisch: eine öffentliche IPv4-Adresse beim Anbieter anfragen, IPv6 nutzen, den Server über Tailscale teilen, den Verkehr über einen gemieteten VPS mit WireGuard umleiten oder einen Spiele-Relay-Dienst wie playit.gg verwenden. Welcher passt, hängt davon ab, ob deine Freunde etwas installieren wollen und ob dein Spiel UDP spricht. Cloudflare Tunnel steht nicht auf der Liste, weil seine dokumentierten Diensttypen kein UDP enthalten [27].
Die fünf Wege im Überblick
| Weg | Freunde installieren etwas? | UDP-Spielports | Hauptgrenze |
|---|---|---|---|
| 1. Öffentliche IPv4 vom Anbieter | Nein | Ja, eine Regel je Protokoll | Anbieter muss sie liefern, kann extra kosten |
| 2. IPv6 | Nein | Ja, eine Regel je Protokoll | Spieler und Spiel brauchen IPv6 |
| 3. Tailscale-Gerätefreigabe | Ja, Client und Konto | Läuft durch den Tunnel, Spiel testen | Jeder Spieler braucht den Client |
| 4. VPS-Relay mit WireGuard | Nein | Ja, eine Weiterleitung je Port | Du mietest und pflegst einen VPS |
| 5. Relay-Dienst (playit.gg) | Nein | Ja, UDP-Tunnel aufgeführt | Ein Dritter trägt den Verkehr |
So funktioniert’s
- Warum die Portfreigabe scheitert. CGNAT (Carrier-Grade NAT) heißt: Dein Anbieter steckt viele Kunden hinter eine öffentliche IPv4-Adresse. Der Block 100.64.0.0/10 ist für die Verbindungen zwischen dem NAT des Anbieters und den Routern der Kunden reserviert [6]. DS-Lite (Dual-Stack Lite) kommt auf anderem Weg zum selben Ergebnis: Die FRITZ!Box verpackt deinen IPv4-Verkehr in IPv6 und schickt ihn an ein Gerät des Anbieters namens AFTR, das IPv4-Adressen unter Kunden aufteilt [7]. AVM nennt die Folge klar: Server im Heimnetz sind per IPv4 nicht aus dem Internet erreichbar [2]. Deine Freigabe ist also richtig. Sie sitzt nur hinter einer zweiten Tür, die dir nicht gehört.
- Prüfe, welchen Anschluss du hast. Öffne in der FRITZ!Box Internet, Online-Monitor, Verbindungsdetails und lies die Zeilen „Internet, IPv4“ und „Internet, IPv6“. Steht dort keine IPv4-Adresse oder eine aus 10.0.0.0/8, 100.64.0.0/10, 172.16.0.0/12, 192.0.0.0/29 (DS-Lite-Tunnel) oder 192.168.0.0/16, hat die Box keine öffentliche IPv4-Adresse. Jede andere IPv4-Adresse heißt: Sie hat eine [1]. Meldet die Seite Portfreigaben, dass dein Anbieter bestimmte Ports bereitstellt, unterstützt er PCP (Port Control Protocol), und IPv4 funktioniert nur auf genau diesen Ports [1][2].
- TCP und UDP verhalten sich im Test unterschiedlich. Minecraft Java Edition lauscht standardmäßig auf TCP-Port 25565, die Bedrock Edition auf UDP-Port 19132 [8]. Ein TCP-Port antwortet auf einen Verbindungsversuch, deshalb kann eine Prüfung offen von geschlossen und gefiltert unterscheiden [9]. Ein UDP-Port bleibt oft stumm, sodass ein Scanner nur „open|filtered“ melden kann [9]. Der verlässliche UDP-Test ist der echte Spiel-Client an einem Anschluss außerhalb deines Zuhauses. Jeder Weg unten endet mit so einem Test.
- Teste immer von außen. Nimm ein Handy mit Mobilfunk bei ausgeschaltetem WLAN oder den Anschluss eines Freundes. Ein Test aus dem eigenen Netz belegt eine Portfreigabe nicht zuverlässig [12]. Testest du über IPv6, öffne vorher test-ipv6.com auf dem Testgerät: Nicht jedes Mobilfunknetz und nicht jeder Hotspot hat IPv6 [1][2].
Weg 1: Öffentliche IPv4-Adresse beim Anbieter anfragen
Das ist die sauberste Lösung. Die klassische Portfreigabe funktioniert wieder, und niemand muss etwas installieren. Du brauchst einen Anschluss mit echtem Dual-Stack: IPv4 und IPv6 nebeneinander, mit öffentlicher IPv4-Adresse am Router. Ob dein Anbieter das anbietet und zu welchem Preis, unterscheidet sich je Anbieter und Tarif. Eine Anleitung schreibt, es koste oft einen kleinen monatlichen Aufpreis oder sei an einen höheren Tarif gekoppelt [24]. Ein Forenbeitrag vom 22. Mai 2025 berichtet, ein Kundenservice habe kostenlos eine öffentliche IPv4-Adresse dazugebucht [23]. Wir nennen keinen Anbieter und keinen Preis, weil wir für beides keine aktuelle Quelle haben (unbelegt, Stand 25.10.2026). Lies nach der Umstellung den Online-Monitor erneut und vergleiche mit den Bereichen oben [1]. Lege dann die Regel an: Internet, Freigaben, Portfreigaben, Gerät für Freigaben hinzufügen, Neue Freigabe, „Andere Anwendung“, TCP oder UDP wählen und den Port eintragen. Ein Spiel, das beides nutzt, bekommt eine Regel je Protokoll [3]. Hat der Server eine eigene Firewall, öffne den Port auch dort [3]. Eine MyFRITZ!-Adresse hält die Box auffindbar, wenn sich die IPv4-Adresse ändert [3]. UDP ist auf diesem Weg kein Problem. Test: einen TCP-Port von einem Rechner außerhalb deines Netzes mit nc -zv <deine-IPv4> 25565 [11], einen UDP-Port mit dem echten Client.
Weg 2: IPv6 nutzen
Ein DS-Lite-Anschluss hat immer IPv6, weil der IPv4-Tunnel darüber läuft [7]. Ein CGNAT-Anschluss muss das nicht; AVM führt einen Anschluss mit IPv6 und IPv4 über CGNAT als über IPv6 erreichbar [1]. Jedes Gerät bekommt eine eigene, weltweit gültige Adresse. Die Firewall der FRITZ!Box blockiert eingehende Verbindungen, bis du für ein Gerät einen Port öffnest [4][12]. Prüfe IPv6 mit test-ipv6.com auf einem Gerät zu Hause [1]. Lies auf dem Server die dauerhafte globale Adresse mit ip -6 addr show scope global -temporary aus, das die wechselnden Privacy-Adressen ausblendet [13]. Öffne dann Internet, Freigaben, Portfreigaben, füge den Server hinzu und lege eine Freigabe mit IPv6-Zugriff, Protokoll und Port an. Prüfe, dass die Interface-ID in der Regel zur echten Adresse des Servers passt [12]. Nutze nicht die Option Exposed Host: Sie öffnet das ganze Gerät, und AVM sagt, man solle sie nur zum Testen verwenden [5]. Zwei Grenzen zählen. Erstens: Laut AVM braucht eine IPv6-Verbindung zu deinem Zuhause IPv6 auf beiden Seiten, und das ist nicht in jedem Mobilfunknetz und Hotspot der Fall [2]. Zweitens: Das Spiel muss auf IPv6 lauschen und der Client es nutzen. Bedrock-Server haben eine eigene Einstellung für den IPv6-Port, standardmäßig 19133 [14]. Bei anderen Spielen schau in die Dokumentation; Anbieterforen berichten von Diensten, die nur IPv4 sprechen [23]. Dein Anbieter kann außerdem das IPv6-Präfix ändern, nutze deshalb einen Dynamic-DNS-Namen mit AAAA-Eintrag [12]. Test: von einem IPv6-fähigen Anschluss außerhalb nc -6 -zv <IPv6-Adresse> 25565 für TCP, für UDP der echte Client.
Weg 3: Den Server über Tailscale teilen
Tailscale baut einen verschlüsselten Tunnel zwischen Geräten. Dein Server verbindet sich nach außen, CGNAT spielt deshalb keine Rolle. Mit der Geräte-Freigabe lädst du einen Freund nur auf diese eine Maschine ein, ohne sie ins öffentliche Internet zu stellen [10]. Freigegebene Maschinen sind in Quarantäne: Sie können Verbindungen beantworten, aber keine eigenen starten [10]. Die Freigabe gibt es in allen Tarifen und sie erhöht deine Nutzerzahl nicht [10][15]. Jeder Freund braucht ein Tailscale-Konto und den Client und verbindet sich dann mit der Tailscale-Adresse oder dem Namen des Servers. Verbindungen starten über Relay-Server und versuchen dann, auf eine direkte UDP-Verbindung zu wechseln; relayte sind langsamer, und tailscale status sowie tailscale ping zeigen, welche du bekommen hast [16]. Der kostenlose Personal-Tarif umfasst bis zu 6 Nutzer und ist für nichtkommerzielle Nutzung gedacht (Preisseite, 25.10.2026) [17]. Die Zugriffsregeln von Tailscale arbeiten je Adresse und Port [10]; ob die UDP-Ports deines Spiels durchkommen, solltest du testen, denn eine Spieleliste haben wir in der Dokumentation nicht gefunden. Die Grenze ist der Client: Manche Plattformen, besonders Konsolen, lassen vielleicht keine Installation zu, und eine Quelle dazu haben wir nicht gefunden. Nicht genutzte Einladungslinks verfallen nach 30 Tagen [10]. Funnel ist kein Ersatz: Er bedient nur TLS-verschlüsselte Verbindungen auf den Ports 443, 8443 und 10000 [18]. Test: Der Freund führt tailscale ping <Servername> aus und tritt dann bei.
Weg 4: Über einen VPS mit WireGuard umleiten
Du mietest einen kleinen VPS mit öffentlicher IPv4-Adresse. Dein Heimserver baut einen WireGuard-Tunnel dorthin auf, und der VPS leitet die Spielports in den Tunnel weiter. Ausgehende Verbindungen funktionieren hinter CGNAT [24], und das Persistent Keepalive von WireGuard hält die NAT-Zuordnung offen [19]. Freunde installieren nichts und verbinden sich mit der Adresse des VPS. TCP und UDP funktionieren beide (unsere Einschätzung: Destination-NAT-Regeln gibt es für beide Protokolle [20]). Die Kosten sind eine monatliche VPS-Rechnung (hier keine Preise, unbelegt), ein zusätzlicher Netzwerksprung und Pflegeaufwand. Zwei Nebenwirkungen: Mit Masquerading im Tunnel sieht der Gameserver die Tunneladresse des VPS statt der Adresse jedes Spielers, sodass IP-Sperren und Limits je IP nicht mehr greifen (unsere Einschätzung). Und hat der VPS eine Firewall des Anbieters, muss sie den Spielport und den WireGuard-Port erlauben, denn solche Firewalls blockieren eingehenden Verkehr standardmäßig [21][22]. Eine vollständige Konfiguration folgt im Beispiel unten. Test: sudo wg show wg0 latest-handshakes zeigt auf beiden Seiten eine Handshake-Zeit [32], ein TCP-Test von außen wie bei Weg 1, für UDP der echte Client.
Weg 5: Einen Spiele-Relay-Dienst wie playit.gg nutzen
playit.gg lässt auf der Maschine mit deinem Server einen Agenten laufen. Der Agent verbindet sich nach außen, Spieler verbinden sich mit einer Adresse auf den Servern von playit, und der Verkehr läuft durch die Verbindung des Agenten zu deinem Server [25]. Der kostenlose Tarif führt Minecraft Java und Bedrock, Palworld, Valheim und eigene UDP-Tunnel auf [25]. Kostenlose Tunnel nutzen globales Anycast-Routing, und der Anbieter weist darauf hin, dass ein Spieler aus Nordamerika über Singapur geleitet werden kann; regionale Tunnel sind eine Premium-Funktion, ebenso die Erhöhung der Portzahl von 4 auf 16 [26]. Premium kostet laut Website am 25.10.2026 3 US-Dollar im Monat [25]. Der Haken sind Vertrauen und Abhängigkeit: Ein Dritter trägt jedes Paket, und deine Gruppe hängt an seinem Dienst. Andere Relay-Dienste haben wir nicht getestet und bekommen von keinem eine Provision. Test: Tritt mit einem Spiel-Client von außerhalb deines Netzes bei.
Was für UDP nicht funktioniert
Cloudflare Tunnel veröffentlicht Hostnamen für HTTP, HTTPS, Unix-Sockets, TCP, SSH, RDP und SMB; UDP gehört nicht zu den dokumentierten Diensttypen, und Nicht-HTTP-Dienste brauchen cloudflared auf jedem Client [27]. Cloudflares Produkt für TCP und UDP heißt Spectrum. Laut Tariftabelle ist es im Free-Tarif nicht verfügbar und in Pro und Business ein kostenpflichtiges Add-on, UDP-Anwendungen sind nur im Enterprise-Tarif ein kostenpflichtiges Add-on, und eine einzelne Minecraft-Anwendung ist ab Pro erlaubt [28]. Spectrum zusammen mit Tunnel funktioniert nur für HTTP- und HTTPS-Anwendungen, und Bedrock wird nicht unterstützt [29]. Nichts davon löst also einen Bedrock-Server hinter CGNAT.
Ein Homelab-Beispiel
Welchen Anschlusstyp das Bytearium-Homelab nutzt, haben wir nicht erfasst (Stand 25.10.2026), deshalb ist das ein allgemeines Beispiel für dein eigenes Setup und kein Bericht über unseres. Nimm einen Minecraft-Server mit Java auf TCP 25565 und Bedrock auf UDP 19132 [8] und Weg 4. Erzeuge zuerst auf beiden Maschinen ein Schlüsselpaar [19]:
umask 077
wg genkey | tee privatekey | wg pubkey > publickeyAktiviere auf dem VPS die Paketweiterleitung [30]:
sudo sysctl -w net.ipv4.ip_forward=1Die Einstellung geht beim Neustart verloren. Damit sie bleibt, schreibe die Zeile net.ipv4.ip_forward=1 in eine Datei unter /etc/sysctl.d/, etwa /etc/sysctl.d/99-forward.conf, die beim Booten gelesen wird [33]. Schreibe dann /etc/wireguard/wg0.conf auf dem VPS. Ersetze eth0 durch den Namen der öffentlichen Schnittstelle des VPS (zeigt ip route show default):
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <privater Schlüssel des VPS>
PostUp = iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25565 -j DNAT --to-destination 10.8.0.2:25565
PostUp = iptables -t nat -A PREROUTING -i eth0 -p udp --dport 19132 -j DNAT --to-destination 10.8.0.2:19132
PostUp = iptables -t nat -A POSTROUTING -o %i -j MASQUERADE
PostUp = iptables -A FORWARD -i eth0 -o %i -d 10.8.0.2 -j ACCEPT
PostUp = iptables -A FORWARD -i %i -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
PostDown = iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 25565 -j DNAT --to-destination 10.8.0.2:25565
PostDown = iptables -t nat -D PREROUTING -i eth0 -p udp --dport 19132 -j DNAT --to-destination 10.8.0.2:19132
PostDown = iptables -t nat -D POSTROUTING -o %i -j MASQUERADE
PostDown = iptables -D FORWARD -i eth0 -o %i -d 10.8.0.2 -j ACCEPT
PostDown = iptables -D FORWARD -i %i -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
[Peer]
PublicKey = <öffentlicher Schlüssel des Heimservers>
AllowedIPs = 10.8.0.2/32Die Felder PostUp und PostDown führen Befehle aus, wenn die Schnittstelle hoch- und heruntergefahren wird [31]. Die DNAT- und Masquerade-Regeln folgen dem Destination-NAT-Muster der nftables-Dokumentation, hier in iptables-Syntax geschrieben [20]. Auf dem Heimserver sieht /etc/wireguard/wg0.conf so aus. Das Keepalive von 25 Sekunden ist der Wert, den WireGuard als sinnvoll für viele verschiedene Firewalls nennt [19]:
[Interface]
Address = 10.8.0.2/24
PrivateKey = <privater Schlüssel des Heimservers>
[Peer]
PublicKey = <öffentlicher Schlüssel des VPS>
Endpoint = <öffentliche IP des VPS>:51820
AllowedIPs = 10.8.0.1/32
PersistentKeepalive = 25Fahre den Tunnel auf beiden Maschinen mit sudo wg-quick up wg0 hoch [31] und richte den Start beim Booten so ein, wie deine Distribution es beschreibt. Erlaube in der VPS-Firewall UDP 51820, TCP 25565 und UDP 19132. Teste dann mit einem Handy im Mobilfunk: Tritt dem Java-Server über die VPS-Adresse bei und dem Bedrock-Server mit der VPS-Adresse und Port 19132.
Prüfliste
- Lies den Online-Monitor und notiere, ob du eine öffentliche IPv4-Adresse, eine IPv6-Adresse oder keines von beiden hast.
- Frage deinen Anbieter, was eine öffentliche IPv4-Adresse kostet, bevor du etwas anderes aufbaust.
- Prüfe test-ipv6.com auf dem Testgerät, bevor du dich auf IPv6 verlässt.
- Lege je Protokoll und Port eine Portfreigabe an und nutze für ein Spiel nie die Option Exposed Host.
- Teste jedes Setup von außerhalb deines Heimnetzes und UDP-Ports mit dem echten Spiel-Client.
- Entscheide, ob deine Freunde einen Client installieren, bevor du dich für Tailscale entscheidest.
- Erlaube in der VPS-Firewall den Spielport und den WireGuard-Port und halte alles andere geschlossen.
- Beobachte das Serverlog: Nach dem Masquerading erscheint jeder Spieler mit der Tunneladresse.
- Lies die Bedingungen deines VPS- und Relay-Anbieters, bevor du einen öffentlichen Gameserver darüber leitest.