it's DNS - DynDNS-Dienst

Informationen für automatische DynDNS-Updates

Hier finden Sie Informationen, zur DynDNS-Schnittstelle, mit der automatische Aktualisierungen der A- und AAAA-Records zu Ihren Domains auf unseren DNS-Servern möglich sind.

Allgemeine Definition

Updates erfolgen an die folgende URL: https://www.itsdns.de/update.php
Zum Erzwingen der Protokolle IPv4 oder IPv6 stehen alternativ die folgenden zwei URLs zur Verfügung:

Die URL unterstützt dabei die folgenden GET-Parameter:


Anstatt der GET-Parameter username und password kann auch ein HTTP-Auth-Header gesendet werden.
Der GET-Parameter myip kann weggelassen werden, dann wird automatisch die aufrufende Client-IP-Adresse verwendet.
Soll für einen Hostnamen der A- und AAAA-Record gesetzt werden, so sind zwei getrennte Aufrufe der obigen Update-URL notwendig: einer mit der IPv4- und einer mit der IPv6-Adresse.

Rückgabewerte

Nach einem erfolgreichem DynDNS-Update erfolgt die Rückgabe des HTTP-Statuscode 200 und dem Text-Content good 123.123.123.123, wobei natürlich die tatsächliche IPv4- oder IPv6-Adresse ausgegeben wird. War im DNS bereits die aktuelle IP-Adresse hinterlegt wird ebenfalls der HTTP-Statuscode 200 zurückgegen, als Text jedoch nochg 123.123.123.123 ausgegeben.

Fehlte der Anfrage einer der notwendigen oben beschriebenen Paramter erfolgt die Rückgabe des HTTP-Statuscode 400. Dem zurückgegenen Text können weitere Details entnommen werden, welcher der Parameter vermisst wurde.

Stimmen die Zugansdaten, d. h. die E-Mail-Adresse, der Update-Key und der vollständige Hostname nicht mit den auf unserem System hinterlegten Informationen überein, wird dieser Umstand ebenfalls als Text-Information zurückgegen und der HTTP-Statuscode 401 gesendet.

Sollte es beim DNS-Update auf unseren Server-Systemen zu einem Fehler/Problem kommen, wird der HTTP-Statuscode 500 zurückgegeben und Details als Text ausgeben, mit denen Sie sich bei wiederholten Auftreten des Problems gern an uns wenden können.

Einrichtung in einer AVM FritzBox

Screenshot der FritzBox-Konfiguration

In einer AVM FritzBox (getestet mit aktueller Firmware 7.x) können Sie unseren DynDNS-Dienst im Bereich Internet > Freigaben > DynDNS wie folgt eintragen:

Durch die hintereinander mit einem Leerzeichen getrennten Update-URLs im ersten Eingabefeld erfolgen automatisch zwei DynDNS-Updates, eines für den A-Record, d.h. IPv4 und ein weiteres für IPv6, also zur Aktualisierung des AAAA-Records. Die in spitzen Klammern verwendeten Platzhalter müssen hier genau so eingegeben werden damit diese dann beim Update automatisch von der FritzBox durch die entsprechenden Werte ersetzt werden.

Einrichtung in einem ZyXEL Speedlink

Screenshot der Speedlink-Konfiguration

In einem ZyXEL Speedlink (getestet mit aktueller Firmware auf dem Modell 5501) können Sie unseren DynDNS-Dienst unter Internet > Zusatzfunktionen > Dynamic DNS wie folgt eintragen: (Die Ansicht der Konfigurationsseite muss dafür auf EXPERTE eingestellt sein.)

Mit diesem Eintrag erfolgt dann das Update des A-Records, d.h. der IPv4-Adresse. Für die IPv6-Adresse, also zur Aktualisierung des AAAA-Records muss ein weiteres Dynnamic DNS-Konto hinzugefügt werden: Dabei werden alle Felder nochmals identisch ausgefüllt, lediglich als Server-Adresse wird stattdessen die folgende URL eingetragen:
https://www.ipv6.itsdns.de/update.php?username=<username>&password=<password>&hostname=<domain>
Dabei wird die IPv6-Adresse von unserem Server automatisch ermittelt, da der Router leider keine Möglichkeit bietet die eigene IPv6-Adresse zu senden.

