Dynamisches DNS – Flex-DNS von Domain Offensive via Bash Skript aktualisieren

Flex DNS ist eine günstige Alternative zu DynDns, NO-IP und ähnliches und basiert auf der Möglichkeit, dass man mit der eigenen Domain auf die eigene Firewall und mittels Portweiterleitung auf eigene Dienste zugreifen kann, auch wenn man keine feste IP-Adresse hat. Angeboten wird diese Technologie über den Anbieter Domain Offensive 

Für den Zugriff auf meine Owncloud benötigte ich den Zugriff auf meine dynamische IP-Adresse mittels eines festen Domainnamens. Dafür bieten sich zum derzeitigen Zeitpunkt drei Möglichkeiten:

  1. einen kostenfreien Anbieter wie no-ip.com, selfhost.eu oder ähnliches. Die kostenfreien Angebote sind jedoch immer an Bedingungen geknüpft, wie die Aktivierung eines Links aller 30 Tage
  2. einen DynDns-Account eines Anbieters käuflich erwerben
  3. von meinem Internetprovider (Domain Offensive) eine Subdomain als DynDns Zugang verwenden.

Im konkreten Fall bevorzugte ich die dritte Möglichkeit. Um mittels eines Cron Jobs die den Flex-DNS-Eintrag zu aktualisieren, habe ich das Bash-Skript von dieser Quelle angepasst und zu folgendem vervollständigt und geringfügig korrigiert:

#!/bin/bash

USERNAME="username"
PASSWORD="password"
HOSTNAME="DynDNS.Hostname"
IP=`curl -s http://whatismijnip.nl |cut -d " " -f 5`

ABUSE_LOCK_FILE="/tmp/dyndns.abuse"
LAST_IP_FILE="/tmp/lastip"
LAST_IP=`cat $LAST_IP_FILE`

#lockfile check, lockfile is only used if a abuse result appears
if [ -e "$ABUSE_LOCK_FILE" ]; then
echo "Dyndns abuse lockfile exisits: $ABUSE_LOCK_FILE"
exit 1
fi
#end of lockfile check

if [ "$IP" != "$LAST_IP" ]; then
echo "Current IP: $IP"
RESULT=`curl -s "http://$USERNAME:$PASSWORD@ddns.do.de?myip=$IP"`
echo "FlexDNS says: $RESULT!"
else
echo "IP is still the same: $LAST_IP"
fi

if [ "$RESULT" == "abuse" ]; then
echo "Abuse lock!"
echo "Abuse lock!" &&> "$ABUSE_LOCK_FILE"
fi

echo "$IP" & > "$LAST_IP_FILE"

Vorteil: Das Update wird nur durchgeführt, wenn sich die IP wirklich geändert hat.

Das Bash-Script habe ich auf dem Linux Bbetriebssystem mittels crontab in die regelmäßgie Ausführung hinzugefügt.