Synology-NAS: IPv6 für eine mit nftables handgemachte DMZ

ClausT

New member
Hallo zusammen,

das Ganze basiert auf einem Artikel in einer c't im Herbst 2024.
Dort wird beschrieben, wie man in einer DS mit einer VM eine DMZ für IPv4 einrichten kann.
Das habe ich gelesen und gedacht: prima - das will ich für unsere Familien-NextCloud auch haben.
Ich habe das also für unseren NextCloudPi-Server eingerichtet und es lief seitdem einwandfrei.

Dann gab es ein Problem mit unserem Vodafone-Kabel-Anschluss.
VF hat bei uns wohl zu viele Kunden an den Knoten gehängt.
Das hat dazu geführt, dass regelmäßig abends der Upload massiv eingebrochen ist.
Am Ende mussten wir VF dann mit Hilfe des Amtsgerichts davon überzeugen, dass die Zahlung von Schadenersatz doch angemessen ist.
Das wiederum hat Bewegung in die Sache gebracht und uns in höhere Ebenen des Kundensupports befördert.
Dort ging dann plötzlich alles Mögliche, z.B. die Vertragsfortführung zu Neukundenkonditionen bis zur Behebung des Problems.
Im Zuge dieser Vertragsumstellung ist dann FullStack geschaltet worden - vorher hatten wir IPv4-only.

Und damit kommen wir langsam zum Problem.
NC hat natürlich ein LetsEncrypt-Zertifikat, dass ja alle 3 Monate erneuert werden muss.
Dazu muss der LE-Server über Port 80 Kontakt aufnehmen können.
Also fragt er nach der IP-Adresse von myfritz.xyz.de, unter der unsere NC erreichbar ist.
Das ist ein CNAME, der mit xyz.myfritz.net verknüpft ist.
Darüber bekommt LE die IP-Adresse von unserer FritzBox, und zwar wegen FullStack zuerst die IPv6.
Damit versucht LE dann die Kontaktaufnahme und scheitert, weil die Firewall in dem Soft-Router nur IPv4 durchlässt.
Leider gibt LE dann sofort auf, ohne es auch mit der IPv4 zu versuchen.

Meine Umgehung ist zur Zeit deshalb, alle 3 Monate zur Erneuerung des LE-Zertifikats in der Fritte das externe IPv6 kurz abzuschalten.
Das ist ja aber auf Dauer keine wirkliche Lösung.

Frage deshalb: Hat hier jemand die DMZ aus dem c't-Artikel unter IPv6 am Start und die passenden Zeilen für die /etc/nftables.conf für mich?
IPv6 ist für mich immer noch Neuland, aber das wäre ein angemessener Anlass, mich einmal mit dem Thema zu beschäftigen.
Ansonsten brauchen wir weiter auch IPv4, weil wir hier in der FeWo, in der wir gerade sind, nur IPv4 haben.
Aber das ist ein anderes Thema.

Gruß
Claus
 
Lösung ist ganz einfach... Leg eine MyFritz-Freigabe für die NextCloud an, bieg Deinen CNAME auf die MyFritz-Freigabe der Nextcloud um. Und fertig... achja, das IPv6 musst Du in der Firewal für den NextCloud auch noch freigeben.

Die MyFritz-Freigabe sorgt dafür, dass die korrekte IPv6 und die IPv4 im A/AAAA-Record landet, und der CNAME sorgt weiterhin für das schöne Aussehen.
 
achja, das IPv6 musst Du in der Firewal für den NextCloud auch noch freigeben.
Ähm, genau das ist ja das Problem.
Die Firewall kann zur Zeit nur IPv4 und soll IPv6 lernen.
Und das geht am Einfachsten mit einer Kopiervorlage für die /etc/nftables.conf

Ich habe den Autor des c't-Artikels schon angemailt mit dem Vorschlag, mal ein Update des Artikels für IPv6 an den Start zu bringen.
Bisher keine Reaktion.

Gruß
Claus
 
Ich habe den Autor des c't-Artikels schon angemailt mit dem Vorschlag, mal ein Update des Artikels für IPv6 an den Start zu bringen.
Das wird deutlich schwieriger, weil IPv6 nicht von der FritzBox per NAT "maskiert" wird.
Sprich Du kannst Deine Firewall "hinter" der FritzBox bequem statisch konfigurieren, weil sich aus ihrer Sicht die IPv4 (die sie von der FritzBox erhält) niemals ändert. Die dynamische IPv4 Änderung "fängt" die FritzBox ab.

Bei IPv6 NATtet die FritzBox aber nicht, sondern sie routet! Das heißt, jede dynamische IPv6-Adressänderung schlägt auf Deine Firewall durch, und würde jedes mal eine Überarbeitung der Regeln beinhalten. Da dürfte vermutlich auch der Grund sein, weshalb der Autor im Jahr 2024 nicht darauf eingegangen ist. Das wird für den "Laien" (also jemand der einem How-to-Artikel folgt) schlicht weg zu komplex werden.