Einrichtung in einer Telekom Digitalisierungsbox

Screenshot der Digitalisierungsbox-Konfiguration

In einer Telekom Digitalisierungsbox können Sie unseren DynDNS-Dienst unter Internet & Netzwerk > DynDNS-Client wie folgt eintragen. Wichtig zu wissen ist bei diesem Gerät, dass leider keine Aktualisierung per HTTPS möglich ist, dass heißt die eingegebenen Zugangsdaten werden leider unverschlüsselt über das Internet übertragen.
Zunächst muss ein neuer DynDNS-Provider angelegt werden:

Anschließend kann der eigentliche DynDNS-Account angelegt werden: Mit diesem Eintrag erfolgt dann das Update des A-Records, d.h. der IPv4-Adresse. Eine aktualisierung des AAAA-Records und damit der IPv6-Adresse ist leider nicht möglich.

Einrichtung in IPfire

Screenshot der IPfire-Konfiguration

Bei einer aktuellen IPfire-Version (ab Core-Update 133) wird unser Dienst in der Liste der verfügbaren DynDNS-Dienste angeboten. Sie finden diese Funktion im Menü Dienste unter Dynamischer DNS. Dort muss dan also einfach itsdns.de ausgewählt werden und die Eingabefelder wie folgt ausgefüllt werden:

Einrichtung in OPNsense

Screenshot der OPNsense-Konfiguration

Bei OPNsense (getestet mit aktueller Version 19.1) können Sie unseren DynDNS-Dienst unter Dienste > Dynamisches DNS wie folgt hinzufügen:

Zu beachten ist hierbei, dass in der Aktualisierungs-URL der eigene DynDNS-Hostname eingesetzt werden muss. Hierfür stellt OPNsense leider keinen Platzhalter zur Verfügung.

Mit diesem Eintrag erfolgt dann das Update des A-Records, d.h. der IPv4-Adresse. Für die IPv6-Adresse, also zur Aktualisierung des AAAA-Records muss ein weiterer DynDNS-Account hinzugefügt werden: Dabei werden alle Felder nochmals identisch ausgefüllt, lediglich als Anbieter wird stattdessen Custom (v6) ausgewählt.

Damit OPNsense die DynDNS-Updates auch automatisch in intervallen von 15 Minuten durchführt, muss zusätzlich unter System > Einstellungen > Cron folgender Eintrag hinzugefügt werden:

Einrichtung in pfSense

Screenshot der pfSense-Konfiguration

Bei pfSense (getestet mit aktueller Version 2.4.4) können Sie unseren DynDNS-Dienst als Dynamic DNS Client unter Dienste > Dynamisches DNS wie folgt hinzufügen:

Zu beachten ist hierbei, dass in der Aktualisierungs-URL der eigene DynDNS-Hostname eingesetzt werden muss. Hierfür stellt pfSense leider keinen Platzhalter zur Verfügung.

Mit diesem Eintrag erfolgt dann das Update des A-Records, d.h. der IPv4-Adresse. Für die IPv6-Adresse, also zur Aktualisierung des AAAA-Records muss ein weiterer DynDNS-Client hinzugefügt werden: Dabei werden alle Felder nochmals identisch ausgefüllt, lediglich als Anbieter wird stattdessen Custom (v6) ausgewählt.

Einrichung in einem Synology NAS

Screenshot der QNAP-Konfiguration

In einem Synology NAS muss zunächst ein benutzerdefinierter DDNS-Dienst angelegt werden. Öffnen Sie dazu in der Systemsteuerung unter Externer Zugriff den Reiter DDNS. Klicken Sie rechts auf den Button Anpassen. Füllen Sie die beiden Felder wie folgt aus:

Anschließend kann der konkrete DDNS-Account hinzugefügt werden, füllen Sie dazu die Felder wie folgt aus:

Einrichung in einem QNAP NAS (ab QTS 4.3.6)

Screenshot der QNAP-Konfiguration

In einem QNAP NAS (ab Firmware 4.3.6) können Sie unseren DynDNS-Dienst wie folgt innerhalb von "Netzwerk- und virtueller Switch" eintragen:

