Namecheap.com DDNS in Synology DSM einrichten

namecheap ddns synology dsm 300x157 Namecheap.com DDNS in Synology DSM einrichten

Im heutigen Artikel soll es darum gehen, wie man Domains von Namecheap.com über die Synology DSM Funktion DDNS (Dynamic DNS) aktualisieren kann. Da Namecheap.com weder als Provider hinterlegt ist, noch die ehemals gängigen Vermittler-Dienste funktionieren, gelingt dies nur mit einem kleinen Workaround. Und genau diesen möchte ich euch heute gerne zeigen.

Die folgenden Dinge benötigt ihr für das heutige Tutorial:

  • Eine Domain bei Namecheap.com
  • Ein Synology NAS (oder ein Eigenbau NAS mit XPEnology)
  • Einen Webserver mit PHP-Unterstützung

Im nächsten Absatz umreißen wir noch einmal das eigentliche Problem. Wer nur an der Lösung interessiert ist, kann den folgenden Absatz überspringen…

Was ist das Problem mit Synology DSN und Namecheap?

Namecheap bietet eine Url/einen Webservice an, den man aufrufen kann um eine DNS-Eintrag mit einer im Aufruf übergebenen IP zu setzen. Soweit nichts besonderes. Synology DSM wiederum bietet im Menü “Externer Zugriff -> DDNS” die Möglichkeit eben solche Webservices anzubinden. Hierzu stellt Synolgy zum einen eine Liste vordefinierter Services als auch die Möglichkeit, eigene Services/Anbieter zu konfigurieren. Was ist nun die Krux an der Sache?

Namecheap.com gehört weder zu den vordefinierten Services, noch gelingt das Update über die Einrichtung eines benutzerdefinierten Services. Das liegt daran, dass Synology zwar die Möglichkeit bietet, eigene Serviceanbieter zu hinterlegen, jedoch erwartet, dass diese bei erfolgtem Update oder Fehler mit bestimmten Nachrichten antworten. Und genau dies macht Namecheap.com nicht. Die Antworten vom Namecheap Updatedienst entsprechen nicht den Werten, die Synology erwartet. Ergebnis? Synology zeigt an, dass das DNS-Update nicht erfolgreich war und hinterlässt etliche Fehlermeldungen im Benachrichtigungs Service…

Namecheap DDNS Updates – die Lösung

Um das Dilemma zu lösen, schalten wir ein kleines PHP-Script zwischen Synology DSM und Namecheap.com-DynDNS Service. Das PHP-Script nimmt die DNS-Updates von Synology entgegen, leitet sie an Namecheap.com, erhält die Antwort von Namecheap, übersetzt die Antwort in ein Format das Synology DSM versteht und schickt die Antwort an Synology zurück.

Schritt 1 – Das PHP-Script

Zuerst müsst ihr das folgende PHP-Script auf einem beliebigen Webserver ablegen. Wichtig sind hierbei nur zwei Dinge. Der Webserver muss von eurem Synology-System aus erreichbar sein und der Webserver muss den Namecheap.com-Service (ergo das Internet) erreichen können. Ob ihr nun einen kostenfreien, einen bezahlten, einen Cloud- oder lokal gehosteten Webserver nehmt ist dann egal.

<?php
try {
        $url = 'https://dynamicdns.park-your-domain.com/update?host='.$_GET['host'].'&domain='.$_GET['domain'].'&password='.$_GET['password'].'&ip='.$_GET['ip'];
        $req = curl_init();
        curl_setopt($req, CURLOPT_URL, $url);
        curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: text/xml'));
        $res = curl_exec($req);
        curl_close($req);
        $xml = new SimpleXMLElement(trim(str_replace("encoding=\"utf-16\"","",$res)));
        if ($xml->ErrCount > 0) {
                $error = $xml->errors[0]->Err1;
                if (strcmp($error, "Domain name not found") === 0) {
                        echo "nohost";
                } elseif (strcmp($error, "Passwords do not match") === 0) {
                        echo "badauth";
                } elseif (strcmp($error, "No Records updated. A record not Found;") === 0) {
                        echo "nohost";
                } else {
                   echo "911 [".$error."]";
                }
        } else {
                echo "good";
        }
} catch (Exception $e) {
    echo "911 [".$e->getMessage()."]";
}

Um die folgenden Schritte verständlicher zu machen, gehen wir davon aus, dass wir das Script unter dem Namen dns-proxy.php angelegt haben und dass das Script über https://mein-server.de/dns-proxy.php erreichbar ist.

