Portmapping und IPv6

Guten Tag zusammen.

Ich bin mir eigentlich recht Sicher, dass ich nicht der erste bin, der das Problem so hat aber ich konnte nichts wirklich passendes über die Suche finden.

Auch mein System ist zusammengebrochen, als mein Provider mich auf IPv6 umgestellt hat…

Mein bisheriges Setup:

Ich habe eine xxxx.ipv46.de Domain, diese war bisher über dynDNS mit meiner Fritzbox verbunden. Auf meiner Fritzbox hatte ich ganz normale IPv4 Portfreigaben mit Mapping.
Ich habe einen TrueNAS Server auf dem als Container ein NGINX läuft. Da das NGINX ja keine eigene Adresse hat sondern “nur” virtualisiert ist hört es nicht auf Port 80 und 443 sondern 30021 und 30022.
Das war mit dem IPV4 Mapping ja kein Problem, da ich den Port 30021 vom Server ohne Probleme auf den Port 80 der Fritzbox Mappen konnte (das selbe mit 443 und 30022).

Jetzt beschäftige ich mich seit 2 Tagen mit IPv6 und habe einen großen Knoten im Hirn.

Ja, ich habe verstanden Port-Mapping gibt es nicht in der Form, in der ich es von IPv4 kenne nicht in IPv6. Die IP (v6) meines Servers wird so im Internet sichtbar.

Ich habe auch gesehen, dass es über den IPV64 CDN wohl die Möglichkeit habe eine Art Portmapping zu machen und auch reine IPv4 Clients die Verbindung zu ermöglichen.

Jetzt zu meinem Problem.

Ich möchte gerne mein grobes Setting beibehalten:
nur der NGINX Dienst hatte offene Ports (30021 und 30022) ins Internet und regelt den Zugriff auf die anderen Dienste.

Auch wenn es kein Mapping mehr gibt, kann ich in meiner fritzbox weiterhin nur bestimmte Ports meiner Maschine freigeben:

Ich habe auch die IPv6 Adresse des Routers und meines Servers im IPv64 Übersicht.


(jetzt grade fällt mir erst auf, dass die keine der Adressen mit der in der fritzbox übereinstimmt….)

Ich habe auch schon mit dem Portmapper herumgespielt. Da konnte ich zwar den Port 30021 (oder 30022) auswählen aber nicht auf welchen Port von meiner ipv64.de Adresse das gemappt werden soll, da wurde dann irgendein automaischer wert eingetragen (ich hab das grade nicht da, aber die Port Nummer startet mit 5 soweit ich mich erinnere).

Alles im Allem bleibt es so, dass ich in keiner Konstellation es bisher geschafft habe, meinen NGINX Server von außen zu erreichen.

Ich merke einfach, dass ich total am Schwimmen bin und trotz Allem, was ich in den letzten Tagen zu dem Thema glaube verstanden zu haben, mir irgendwo mindesten eine Erkenntnis fehlt um die passende Konfiguration zu finden.

Ich hoffe mein Anliegen ist klar genug Formuliert und die Schwarmintelligenz hier kann mir helfen :slight_smile: .

Beste Grüße.

Soll es ja bei IPv6 nicht! Willst du den TrueNAS Server erreichen muss dessen IPv6-Adresse gezeigt werden. Willst du den Container mit NGINX erreichen, eben dessen IPv6-Adresse.

Nachtrag: der entscheidende Unterschied zwischen IPv4 und IPv6 ist nicht Portmapping, sondern NAT. Bei Ipv6 gibt es per default kein NAT. Ist überflüssig, denn jedes Gerät im LAN kann bei IPv6 seine eigene öffentlich erreichbare IPv6-Adresse haben. Deswegen ist eben diese und nicht die des Routers für DynDNS, etc. zu publizieren.

Also bisher hatte mein Container mit NGINX keine eigene Adresse, sondern nur seine Ports auf der Adresse des TrueNAS Servers. Vielleicht ist genau dass meine Verwirrung, dass ich nicht weiß wie ich meinen NGINX über IPv6 erreiche….

Ich wäre bisher so vorgegangen, dass ich die Adresse meinen Truenas (die vielen ‘a’ im Bild) mit dem Port 30021 bzw. 30022. Ist das falsch?

Der Container mit NGINX ist ein Docker-Container? Dann muss dieser doch auf einem Host-Computer installiert sein. Dieser sollte dann doch auch IP-Adressen (v4 und v6) haben. Nutze selbst kein Docker-Gedöns. Aber meines Wissens nach haben die Docker-Container keine eigenen IP-Adressen, aber deren Host-Computer.

Ja, genau. Das ist eine Art Docker-Container. Aber über die Host Adresse erreiche ich ja den Host, und nicht den NGINX Container selbst. den NGINX erreiche ich (per IPv4) über die Kombination aus IP Adresse den Hosts (TrueNAS) und dem Port des NGINX.

