Barungar
Well-known member
Hallo zusammen,
ich habe hin und wieder beobachtet, dass zwei spezielle Herausforderungen dem ein oder anderen Kopfschmerzen verursachen, wenn er zeitgemäß einen Dienst nicht nur per IPv4 sondern, sehr löblich, auch per IPv6 freigeben möchte. Das sind die "korrekte IPv6-Adresse" im AAAA-Record des DynDNS und der "DNS-Rebind-Schutz" in der FritzBox. Beides passiert, weil vom Anwender eventuell noch zu sehr in (ver-)al(te)ten IPv4-Gedankenmustern gedacht wird.
Ich möchte in diesem Dokument nicht auf die Risikien oder die Sinnhaftigkeit der Freigabe eines Dienstes von daheim eingehen. Dies liegt in der Eigenverantwortung eines jeden Anwenders selbst. Mein Fokus in diesem Dokument liegt ausschließlich auf der Technik hinter den beiden häufigen Fallstricken mit IPv6.
Beginnen wir daher einfach mal auf bekannten Teritorium. Der Freigabe eines Dienstes bei IPv4.
Das Vorgehen ist immer eine Variation des folgenden "Kochrezeptes":
Der DynDNS-"Client" läuft dabei in 99% der Fälle auf der FritzBox selbst. Sei es nun, dass man MyFritz! nutzt oder einen der anderen unter Internet -> Freigabe -> DynDNS angebotenen Dienste. Für IPv4 klappt das auch wunderbar, für IPv6 aber so nicht wirklich. Das Problem an dieser Stelle ist nämlich, dass in diesem Fall dem DynDNS-Anbieter die IPv4 und die IPv6 der FritzBox selbst mitgeteilt werden.
Das die falsche IPv6, nämlich die der FritzBox, im AAAA-Record für Euren Dienst steht, erkennt ihr typischer Weise an folgendem Fehler.
Wenn Ihr den seht, könnt ihr zeimlich sicher sein, dass der AAAA-Record auf die FritzBox und nicht auf den "Server" zeigt.
Was muss ich also tun, damit es dann auch bei IPv6 funktioniert?
Das IPv6-DNS-"Problem"
In Bezug auf das DynDNS muss man entweder den kompletten DynDNS-Anteil von der FritzBox weg auf das "Server"-System verlagern, oder aber zumindest wenigstens den IPv6-Teil. Im Fall von IPv6 macht die FritzBox nämlich keine Portweiterleitung, wie bei IPv4, sondern eine Portfreischaltung. Das heißt, die FritzBox lässt im Fall von IPv6 den konfigurierten Port für die öffentliche IPv6 des "Servers" zu und nicht, wie noch bei IPv4, für ihre eigene, öffentliche IPv4.
Beispiel:
Unser FritzBox hat vom Provider die IPv4 203.0.113.46 und das IPv6-Präfix 2001:db8:364d:96ae::/56 erhalten. Für sich selbst erzeugt die FritzBox die öffentliche IPv6 2001:db8:364d:96ae:35:564:9dea:734f auf Basis des Präfixes. Unser "Server" hat intern die IPv4 192.168.178.23 sowie die IPv6 2001:db8:364d:96ae::23 von uns erhalten. Ihr erkennt hier vielleicht schon direkt den Unterschied, die IPv4 unseres "Server" ist privat, die IPv6 aber öffentlich. Die "korrekten" DNS-Einträge für unseren Services lauten somit beim A-Record 203.0.113.46 und 2001:db8:364d:96ae::23 für den AAAA-Record. Wird unser Service nun unter TCP-Port 8080 angeboten, so erteilen wir der FritzBox folgenden Auftrag (ich umschreibe!): "Anfragen auf TCP-Port 8080 an die IPv4 203.0.113.46 leitest Du in das Heimnetz an den TCP-Port 8080 der privaten IP 192.168.127.23 weiter!" Bei IPv6 heißt der Arbeitsauftrag aber: "Anfragen auf TCP-Port 8080 an die IPv6 2001:db8:364d:96ae::23 sind okay, die darfst Du ins Heimnetz reinlassen."
Würde in unserem Beispiel das DynDNS komplett auf der FritzBox laufen, so würde die FritzBox an den DynDNS-Anbieter die falsche IPv6, nämlich die eigene, melden. Wenn Ihr das mit dem Arbeitsauftrag vergleicht, erkennt ihr, dass das nicht funktionieren kann. Bei IPv4 ist das egal, da hier ein andere Art von Auftrag vorliegt.
Fazit: Bei IPv6 muss der AAAA-Record stimmen, dass tut er nicht, wenn der DynDNS-Client zu 100% auf der FritzBox läuft.
Das IPv6-Rebind-Schutz-"Problem"
Wenn nun alles eingerichtet ist und der Aufruf des eigenen Dienstes aus dem Internet per IPv6 (über den Namen) funktioniert, stellt man eventuell fest, dass es am eigenen Client nicht funktioniert. Hier schlägt dann der DNS-Rebind-Schutz der FritzBox zu. Diese Funktion der FritzBox verhindert es, dass aus öffentlichen DNS-Quellen Antworten an Euch weitergeleitet werden, deren IP-Angabe auf eine interne IP im Heimnetz zeigt. Bei IPv4 ist diese Situation eher nicht zu erwarten und wenn, dann ist sie in vielen Fällen tendenziell böswillig. Daher auch dieser Schutzmechnismus.
Bei IPv6 und der abweichenden Archtitektur hingegen ist diese Situation nicht unüblich. Im DNS AAAA-Record für unser "Server" steht ja wirklich seine öffentliche IPv6 drin und diese befindet sich auch tatsächlich in unserem Heimnetz. Es sind also alle Bedingungen erfüllt, damit der DNS-Rebind-Schutz aktiv wird.
Unter Heimnetz -> Netzwerk -> Netzwerkeinstellungen findet ihr ein Eingabefeld für den DNS-Rebindschutz. Hier tragt ihr den korrekten Namen (FQDN) Eures Dienstes ein. Anschließend lässt die FritzBox auf DNS-Anfragen für diesen Namen zu, selbst wenn sie eine IP aus dem Heimnetz liefern.
Viel Spaß!
ich habe hin und wieder beobachtet, dass zwei spezielle Herausforderungen dem ein oder anderen Kopfschmerzen verursachen, wenn er zeitgemäß einen Dienst nicht nur per IPv4 sondern, sehr löblich, auch per IPv6 freigeben möchte. Das sind die "korrekte IPv6-Adresse" im AAAA-Record des DynDNS und der "DNS-Rebind-Schutz" in der FritzBox. Beides passiert, weil vom Anwender eventuell noch zu sehr in (ver-)al(te)ten IPv4-Gedankenmustern gedacht wird.
Ich möchte in diesem Dokument nicht auf die Risikien oder die Sinnhaftigkeit der Freigabe eines Dienstes von daheim eingehen. Dies liegt in der Eigenverantwortung eines jeden Anwenders selbst. Mein Fokus in diesem Dokument liegt ausschließlich auf der Technik hinter den beiden häufigen Fallstricken mit IPv6.
Beginnen wir daher einfach mal auf bekannten Teritorium. Der Freigabe eines Dienstes bei IPv4.
Das Vorgehen ist immer eine Variation des folgenden "Kochrezeptes":
- DynDNS einrichten (oder eventuell DNS, wenn man eine statische IPv4 hat)
- TCP- und/oder UDP-Portweiterleitungen in der Firewall (in der FritzBox) freigeben
Der DynDNS-"Client" läuft dabei in 99% der Fälle auf der FritzBox selbst. Sei es nun, dass man MyFritz! nutzt oder einen der anderen unter Internet -> Freigabe -> DynDNS angebotenen Dienste. Für IPv4 klappt das auch wunderbar, für IPv6 aber so nicht wirklich. Das Problem an dieser Stelle ist nämlich, dass in diesem Fall dem DynDNS-Anbieter die IPv4 und die IPv6 der FritzBox selbst mitgeteilt werden.
Das die falsche IPv6, nämlich die der FritzBox, im AAAA-Record für Euren Dienst steht, erkennt ihr typischer Weise an folgendem Fehler.
Wenn Ihr den seht, könnt ihr zeimlich sicher sein, dass der AAAA-Record auf die FritzBox und nicht auf den "Server" zeigt.
Was muss ich also tun, damit es dann auch bei IPv6 funktioniert?
Das IPv6-DNS-"Problem"
In Bezug auf das DynDNS muss man entweder den kompletten DynDNS-Anteil von der FritzBox weg auf das "Server"-System verlagern, oder aber zumindest wenigstens den IPv6-Teil. Im Fall von IPv6 macht die FritzBox nämlich keine Portweiterleitung, wie bei IPv4, sondern eine Portfreischaltung. Das heißt, die FritzBox lässt im Fall von IPv6 den konfigurierten Port für die öffentliche IPv6 des "Servers" zu und nicht, wie noch bei IPv4, für ihre eigene, öffentliche IPv4.
Beispiel:
Unser FritzBox hat vom Provider die IPv4 203.0.113.46 und das IPv6-Präfix 2001:db8:364d:96ae::/56 erhalten. Für sich selbst erzeugt die FritzBox die öffentliche IPv6 2001:db8:364d:96ae:35:564:9dea:734f auf Basis des Präfixes. Unser "Server" hat intern die IPv4 192.168.178.23 sowie die IPv6 2001:db8:364d:96ae::23 von uns erhalten. Ihr erkennt hier vielleicht schon direkt den Unterschied, die IPv4 unseres "Server" ist privat, die IPv6 aber öffentlich. Die "korrekten" DNS-Einträge für unseren Services lauten somit beim A-Record 203.0.113.46 und 2001:db8:364d:96ae::23 für den AAAA-Record. Wird unser Service nun unter TCP-Port 8080 angeboten, so erteilen wir der FritzBox folgenden Auftrag (ich umschreibe!): "Anfragen auf TCP-Port 8080 an die IPv4 203.0.113.46 leitest Du in das Heimnetz an den TCP-Port 8080 der privaten IP 192.168.127.23 weiter!" Bei IPv6 heißt der Arbeitsauftrag aber: "Anfragen auf TCP-Port 8080 an die IPv6 2001:db8:364d:96ae::23 sind okay, die darfst Du ins Heimnetz reinlassen."
Würde in unserem Beispiel das DynDNS komplett auf der FritzBox laufen, so würde die FritzBox an den DynDNS-Anbieter die falsche IPv6, nämlich die eigene, melden. Wenn Ihr das mit dem Arbeitsauftrag vergleicht, erkennt ihr, dass das nicht funktionieren kann. Bei IPv4 ist das egal, da hier ein andere Art von Auftrag vorliegt.
Fazit: Bei IPv6 muss der AAAA-Record stimmen, dass tut er nicht, wenn der DynDNS-Client zu 100% auf der FritzBox läuft.
Das IPv6-Rebind-Schutz-"Problem"
Wenn nun alles eingerichtet ist und der Aufruf des eigenen Dienstes aus dem Internet per IPv6 (über den Namen) funktioniert, stellt man eventuell fest, dass es am eigenen Client nicht funktioniert. Hier schlägt dann der DNS-Rebind-Schutz der FritzBox zu. Diese Funktion der FritzBox verhindert es, dass aus öffentlichen DNS-Quellen Antworten an Euch weitergeleitet werden, deren IP-Angabe auf eine interne IP im Heimnetz zeigt. Bei IPv4 ist diese Situation eher nicht zu erwarten und wenn, dann ist sie in vielen Fällen tendenziell böswillig. Daher auch dieser Schutzmechnismus.
Bei IPv6 und der abweichenden Archtitektur hingegen ist diese Situation nicht unüblich. Im DNS AAAA-Record für unser "Server" steht ja wirklich seine öffentliche IPv6 drin und diese befindet sich auch tatsächlich in unserem Heimnetz. Es sind also alle Bedingungen erfüllt, damit der DNS-Rebind-Schutz aktiv wird.
Unter Heimnetz -> Netzwerk -> Netzwerkeinstellungen findet ihr ein Eingabefeld für den DNS-Rebindschutz. Hier tragt ihr den korrekten Namen (FQDN) Eures Dienstes ein. Anschließend lässt die FritzBox auf DNS-Anfragen für diesen Namen zu, selbst wenn sie eine IP aus dem Heimnetz liefern.
Viel Spaß!