Schritt 2 – DynDNS auf Namecheap.com aktivieren

Falls noch nicht geschehen, müsst ihr nun die DynDNS-Funktion auf Namecheap für die gewünschte Zieldomain aktivieren. Hierzu loggt ihr euch bei Namecheap.com ein, geht auf “Domain List”, wählt die Domain aus (für unser Beispiel “my-domain.com”), klickt auf “Manage” und dann auf “Advanced DNS”.

A-Record in Namecheap.com setzen

Hier legen wir nun eine Subdomain an. Für mein Beispiel nenne ich sie “homebase”, setze den Typ auf A-Record und die IP auf 0.0.0.0. (Hauptsache es steht eine IP drin. Diese wird ja später sowieso mit unserer dynamischen IP überschrieben.) Durch den Eintrag können wird später die Domain “homebase.my-domain.com” auf die IP-Adresse des Synology zeigen.

Namecheap activate ddns dyndns service 1024x173 Namecheap.com DDNS in Synology DSM einrichten

Als zweites müssen wir noch den DDNS-Service aktivieren. Dies geht im gleichen Menübereich am unteren Ende der Seite. Haken, wie im Screenshot gezeigt aktivieren und dann das DynDNS Passwort aufschreiben/merken/kopieren.

Schritt 3 – Namecheap in Synology DDNS eintragen

Nun müssen wir nur noch den Aufruf unseren PHP-Scripts im Synology DSM hinterlegt. Hierzu loggen wir uns im DSM ein, öffnen die Systemsteuerung und wechseln in den Bereich “Externer Zugriff” und dort auf den Reiter “DDNS”.

Synology DSM Namecheap DDNS 1024x198 Namecheap.com DDNS in Synology DSM einrichten

Dort klicken wir nun auf “Anbieter anpassen” um unser PHP-Script als neuen Anbieter hinzuzufügen. Wir nennen den Anbieter “Namecheap” und hinterlegen folgende Url. (Wobei ihr natürlich das “mein-server.de/dns-proxy.php” durch den Namen eures Webservers und eures Scripts ersetzt.)

Synology DSM Custom DDNS configuration Namecheap.com DDNS in Synology DSM einrichten

http://mein-server.de/dns-proxy.php?host=__USERNAME__&domain=__HOSTNAME__&password=__PASSWORD__&ip=__MYIP__

Anschließend speichert ihr den Anbieter ab und klickt auf Hinzufügen. Hier wählt ihr nun als Anbieter “*Namecheap” aus. (Das * kennzeichnet selbst erstellte Anbieter) und hinterlegt die Daten wie im folgenden Screenshot gezeigt.

Synology DSM custom ddns usage namecheap Namecheap.com DDNS in Synology DSM einrichten

Als Host tragt ihr eure Namecheap Domain ein. Als Username die Subdomain und als Passwort das Namecheap.com-DynDNS Passwort, welches ihr in Schritt 2 erstellt habt.

Nun noch einmal “Verbindung testen” klicken, sicher über ein positives Ergebnis freuen und die Konfiguration abspeichern. Das war’s schon! Sollten noch Fragen offen sein, schreibt mir gerne einen Kommentar hier im Blog…

4 Kommentare

  1. Stefan Webersays:

    Wenn man die QUery Url unter dem Bild rein kopiert und dann den Pfad ändert wo das Script liegt, dann geht es wunderbar.
    Danke dir für das Script
    Mein Problem ist nur, dass mein Mail Plus Server immer noch nicht erreicht wird.
    Grüße
    Stefan

  2. Luissays:

    Hi, vielen dank für die Anleitung, leider bekomm ich beim test connection immer die meldung unable to perform this operation. Ich vermute im php script muss noch der text ersetzt werden: “https://dynamicdns.park-your-domain.com” muss “dynamicdns” stehen bleiben und der rest mit meiner domain ersetzt werden? Für mich auch unklar ob die Anleitung noch aktuell ist, ich hab bei namecheap bei new record nur die option “A + Dynamic DNS Record”. evtl kann hier jemand helfen?
    Vielen Dank

  3. Toller Artikel! Ich benutze Namecheap.com und Synology DSM schon eine Weile, aber ich wusste nicht, dass es eine Option gibt, Domains von DSM aus zu verwalten

  4. Klebefoliensays:

    Das sind wirklich tolle Tipps, danke für die unermüdliche Arbeit, die hier auf der Webseite geleistet wurde.

    Lg Emma

Schreibe einen Kommentar zu Klebefolien Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.