Du hattest vorhin geschrieben, dass ich NICHT die Adresse des TrueNAS verwenden soll, sondern die des Containers von TrueNAS. Und da fehlt mir jetzt was. Hat mein Container eine eigene IPv6 Adresse, auch wenn er keine eigene IPv4 Adresse hat (dazu habe ich in meinem TrueNAS keinerlei hinweis gefunden)? Funktionieren Ports im IPv6 genauso wie in v4, also, dass ich doch die IPv6 Adresse meines TrueNAS + Port vom NGINX nehmen muss…

Danke für deine Bemühung bisher auch wenn du dich mit TrueNAS und Containern nicht so gut auskennst.

Ich scheitere momentan ja sogar daran, lokal auf das Webinterface meinen TrueNAS oder meines NGINX zuzugreifen. Keine Ahnung ob das daran liegt, dass ich einen Fehler beim Zugriff mache, oder ob die Konfiguration meines Systems noch fehlerhaft ist.

Warum sollte das bei IPv6 anders sein? Die Kombination aus IP-Adresse UND Port macht einen Dienst auf einem Server auch per IPv6 erreichbar, sofern der korrekt für IPv6 konfiguriert wurde.

Nein! Ich meine die Adresse des NGINX-Containers, also konkret dessen Host-Computers. Dass der Host-Computer des NGINX-Containers ein TrueNAS ist hast du bisher nicht gesagt. Auch nicht das es ein Docker-Container ist. Selbst jetzt noch nicht. Du sagt es sei „eine Art Docker-Container“.

Du äußerst dich maximal schwammig, statt eindeutig und klar. Wie soll man da wissen was du tatsächlich hast?

Probier’s mal mit
http://truenasipv6.ipv64.net:30021 bzw. https://truenasipv6.ipv64.net:30022 oder wie dein TrueNAS-Host heißt. Aber wirklich von außen, also z.B. vom Handy bei ausgeschalteten WLAN. Rein intern könnte dir der DNS-Rebind-Schutz der Fritte in die Suppe spucken, weil der keine externen Namen, die auf interne IPs zeigen, auflöst. Es lassen sich aber Ausnahmen eintragen.

Wenn direkt die IPv6-Adresse (sofern konfiguriert) genutzt wird, gibt es auch keinen DNS-Rebind-Schutz der Fritte.
Beispiel: https://[2001:aaaa:bbbb:cccc:1111:2222:3333:4444]:30022

Zum Test geht das natürlich auch.

Würde vor allem zeigen ob IPv6 überhaupt auf dem Server konfiguriert wurde. Zeigt aber noch nicht ob die Adresse per SLAAC oder DHCPv6 bezogen wurde. Für (Port-)Freigabe als Server wäre aber nur DHCPv6 wirklich gut geeignet. Bei SLAAC könnten die IPv6-Privacy-Extensions noch in die Suppe spucken.

Hier ist ja wirklich nichts los. Wirklich das lahmarschichste Forum, das ich kenne. Woran liegt das?
Die wirklich mal antwortenden User könnte an einer Hand abgezählt werden.

Also ich hatte gestern nach der Arbeit ein wenig Zeit herum zu Exprimieren und Überlegungen anzustellen.

Ich hab das mit der ipv64 Adresse und den Portnummern (vergeblich) auch schon probiert. Mein Problem war ja, dass ich selbst Lokal über die IPv6 Adresse von meinem TrueNAS (mit dem entsprechendem Port) nicht auf das Webinterface vom NGIN Docker zugreifen konnte. Daher habe ich mich erstmal mit meinem lokalen Netzwerk beschäftigt.

Und JA, es ist ein Docker. Ich habe mich nur so unsicher ausgedrückt, weil ich nicht wusste in wie fern TrueNAS das Docker Prinzip modifiziert hat. Habe mich inzwischen nochmal schlau gemacht und bestätigt gefunden, dass es sich dabei um Docker Container handelt. Sorry, wenn dich das gestört hat. Aber ich neige dazu mich nur dann sehr klar zu äußern, wenn ich mir einer Sache sehr sicher bin.

Was ich geschafft habe, war, dass ich meinem NGINX Container über MacVLAN eine eigene IPv4 und IPv6 Adresse gegeben habe. In dem Benutzt NGNIX jetzt natürlich Port 80 und 443. Somit fällt das Problem des Port Mapping weg.
Seit dem schaffe ich es auch das erste mal, über die IPv6 LOKAL auf das Webinterface zuzugreifen. Für mich schon ein erster Erfolg. :slight_smile:

Der Übergang zum dynDNS ist für mich immer noch schwierig.

Wenn ich mir die Freigabe in der Fritzbox ansehe habe ich schon das erste Problem, das Netzwerkgerät wird von der FB mit IPv6 Adresse erkannt:

