DynDNS-Aktualisierung via Cronjob

logoKürzlich stelle ich mein Netz so um, dass meine FritzBox nur als ein Client des Netzes darstellt. Der Internetzugang wird nun über ein D-Link DSL321B aufgebaut und “vermittelt”. Einen Nachteil hat dieses Modem allerdings: Es bietet keine Möglichkeit, einen DynDNS-Zugang zu aktualisieren, wenn sich die öffentliche IP-Adresse ändert. Dieser und andere Gründe können das Interesse an einer alternativen Lösung wecken, von denen ich eine in diesem Beitrag vorstellen möchte.

 

 

Einleitung und Vorbereitung

In diesem Beitrag erstellen wir uns ein Bash-Script, dass durch einen Aufruf durch einen Cronjob regelmäßig die aktuelle, öffentliche IP-Adresse prüft und diese bei einer Änderung an vorher definierte Dienste mitteilt. In diesem Script nutzen wir hauptsächlich das Tool “curl“, um die zumeist HTTP-basierten Aktualisierungen zu “senden”. Dieses Tool installieren wir mit

apt-get install curl

 

Script erstellen

Nun erstellen wir ein neues Bash-Script namens “dyndns.sh“, gerne wie in allen anderen Beiträgen, im Ordner “/scripts/“. Dieses Script befüllen wir mit folgendem Inhalt:

#!/bin/bash

IPDATEI="/tmp/ipold.txt"

UPDATE=false
IPNOW=$(/usr/bin/curl https://klenzel.net/remoteip.php)

if [ ! -f $IPDATEI ] ; then
    UPDATE=true
else
    IPOLD=$(cat $IPDATEI)
    if [ "$IPOLD" != "$IPNOW" ] ; then
        UPDATE=true;
    fi
fi


if $UPDATE ; then
    echo $IPNOW > $IPDATEI

    #Hier wird das Update durchgeführt
    
fi

 

Dem Script erlauben wir anschließend die Ausführung mit

chmod x /scripts/dyndns.sh

 

DynDNS-Anbieter eintragen

An dieser Stelle müssen wir die Zeile 21 unseres Scripts editieren und den DynDNS-Anbieter unserer Wahl ein tragen. Dazu habe ich folgend ein paar Beispielhafte Aufrufe aufgelistet:

Hurrican Electric IPv6-Tunnel /usr/bin/curl -4 -s “https://ipv4.tunnelbroker.net/nic/update?username=NUTZERNAME&password=PASSWORT&hostname=TUNNELID” > /dev/null
DynDNS.org /usr/bin/curl -4 -s “https://NUTZERNAME:PASSWORT@members.dyndns.org/nic/update?hostname=HOSTNAME&myip=$IPNOW” > /dev/null
No-IP.org /usr/bin/curl -4 -s -u NUTZERNAME:PASSWORT “https://dynupdate.no-ip.com/nic/update?hostname=HOSTNAME” > /dev/null
Strato /usr/bin/curl -4 -s -u NUTZERNAME:PASSWORT “https://dyndns.strato.com/nic/update?hostname=HOSTNAME” > /dev/null
Eigener Dienst /usr/bin/curl -4 -s -u “https://dyn.eigenedomain.de/?domain=HOSTNAME&pass=PASSWORT” > /dev/null

Werte wie “Nutzername“, “Passwort” oder “Hostname” müssen natürlich durch eigene Angaben ersetzt werden.

 

Cron-Job

Abschließend erstellen wir einen Cronjob, damit unser Update-Script alle fünf Minuten ausgeführt wird. Wir öffnen den Crontab-Editor durch

crontab -e

und fügen folgende Zeile ein:

*/5 * * * * /scripts/dyndns.sh