Selbst ich hätte darauf keine Lust, daher habe ich mir schon vor Jahren für mein Heimnetz statische IPv4 und IPv6 Adressen besorgt, bietet im Prinzip jeder Provider gegen einen kleinen Aufpreis. Aber das war es mir wert, bevor ich anfange irgendwas mit sich ändernden Adresse zu frickeln.

Und sorry, ich hatte beim ersten Überfliegen Deines ursprünglichen Posts nur angenommen, dass Du erstmal "nur" das Let's Encrypt Issue lösen willst.
 
Moinsen,
tja, dann...
a) wie oben gesagt: wenn das Problem nur wegen der LE Zertifikatserneuerung ist...andere challenge einrichten, dann muss für LE gar nix im LAN mehr geöffnet werden.
b) andere Firewall nutzen, die ggf. für das eine Interface (mit der DMZ) IPv6 deaktivieren kann.
c) keine wirkliche Lösung, aber quick and dirty: IPv6 im Router ausschalten (so das Modell das erlaubt), damit auf dualstack verzichten und weiter mit IPv4 only machen.
d) auf die Antworten in dem anderen Forum warten, wo du die Frage ja auch gestellt hast :P
 
Dann schauen wir doch mal, ob ich das richtig verstanden habe.

Unsere Tochter möchte z.B. eine Datei auf dem NextCloud-Server ablegen.
Dazu gibt sie myfritz.xyz.de in ihren Browser ein.
Der fragt nach der oder genauer den IP-Adressen.
myfritz.xyz.de ist beim Hoster per CNAME mit xyz.myfritz.net verknüpft und zeigt auf unsere Fritte zu Hause.
Also schickt der Browser seine Pakete zu Port 80 dorthin - 443 lassen wir jetzt mal außen vor.
Bis hierhin ist es egal, ob IPv4 oder IPv6.

Zuerst IPv4:
Die Fritte hat eine dort so bezeichnete Portfreigabe für TCP Port 80 zu einem Host, der ihr nur als IP-Adresse bekannt ist.
Der Host befindet sich ja hinter dem Soft-Router in einem eigenen von diesem verwalteten Subnetz - die DMZ.
Und sie hat einen Routing-Eintrag zu diesem Soft-Router für alle Pakete für das Subnetz der DMZ.
Also schickt er die Pakete an die IP aus dem Routing-Eintrag.
Dort im Soft-Router kümmert sich nftables um die eingehenden Pakete.
Und da gibt es eine Regel, die alle Pakete aus dem LAN-Interface mit Ziel DMZ-Interface stumpf an dieses weiter leitet.
Dort wartet der NC-Server auf TCP-Pakete für Port 80 und kümmert sich darum.
Zwischendurch gibt es ein paar Mal NAT, aber es funktioniert sehr zuverlässig.

Jetzt IPv6:
Eigentlich ist es doch bis auf eine Abweichung dasselbe Procedere.
Die Abweichung liegt darin, dass der Präfix der IP-Adresse des NC-Servers dynamisch ist.
Wobei dynamisch bei einem VF-Kabelanschluss sehr relativ ist.
Darum müssten für mein Verständnis nur zwei Dinge funktionieren:
Im DHCP-Server im dnsmasq des Soft-Routers darf für feste IPv6-Adressen nur der lokale Teil definiert werden.
Der Präfix muss von der Fritte kommen und bei einer Änderung auch übernommen werden.
Beim Ablauf der Lease bekommt dann der Host seine neue IPv6.
Und bei der Fritte sollte für die Portfreigabe auch nur der lokale Teil definiert werden müssen.
Um den Präfix muss sich die Fritte kümmern und bei einer Änderung die Portfreigabe dynamisch mit ändern.
Damit sollte alles so funktionieren wie bisher.

Das darf ich mir in den nächsten Tagen dann wohl mal genauer ansehen.

Gruß
Claus
 
myfritz.xyz.de ist beim Hoster per CNAME mit xyz.myfritz.net verknüpft und zeigt auf unsere Fritte zu Hause.
Also schickt der Browser seine Pakete zu Port 80 dorthin - 443 lassen wir jetzt mal außen vor.
Bis hierhin ist es egal, ob IPv4 oder IPv6.
Falsch... bishier hin schon korrekt. Denn mit den IPv6 Paketen könnte die FritzBox gar nichts anfangen, weil sie nicht für sie sind.
Daher hatte ich Dir bereits in einem vorhergehenden Post geschrieben, dass Du eine MyFritz-Freigabe auf die NextCloud anlegen sollst, und anschließend Deinen CNAME auf die MyFritz-Freigabe änderst, so kommen nämlich dann auch die IPv6-Pakete bei der NextCloud an, wenn Du die Freigabe in der FritzBox für IPv6 machst.

