Mit der INWX-API eigenen DynDNS einrichten

Ich habe schon eine ganze Weile mit dem Gedanken gespielt, meinen Raspberry Pi per DynDNS ans Neuland ;) anzuschließen. Da die IP Adressen bei mir zu Hause dynamisch vergeben werden, musste ein DynDNS her. Dank der API meines Registrars INWX.de ist das kein Problem.

Voraussetzungen

Für das Script benötigt man keine Voraussetzungen, welche ein Linuxsystem nicht schon erfüllen würde.

  • curl
  • sed

Ansonsten benötigt ihr nur eure Logindaten, und die ID des zu ändernden DNS Eintrages Die ID findet ihr ganz einfach heraus, wenn ihr euch den Quelltext des gewünschten Eintrages anschaut:

INWX DNS ID herausfinden

INWX DNS ID herausfinden

Einrichtung

Die Einrichtung des Bashscripts ist sehr einfach, da ich den Quelltext über GitHub zur Verfügung stelle.

Wir erstellen also zunächst ein neues Verzeichnis im Home-Ordner und laden den Source herunter:

mkdir ~/dyndns && cd ~/dyndns
git clone https://github.com/gehaxelt/Bash-INWX-DynDNS.git .

Danach tragt ihr eure Daten in die „dnsupdate.sh“ ein.

Das Script prüft, ob die zuletzt geprüfte IP-Adresse in der „old.ip“ Datei der aktuellen IP entspricht. Ist dies nicht der Fall, so wird über die INWX-API ein Request abgesetzt, der den entsprechenden Eintrag erneuert.

Damit dieser Vorgang automatisiert alle 5 Minuten ausgeführt wird, müssen wir einen Cronjob erstellen.

crontab -e

Fügt dort die folgende Zeile ein:

*/5 * * * * cd /home/$USER/dyndns && bash dnsupdate.s

Nach dem Abspeichern ist schon alles eingerichtet und funktionsfähig.

Optional

Solltet ihr mit diesem Script einen PC bzw. einen Raspberry Pi ans Internet anschließen, müsst ihr ggf. noch Port-Weiterleitungen im Router einstellen. Wenn ihr den SSH-Server nach außen öffnet, dann solltet ihr am Besten auf PubKey Authentication umsteigen und den Login per Passwort deaktivieren.

Wenn ihr herausfinden möchtet, welche bzw. wie viele IPs  bei einem Loginversuch gescheitert sind, könnt ihr die folgende zwei Befehle ausprobieren:

cat /var/log/auth.log | grep "Connection closed" | grep -oP "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" | sort -u
cat /var/log/auth.log | grep "Connection closed" | grep -oP "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" | sort -u | wc -l

Fazit

Einen eigenen DynDNS zu betreiben ist mit dem richtigen Registrar und der richtigen API nicht sehr schwierig ;)

~ Sebastian