Wenn ich aber in die Freigabe für das Gerät gehe, sind keine IPv6 Informationen mehr da:

Und ohne diese Informationen kann ich natürlich keine IPv6 Freigabe erstellen.

Was ich schon probiert habe: Ich habe in das Interface die letzten 4 Gruppen der IPv4 von meinem NGINX Server eingetragen und versucht an die IP64.de Adresse weiterzugeben, das hat so noch nicht funktioniert.

Ich bin recht Glücklich, dass ich zumindest einen kleinen Schritt weiter bin, aber so richtig tuts noch nicht. Hättet ihr da noch einen Tipp für mich?

PS: Ob in dem Forum wirklich so wenig los ist, kann ich nicht beurteilen. Ich für meinen Teil bin sehr Dankbar, dass ihr da seit und einem Amateur wie mir mit Rat und Tat zur Seite steht :slight_smile:

  1. jetzt hast du ausgerechnet den ersten teil der IPv6-Adresse ausgeblendet. So kann man nicht sehen, ob es nur eine Link-Local ist
  2. aktiviere in deiner Fritte IA_PD und IA_NA
  3. sorge dann dafür, dass der Docker Container auf dem NAS eine neue IP-Adresse bezieht
  4. dann erneut prüfen ob Freigaben erstellt werden können

Hintergrund: Ich wies ja schon gestern darauf hin, dass kein SLAAC sondern DHCPv6 zu verwenden ist !!!

PS: noch ein Hinweis zur Anonymisierung von IPv6-Adressen. Eine IPv6-Adresse besteht aus dem Network Prefix (Präfix oder Netz-ID) und dem Interface Identifier (Suffix, IID oder EUI). Ohne IPv6-Privacy-Extensions kann man aus dem Interface Identifier die MAC-Adfresse des Netzwerk-Geräts ableiten. Also anonymisiere den Interface Identifier, nicht den Network Prefix. Der Network Prefix ändert sch ohnehin nach jeder Zwangstrennung durch den ISP.

Dazu eine kurze Rückfragen:
zu 1. Ich habe in dem Bild zur Freigabe gar nichts ausgeblendet. Der Bereich mit der IPv6 ist wirklich so leer. Ändert das was am Vorgehen?

Und danke für den Hinweis, was die Anonymisierung angeht.

Doch hast was ausgeblendet. Unterhalb von:

Zum Einlesen in die Ipv6-Welt: Elektronik-Kompendium: IPv6-Adressen

Ja, stimmt. Da hatte ich was weggelassen. Hatte gedacht, du hättest dich auf den Screenshot von der Freigabe bezogen. Deshalb die Nachfrage.

An dem anderen Thema bin ich noch dran. Scheinbar unterstützt NGINX selbst kein DHCP. Ich bin dem auf der Spur, ob ich das trotzdem hinbekomme.

Wozu auch!? NGINX ist eine Webserver-Software (wie der Apache auch), bzw. in deinem Fall ist es wohl eher (und präziser) der NGINX Proxy Manager oder NGINX Reverse Proxy.

Du suchst also (mal wieder) an der falschen Stelle. Das Betriebssystem auf dem du NGINX installiert hast muss einen DHCPv6-Client haben. Zudem muss dann das Betriebssystem deines Routers (also deiner Fritte) auch den DHCPv6-Server aktiviert haben.

Letzteres geht über die Aktivierung von IA_PD und IA_NA in deiner Fritte und sollte als erstes getan werden.

1 Like

Ja, du hast natürlich Recht….

Das mit der aktivierung von IA-PD und IA_NA hab ich schon längst gemacht.
Da ich grade etwas in Eile bin, hab ich es bisher einfach noch nicht geschafft, dass sich mein NGINX eine neue PIv6 zieht.
Ich kümmere mich wieder darum, wenn ich die Ruhe dafür habe und melde mich dann nochmal wenn es ich noch weitere Fragen habe.

Vielen Dank schonmal bis hierher. Ihr seid eine große Hilfe.

Ich bin es wieder.

Ich wollte das Thema nur nicht so luftleeren Raum enden lassen…

Ich habe mich die letzten Wochen sehr intensiv mit IPv6 beschäftigt und viel gelernt.

Dadurch habe ich auch eure Antworten und Einwände besser verstanden. Danke nochmal für das wertvolle Feedback. Hat mir sehr geholfen meinen Blick auf die richtigen Dinge zu richten.

Nach viel probieren und Verzweiflung habe ich mich entschlossen vorerst in dem sauren Apfel zu beißen und beim Provider eine IPv4 für 2,50€ pro Monat zu bestellten.

Langfristig habe ich aber vor mich mit dem Thema zu beschäftigen um auch mit nur IPv6 alles wie üblich benutzen zu können. Aber so kaufe ich mir erstmal Zeit.