DynDNS Script mit Bind9

Tags: linux bind9 scripts

Inhaltsverzeichnis

Automatische Aktualisierung deiner dynamischen IP auf deinem DNS-Server(Bind9)

Wenn du wie ich einen DNS-Server bei einem Provider deiner Wahl nutzt und beispielsweise einen eigenen Minecraft- oder TeamSpeak 3-Server lokal betreibst, möchtest du diesen vermutlich gemeinsam mit deinen Freunden verwenden. Dabei stehst du möglicherweise vor der Herausforderung, dass du von deinem Internetprovider nur eine dynamische IP-Adresse erhältst, die sich regelmäßig ändert.

Damit dein DNS-Server immer die aktuelle IP-Adresse kennt, benötigst du eine einfache und kostengünstige Lösung, die deine dynamische IP automatisch aktualisiert. In diesem Beitrag zeige ich dir, wie du das mit einem kleinen Skript umsetzen kannst.

Voraussetzungen

Bevor wir starten, stelle sicher, dass:

  • dein DNS-Server (z. B. Bind9) korrekt eingerichtet ist,
  • dein DNS-Server dynamische Updates deiner Zone akzeptiert,
  • du die nötigen Berechtigungen für die Updates hast.

In diesem Beitrag gehe ich nicht darauf ein, wie du deinen DNS-Server einrichtest. Der Fokus liegt auf einem funktionierenden Skript, das die Aufgabe für dich übernimmt.

Das Skript

Das folgende Skript ermittelt deine aktuelle öffentliche IP-Adresse und aktualisiert sie auf deinem DNS-Server: WICHTIG: Passe deine Variablen an

#!/bin/bash

ECHO=$(which echo)
NSUPDATE=$(which nsupdate)

# DNS-Eintrag festlegen, der aktualisiert werden soll. Beachte den abschließenden Punkt.
HOST="test.dein-domain.de."

# Den vom DNS-Administrator bereitgestellten Schlüssel festlegen
KEY="/etc/bind/update.key"

# Den Namen oder die IP-Adresse des DNS-Servers festlegen
SERVER="ns1.deine-domain.de"

# Die Zone festlegen, die geändert werden soll. Es kann jede Zone sein, für die der Schlüssel Änderungsrechte hat.
ZONE="deine-domain.de."


if ! which dig; then 
  echo "Fehler: dig ist nicht installiert; exit 1
else 
  IP=`dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print $2}'`
  OLDIP=`dig $HOST +short @8.8.8.8`

  if [ "$IP" != "$OLDIP" ];
  then
    $ECHO "server $SERVER" > /tmp/nsupdate
    $ECHO "debug yes" >> /tmp/nsupdate
    $ECHO "zone $ZONE" >> /tmp/nsupdate
    $ECHO "update delete $HOST" >> /tmp/nsupdate
    $ECHO "update add $HOST 600 A $IP" >> /tmp/nsupdate
    $ECHO "send" >> /tmp/nsupdate
    $NSUPDATE -k ${KEY} -v /tmp/nsupdate >> /var/log/nsupdate.log 2>&1
  else
    :
  fi
fi

Meine Empfehlung für DNS-Server mit Netcup

Für meinen DNS-Betrieb nutze ich aktuell zwei VPS Nano von Netcup. Diese kleinen und kostengünstigen Server sind für DNS-Dienste völlig ausreichend. Wenn du jedoch etwas mehr Leistung benötigst, könntest du dir die VPS 250 G11s anschauen. Diese bieten dir zusätzliche Ressourcen und bleiben dennoch budgetfreundlich.

Um meine Arbeit und Inhalte zu unterstützen, stelle ich dir einen Affiliate-Link zur Verfügung. Solltest du über diesen Link ein Produkt bei Netcup mieten, erhalte ich eine kleine Provision. Für dich entstehen dadurch keine zusätzlichen Kosten.
Hier der Link:

netcup.com

Transparenz ist mir wichtig:

  • Ich möchte klarstellen, dass dieser Beitrag keinen kommerziellen Charakter hat und rein informative Zwecke verfolgt.
  • Die Nutzung des Affiliate-Links ist vollständig freiwillig. Vielen Dank, falls du dich entscheidest, mich auf diesem Weg zu unterstützen!