Mit diesem Profil erfolgt ausschließlich ein DynDNS-Update via IPv4 für den entsprechenden A-Record. Wenn zusätzlich auch für den Zugriff via IPv6 ein AAAA-Record im DNS hinterlegt werden soll, ist ein zusätzliches Profil mit der folgen URL anzulegen:
https://www.ipv6.itsdns.de/update.php?username=%USER%&password=%PASS%&hostname=%HOST%
Dabei wird die IPv6-Adresse von unserem Server automatisch ermittelt, da die QNAP-Software leider keine Möglichkeit bietet die eigene IPv6-Adresse zu senden.
Die in Prozentzeichen verwendeten Platzhalter müssen bei den URLs hier genau so eingegeben werden, damit diese dann beim Update automatisch durch die entsprechenden darüber eingetragenen Parameter ersetzt werden.

Shell-Script für QNAP NAS (x86-Systeme)

In einem QNAP NAS mit x86-Prozessor lässt sich alternativ zu obiger Methode auch ein Shell-Script verwenden, dieses muss unterhalb des Verzeichnisses /share/CACHEDEV1_DATA/ gespeichert werden:

#!/bin/bash

# Update-Script für it's DNS, dem DynDNS-Dienst von der IT-Service Stalhut GmbH

# Konfiguration der Zugangsdaten bitter hier anpassen:
user="email@example.com"
host="example.user.itsdns.de"
pass="XXXXXXXXXXXXXXXXXXXXXXXX"

# Ab hier keine Änderungen mehr vornehmen:
dyn_ipv4=`host -t A ${host} | grep -o 'address [0-9.]*' | cut -d ' ' -f 2`
dyn_ipv6=`host -t AAAA ${host} | grep -o 'address [0-9a-f:]*' | cut -d ' ' -f 2`
ext_ipv4=`curl -s https://www.ipv4.itsdns.de/ip.php`
ext_ipv6=`curl -s https://www.ipv6.itsdns.de/ip.php`

if [ "$ext_ipv4" = "" ];then
   log_tool -t 1 -a "[it's DNS] Keine IPv4-Internetverbindung."
elif [ "$dyn_ipv4" = "$ext_ipv4" ];then
   log_tool -t 0 -a "[it's DNS] A-Record (IPv4) ist aktuell."
elif [ "$dyn_ipv4" != "$ext_ipv4" ];then
   log_tool -t 0 -a "[it's DNS] A-Record (IPv4) ist nicht aktuell: Neue IPv4-Adresse = $ext_ipv4"
   res="`curl -u ${user}:${pass} "https://www.ipv4.itsdns.de/update.php?hostname=${host}"`"
   res_code=`echo "$res" | cut -d ' ' -f 1`
   if [ "$res_code" = "good" ] || [ "res_code" = "nochg" ];then
      log_tool -t 0 -a "[it's DNS] IPv4-Update war erfolgreich. ($res_code)"
   else
      log_tool -t 2 -a "[it's DNS] $res"
   fi
else
   log_tool -t 2 -a "[it's DNS] IPv4-ERROR"
fi

if [ "$ext_ipv6" = "" ];then
   log_tool -t 1 -a "[it's DNS] Keine IPv6-Internetverbindung."
elif [ "$dyn_ipv6" = "$ext_ipv6" ];then
   log_tool -t 0 -a "[it's DNS] AAAA-Record (IPv6) ist aktuell."
elif [ "$dyn_ipv6" != "$ext_ipv6" ];then
   log_tool -t 0 -a "[it's DNS] AAAA-Record (IPv6) ist nicht aktuell: Neue IPv6-Adresse = $ext_ipv6"
   res="`curl -u ${user}:${pass} "https://www.ipv6.itsdns.de/update.php?hostname=${host}"`"
   res_code=`echo "$res" | cut -d ' ' -f 1`
   if [ "$res_code" = "good" ] || [ "res_code" = "nochg" ];then
      log_tool -t 0 -a "[it's DNS] IPv6-Update war erfolgreich. ($res_code)"
   else
      log_tool -t 2 -a "[it's DNS] $res"
   fi
