TODO: 4b42 DynDNS Dienst auf einem Linux System, QNAP oder Synology NAS einrichten


Vorwort

Da in den meisten Router und Firewalls nur die grössten Anbieter unterstützt werden, erkläre ich hier wie Sie unseren DynDNS Dienst trotzdem auf einen Linux System wie Raspberry Pi, QNAP, Synology und vielen anderen verwenden können.

Voraussetzung

SSH Zugriff
Internetzugriff über Port 80 (HTTP) oder 443 (HTTPS)

Vorbereitung

Melden Sie sich mit einem SSH Client (PuTTY) an Ihrem Linux System an. Am besten mit dem root Benutzer, da normale Benutzer auf den meisten NAS Systemen keine Rechte haben und wir diese später für den Cronjob benötigen.

Konfiguration


Erstellen Sie eine neue Datei, an einem Ort Ihrer wahl. Ich verwende hier /usr/scripts/. Falls dieses Verzeichnis noch nicht existiert, können Sie dies erstellen:
mkdir /usr/scripts/

Öffnen Sie nun die neue Datei mit einem Editor Ihrer wahl:
nano /usr/scripts/dyndns.sh

Kopieren Sie den folgenden Code und tragen Sie diesen in der Datei dyndns.sh ein:
#!/bin/bash
#-----------------------------------------------------------------------#
# Copyright (c) 2006-2015 by Kevin Buehl #
#-----------------------------------------------------------------------#
# __ __ _____________ __ __ ______________ #
# | | 2006 | | | _______ \ | | | | |___________ | #
# | | 2015 | | | | \ | | | | | | | #
# | |___ ____| | | |_______/ / | |___ ____| | ___________| | #
# |______ ____ | | _______ | |______ ____ | | ___________| #
# by | | | | \ \ Content | | | | #
# Kevin | | | |_______/ | Management | | | |___________ #
# Buehl |__| |_____________/ System |__| |______________| #
# #
# No part of this website or any of its contents may be reproduced, #
# copied, modified or adapted, without the prior written consent of #
# the author, unless otherwise indicated for stand-alone materials. #
# For more Infomation visit www.4b42.com. #
# This notice must be untouched at all times. #
#-----------------------------------------------------------------------#

#------------------------------------------------------------------------
# 2015-05-07 KB created
#------------------------------------------------------------------------
USER=""
PASS=""
HOST=""

### DO NOT EDIT BELOW THIS LINE ###
# check if all variables filled
if [ -z "$USER" ] || [ -z "$PASS" ] || [ -z "$HOST" ]; then
echo "ERROR: username, password or hostname empty, please check USER, PASS and HOST variable!"
exit
fi
# get current ip-address
wget -q http://dyndns.4b42.com/ --output-document=/tmp/ip.new
# check if file ip.new exist
if [ -e /tmp/ip.new ]; then
# save new ip-address in variable
IPN=`cat /tmp/ip.new`
# if ip.old not exist or ip.old not match ip.new
if [ ! -e /tmp/ip.old ] || [ "`cat /tmp/ip.old`" != $IPN ]; then
# submit ip address to dyndns server
wget -q http://$USER:$PASS@dyndns.4b42.com/nic/update?hostname=$HOST --output-document=/tmp/ip.dyn
#save return status in variable
STS=`cat /tmp/ip.dyn`
if [ $STS = "good" ]; then
# rename file, for later ip check
mv /tmp/ip.new /tmp/ip.old
echo "dyndns update from ip $IPN successful!"
else
echo "dyndns update failed with error code: $STS"
fi
fi
fi
### DO NOT EDIT ABOVE THIS LINE ###
Passen Sie nun die drei Variablen USER, PASS und HOST an. Bei USER tragen Sie bitte Ihren Benutzernamen oder Ihre Kundennummer ein, bei PASS das dazugehörige Passwort und bei HOST den Domain bzw. DNS Namen, welchen Sie für DynDNS verwenden möchten (Dieser muss davor über unsere Administrationsoberfläche angelegt werden). Speichern Sie nun die Änderungen und verlassen Sie den Editor.

Damit das Skript augeführt werden kann, müssen Sie noch die Berechtigungen anpassen:
chmod +x /usr/scripts/dyndns.sh


Funktionskontrolle

Nun können Sie das Skript ausführen um zu prüfen ob alles Ordnungsgemäss funktioniert:
/usr/scripts/dyndns.sh

Wenn alles in Ordnung ist erhalten Sie folgende Ausgabe:
dyndns update from ip 48.42.48.42 successful!
Diese erhalten Sie bei jedem DynDNS Update, sollte sich Ihre externe IP-Adresse nicht ändern erhalten Sie keine Ausgabe. Somit können Sie Ihre Cronjobs so konfigurieren, das Ihren die Ausgabe per E-Mail zugesendet wird.

Cronjob

Damit Sie das Skript nicht immer manuell Ausführen müssen, können Sie dies von Ihrem System regelmässig ausführen lassen. Ich empfehle das Skript alle 5 -15 Minunten auszuführen. Je nachdem wie oft sich Ihre externe IP-Adresse ändert (24 Stunden oder eingie Wochen) und wie schnell Sie bei einen IP-Adress wechsel wieder auf Ihre System zugreifen möchten. Öffnen Sie die Datei crontab:
nano /etc/crontab

Fügen Sie am Ende folgenden Code ein:
# Cronjob dyndns update
*/5 * * * * root /usr/scripts/dyndns.sh

Bei einem Synology NAS müssen Sie anschliessend den Dienst neustarten:
/usr/syno/sbin/synoservicectl --restart crond