Problemstellung
Vor ein paar Tagen hat sich mir ein etwas komplexeres Problem gestellt. Ausgangspunkt war mein Vorhaben eine private Cloud im heimischen Netzwerk zu betreiben. Diese sollte natürlich auch von außerhalb erreichbar sein, sodass etwaige Clienten mit dem Server von überall kommunizieren können und die entsprechenden Daten synchronisieren. In der Folge habe ich mich für den Owncloud Fork Nextcloud entschieden, da dieser neben einer recht einfach zu konfigurierenden Weboberfläche auch einen entsprechenden Syncingclient mitbringt. Nach dem Aufsetzen des Servers und dem Einrichten einer DDNS Adresse funktionierte auch alles soweit reibungslos. In den Nextclound Client habe ich sodann die vorher erstellte und eingerichtete DDNS Adresse eingetragen und schaute mir dann den Syncroniesierungsprozess an. Dabei ist mir aufgefallen, dass die Up- und Downloadgeschwindigkeiten zu gering waren. Ich selbst hatte mich ja ebenso wie der Server in der internenen Netzwerkumgebung befunden. Ich bin also davon ausgegangen, dass der Client trotz Eingabe der DDNS Adresse erkennt, dass diese letztendlich auf eine lokale IP im Netzwerk leitet. So ist es auch im Ergebnis. Allerdings muss die Anfrage dafür zunächst über den NAT Port meines Routers und gelangt erst anschließend „zurück“ zum Server in das interne Netzwerk. Da die Fritzbox die GBit Geschwindigkeit nicht verkraftet brechen in der Folge die Up- und Downloadraten ein.
Lösungsansätze
Was also tun? Nachdem ich das Problem identifiziert hatte, vielen mir insgesamt vier mögliche Lösungswege ein. Ich hätte natürlich immer die lokale IP Adresse nutzen können und wäre dem Problem somit aus dem Weg gegangen. Doof ist dies jedoch insbesondere für den betriebenen Syncingclienten. Dieser erfordert bei seiner ersten Einrichtung ja eine Adresse. Da ich auch gerne von außerhalb meine Daten auf dem aktuellen Stand haben wollte, hätte ich in jedem Fall die DDNS Adresse gewählt. Dann aber hätte sich abermals das Problem gezeigt. Ein Teufelskreis.
Die zweite und ernsthaftere Lösung wäre die Anpassung der lokalen Hostsdateien meiner verwendeten Geräte gewesen. Über die Anpassung der Hostsdatei hätte ich dem Laptop vorgaukeln können, dass sich hinter der DDNS Adresse meine lokale IP Adresse und nicht etwa meine vom Provider ausgegebene und erst im Netzwerk aufgelöste Serveradresse befindet. Allerdings empfand ich diese Lösung als nicht sehr elegant.
Die dritte Variante war schließlich ein Eingriff in der Fritzbox (mein Router). Auf einem Blog hatte ich auch eine Anleitung für einen Hack gefunden der ein so genanntes NAT-Loopback im Router über die interne LAN IP bei Verwendung der DDNS Adresse ermöglichen sollte. Allerdings hatte AVM die Möglichkeit seit Firmware 6.50 herausgepatched.
Somit verblieb nur noch eine Möglichkeit mein Vorhaben in die Tat umzusetzen. Durch einen eigenen DNS Server im Netzwerk lässt sich die Idee mit den Hostsdateien global im DNS Server lösen. Diesem muss damit nur für die entsprechende DDNS Adresse mitgeteilt werden, sodass er bei Aufruf auf die interne LAN IP des Server zugreifen soll. Alle anderen Anfragen sollen hingegen ganz normal aufgelöst werden. Damit wäre gewährleistet, dass ich auch außerhalb meiner Netzwerkumgebung meine Daten über die DDNS Adresse synchronisieren kann. Im Heimnetzwerk allerdings mit voller Geschwindigkeit.
Da meine Cloud auf einem Synology System läuft und dieses die Möglichkeit vorsieht einen DNS Server zu betreiben, zeige ich im vorliegenden wie ihr euren DNS Server konfigurieren müsst, damit ein interner NAT-Loopback mit externer Adresse funktioniert. Wer bis hierhin denkt, dass ich das Problem auch über die Umgehung des DNS-Rebind-Schutzes der Fritzbox lösen kann, der irrt leider. Die Aufnahme der DDNS Domain ermöglicht es lediglich, eine Verbindung im internen Netz zum Server herzustellen. Über den NAT Port müssen die Daten trotzdem.
[envira-gallery id=“386″]
Vorbereitung Synology Diskstation und DNS Server
Zunächst installieren wir auf der Diskstation den DNS Server. Haben wir diesen installiert starten wir die App. Nun erstellen wir zunächst eine Masterzone. Dazu gehen wir im obigen Reiter auf Erstellen und wählen Master Zone aus. Diese richten wir sodann als Reverse Zone ein und tragen dafür unsere IP Adresse zum NAS in umgekehrter Reihenfolge ohne Endnummer als Domainnamen ein. Dies sollte dann etwa so aussehen: 178.168.192
Ist die Masterzone erstellt gelangen wir durch einen Doppelklick auf sie in ein weiteres Fenster. Dort erstellen wir einen NS Type Eintrag bei dem wir den Namen frei lassen und als Host/Domäne ns.unseredomäne.de eintragen. Sodann erstellen wir noch einen zweiten Eintrag. Dieser muss ein PTR Eintrag sein. Diesmal vergeben wir die im Netzwerk zugewiesene IP Adresse unseres Server als Namen. Wenn euer Server also unter 192.168.178.100 zu erreichen ist, sollte der Name „100“ sein. Als Host/Domäne tragen wir unsere vollständige DDNS Adresse ein. Also diejenige Adresse unter der wir unseren Server später erreichen wollen. Wir bestätigen unsere Angaben und Speichern.
Nun erstellen wir die zweite Master Zone. Diese jedoch als Forward-Zone. Dort tragen wir nun den Domainnamen ein und bestätigen. Ist die Masterzone erstellt gelangen wir durch einen Doppelklick auf sie in ein weiteres Fenster In diesem befindet sich bereits ein Eintrag. Wir ergänzen zwei weitere Ressourceneinträge, indem wir unter „Erstellen“ insgesamt zwei A-Type eintrage anlegen. Beim anlegen der beiden Einträge verwenden wir nun für den ersten unsere vollständige DDNS Adresse und geben zusätzlich unsere interne IP Adresse an. Für den zweiten A-Type Eintrag tragen wir wie bereits oben ns.unseredomäne.de ein. Auch diesen Eintrag leiten wir auf unsere interne IP Adresse weiter indem wir diese dort eintragen.
Nachdem wir alles bestätigt haben checken wir die Funktionalität unseres DNS Servers indem uns das Protokoll des DNS Servers ansehen. Sofern alles funktioniert sollte dort „all Zonen loaded“ und „running“ erscheinen. Ist dies der Fall müssen wir nun noch dafür sorgen, dass der DNS Server alle anderen Adressen „richtig“ auflöst. Dazu gehen wir auf den Reiter „Auflösung“ und aktivieren den Auflösungsdienst. Ebenso aktivieren wir den Forwarder und tragen in den Forwarder 1: 8.8.8.8 und in den Forwarder 2: 8.8.4.4 ein (Google Server). Anschließend bestätigen wir das Ganze.
Einstellungen Fritzbox
Zum Schluss müssen wir in der Fritzbox noch den neuen DNS Server auswählen. Dazu rufen wir die Oberfläche der Fritzbox auf und navigieren über „Internet -> Zugangsdaten -> DNS Server“ zur Einstellung für den DNS Server. Dort tragen wir dann in beide Reihen die interne IP Adresse unseres NAS ein.
Um zu überprüfen, ob alles funktioniert, könnt ihr das Terminal oder die Konsole öffnen und über Ping meinedomain.de nachvollziehen, ob die Anfrage an eure DDNS Adresse direkt über die interne Lan IP aufgelöst wird. Ist dies der Fall habt ihr alles richtig gemacht.