Zuerst IPv4:
Die Fritte hat eine dort so bezeichnete Portfreigabe für TCP Port 80 zu einem Host, der ihr nur als IP-Adresse bekannt ist.
Selbst wenn es Fritz "Portfreigabe" nennt, was Du da in Wirklichkeit hast ist eine Portweiterleitung... das ist ein Unterschied.
Eine Portfreigabe hättest Du bei IPv6, nicht bei IPv4... Dort hast Du eine Portweiterleitung von Port 80 der FritzBox an einen beliebigen Port einer beliebigen IP (v4) im dahinterliegenden Netz.
Bei IPv6 hast Du eine "echte" Protfreigabe, da sagst Du der FritzBox nämlich, wenn da Port 80 für IPv6-Adresse kommt, dann lass durch, es ist "freigegeben".

Also schickt er die Pakete an die IP aus dem Routing-Eintrag.
Auch falsch... Die FritzBox routet nicht, sie NATtet. Und sie schickt alle IP-Pakete an das NAT-Weiterleitungsziel. Beim Routen werden die Adress-Informationen nicht manipuliert!

Im DHCP-Server im dnsmasq des Soft-Routers darf für feste IPv6-Adressen nur der lokale Teil definiert werden.
Der Präfix muss von der Fritte kommen und bei einer Änderung auch übernommen werden.
Genau das passiert auch, wenn Du Deinen nachgelagerten DHCPv6-Server richtig konfiguiert hast. Der nachgelagerte DHCPv6-Server fragt dann mittels DHCPv6 IA_PD beim übergeordneten DHCPv6-Server (der Fritzbox) nach einem Präfix, dass er verteilen soll/darf.

Und bei der Fritte sollte für die Portfreigabe auch nur der lokale Teil definiert werden müssen.
Genau so ist es auch, die FritzBox entscheidet in Bezug auf IPv6-Freigaben aus Basis der Host-Anteils der IPv6 und ergänzt das passende Präfix selbstständig.

Das Löst aber alles noch nicht Dein DNS-Problem, daher siehe MyFritz-Freigabe.
 
Selbst wenn es Fritz "Portfreigabe" nennt, was Du da in Wirklichkeit hast ist eine Portweiterleitung... das ist ein Unterschied.
Eine Portfreigabe hättest Du bei IPv6, nicht bei IPv4... Dort hast Du eine Portweiterleitung von Port 80 der FritzBox an einen beliebigen Port einer beliebigen IP (v4) im dahinterliegenden Netz.
Bei IPv6 hast Du eine "echte" Protfreigabe, da sagst Du der FritzBox nämlich, wenn da Port 80 für IPv6-Adresse kommt, dann lass durch, es ist "freigegeben".
Vielleicht sollte man es einfach in die 2 Dinge aufdröseln, die es wirklich sind:

Für IPv4 gilt:
1) DNAT (Destination-NAT / Ziel-NAT) = Umschreibung der Ziel-IP bei eingehenden Paketen (+ggf. Port) auf eine interne Adresse
2) Firewall-Regel = Bestimmten initial eingehenden Datenverkehr erlauben

Für IPv6 gilt:
1) Gibt es so erstmal nicht bzw. ist für Dich nicht relevant
2) Firewall-Regel = Bestimmten initial eingehenden Datenverkehr erlauben

Während es bei IPv4 eine Verkettung von Dingen ist, ist es bei IPv6 halt nur die Firewall.

Wo das DNAT erwähnt wurde, so gilt es auch für das SNAT (Source-NAT / Quell-NAT), wobei hier die Quell-IP umgeschrieben wird. Für IPv4 bei privaten Adressen "zwingend" erforderlich (da private Adressbereiche im Internet nicht weitergeleitet werden), entfällt das ganze jedoch bei IPv6 weil sowieso jeder Host seine eigene "öffentliche" Adresse bekommt.

Was das DynDNS-Thema angeht, so wäre es am einfachsten wie @Barungar es schon beschrieben hat. Der FQDN ist dann sicherlich nicht "hübsch", aber dafür kannst Du bei Deiner DNS-Verwaltung ja auch einfach einen CNAME-Record setzenk, wie @Barungar das auch schon geschrieben hatte :)
 
Denn mit den IPv6 Paketen könnte die FritzBox gar nichts anfangen, weil sie nicht für sie sind.
Stimmt.
Aber für mich fängt alles erstmal damit an, IPv6-DHCP bis zum Host in der DMZ an den Start zu bekommen.
Danach kann ich mich um die Firewall und den CNAME kümmern.
Dazu habe ich ja noch den RustDesk-Server zum Rumspielen.
Der ist pures Debian 13 und wird nicht so oft benötigt.
Und wenn ich was kaputt mache: Es ist eine VM und ich habe Snapshots...

Danke schonmal und Gruß
Claus
 

Letzte Anleitungen

Statistik des Forums

Themen
8.369
Beiträge
83.502
Mitglieder
9.112
Neuestes Mitglied
Riddimno1
Zurück
Oben