else
   log_tool -t 2 -a "[it's DNS] IPv6-ERROR"
fi

Dieses Script ist so konzipiert, dass Ereignisse (Erfolg oder Misserfolg) entsprechend im Ereignis-Log des QNAP-Systems auftauchen. Das heißt über die QNAP-Eigenen funktionen lassen sich auch E-Mail-Benachrichtigungen aktivieren, die bspw. bei einem fehlgeschlagenen Update ausgelöst werden.
Das Skript lässt sich dann als Cron-Job automatisiert bspw. alle 5 min ausführen. Dazu muss die Datei /etc/config/crontab entsprechend um folgende Zeile erweitert werden:
*/5 * * * * /share/CACHEDEV1_DATA/scripts/dyndnsupdate.sh
Wichtig: Die Bearbeitung von Cron-Jobs darf bei einem QNAP NAS nicht per crontab -e erfolgen.
Mit folgendem Befel werden die Änderungen in der crontab-Datei übernommen und aktiviert:
crontab /etc/config/crontab && /etc/init.d/crond.sh restart

Shell-Script für Linux-Systeme

Für hier nicht aufgeführte Systeme steht das folgende Shell-Script zur Verfügung, das Ihre eigene öffentlichen IPv4- und IPv6-Adresse ermittelt und in unserem DynDNS-System hinterlegt. Dabei findet vorab eine Überprüfung statt, ob sich die eigenen IP-Adressen verändert haben, und nur dann wird tatächlich die Änderung an unser System übermittelt.

#!/bin/bash

# Update-Script für it's DNS, dem DynDNS-Dienst von der IT-Service Stalhut GmbH

# Konfiguration der Zugangsdaten bitter hier anpassen:
user="email@example.com"
host="example.user.itsdns.de"
pass="XXXXXXXXXXXXXXXXXXXXXXXX"

# Ab hier keine Änderungen mehr vornehmen:
dyn_ipv4=`host -t A ${host} | grep -o 'address [0-9.]*' | cut -d ' ' -f 2`
dyn_ipv6=`host -t AAAA ${host} | grep -o 'address [0-9a-f:]*' | cut -d ' ' -f 2`
ext_ipv4=`curl -s https://www.ipv4.itsdns.de/ip.php`
ext_ipv6=`curl -s https://www.ipv6.itsdns.de/ip.php`

if [ "$ext_ipv4" = "" ];then
   echo "Keine IPv4-Internetverbindung. Keine IPv4 zum aktualisieren."
elif [ "$dyn_ipv4" = "$ext_ipv4" ];then
   echo "DynDNS A-Record (IPv4) ist aktuell."
elif [ "$dyn_ipv4" != "$ext_ipv4" ];then
   echo "DynDNS A-Record (IPv4) ist nicht aktuell, Update gestartet: Neue IPv4-Adresse = $ext_ipv4"
   curl -u ${user}:${pass} "https://www.ipv4.itsdns.de/update.php?hostname=${host}"
   echo .
else
   echo "IPv4-ERROR"
fi

if [ "$ext_ipv6" = "" ];then
   echo "Keine IPv6-Internetverbindung. Keine IPv6 zum aktualisieren."
elif [ "$dyn_ipv6" = "$ext_ipv6" ];then
   echo "DynDNS AAAA-Record (IPv6) ist aktuell."
elif [ "$dyn_ipv6" != "$ext_ipv6" ];then
   echo "DynDNS AAAA-Record (IPv6) ist nicht aktuell, Update gestartet: Neue IPv6-Adresse = $ext_ipv6"
   curl -u ${user}:${pass} "https://www.ipv6.itsdns.de/update.php?hostname=${host}"
   echo .
else
   echo "IPv6-ERROR"
fi

Dieses Script lässt sich dann als Cron-Job automatisiert bspw. alle 5 min ausführen.
Getestet wurde dieses Script auf einer aktuellen Ubuntu-Installation (Version 18.04), voraussetzung sind aber lediglich die verschiedenen Kommandozeilen-Tools host (Teil der Bind-Utils), curl (Version 7.x), grep (Version 2.x) und cut (Version 8.x)