DynDNS mit PowerDNS

Unser PowerDNS haben wir ja bereits angelegt. Das schöne ist, dass Du mit PowerDNS recht schnell und einfach deinen eigenen DynDNS Dienst basteln kannst. Ich selber nutze ein FritzBox an einem 1&1 Anschluss, aber in Verbindung mit der FritzBox ist es einfach super einfach, egal welcher Anbieter :)

Vorbereitung in PowerDNS Admin:

Anlegen eines neuen Users der die DNS-Änderungen vornimmt:


Dem User kannst Du einen beliebigen Benutzernamen geben (dnsupdate) oder was auch immer und ein gescheites Passwort (für meine Beispiel nehmen wir „geheimXd“)

In deinen angelegten Zonen gehst Du oben auf

und aktivierst dort den DynDNS Part für die Domain

und ordnest den neu erstellten User deiner Domain hinzu damit dieser auch berechtigt ist Änderung an der Zone vorzunehmen

Vorarbeiten in PowerDNS erledigt :-)

Wir loggen uns per SSH auf einem Server deiner Wahl ein. Ich habe mir den Ordner /opt/scripts/dyndns angelegt. Hier habe ich 2 Scripts angelegt. Das erste überprüft einfach nur ob sich die IP geändert hat. Sollte sich etwas getan haben tritt das zweite Script in Aktion und ändert die entsprechenden Records.

Script 1 – check_ip.sh

#!/bin/bash

IP=$(dig -4 A +short xxxxxxxxxxxx.myfritz.net @1.1.1.1)
DIFF=$(diff /opt/scripts/dyndns/currentip.txt <(echo "$IP"))
if [ "$IP" ]
then

    if [ "$DIFF" = "" ]
    then
        :
    elif [ "$DIFF" != "" ]
    then
        rm /opt/scripts/dyndns/oldip.txt
        mv /opt/scripts/dyndns/currentip.txt /opt/dyndns/oldip.txt
        echo "$IP" >/opt/scripts/dyndns/currentip.txt
        source /opt/scripts/dyndns/dyndns.sh | mail -s "IP Change" mail@meinedomain.de < /opt/scripts/dyndns/currentip.txt
    fi
else
    :
fi

Bitte in der Datei check_ip.sh die URL xxxxxxxxxxxx.myfritz.net (Zeile 3) durch deine eigene URL deiner FritzBox anpassen. Diese findest Du eigentlich direkt nach dem einloggen auf der Übersichtsseite. Und natürlich deine eMail Adresse (Zeile 16) anpassen.

Script 2 – dyndns.sh

#!/bin/bash

pub_ipv4=$(dig -4 A +short xxxxxxxxxxxx.myfritz.net @1.1.1.1)
curl "http://dnsupdate:geheimXd@123.123.123.123:8080/nic/update?hostname=meinedomain.de&myip=$pub_ipv4"
curl "http://dnsupdate:geheimXd@123.123.123.123:8080/nic/update?hostname=*.meinedomain.de&myip=$pub_ipv4"

Anpassen:
1. Zeile 3: URL deiner FritzBox wie schon im ersten Script in Zeile 3
2. Zeile 4: User (dnsupdate) und Passwort (geheimXd) wie in PowerDNS-Admin bei dem neu angelegten User vergeben sowie die IP deines ersten (Master) PowerDNS Servers (123.123.123.123) sowie den Hostnamen der aktualisiert werden soll (meinedomain.de)
3. Zeile 5 – siehe Zeile 4, hier muss werden dann auch die A-Records für die Subdomains (*.meinedomain.de) angepasst.

Die Zeile 4 und 5 kannst Du mit weiteren Domains beliebig erweitern :)+

Bitte gib den beiden Scripten noch das Recht mit auch ausgeführt zu werden und lege 2 Dateien an.

chmod +x /opt/scripts/dyndns/check_ip.sh
chmod +x /opt/scripts/dyndns/dyndns.sh
touch /opt/scripts/dyndns/oldip.txt
touch /opt/scripts/dyndns/currentip.txt

Damit Änderungen auch zeitnah gefunden werden noch einen cronjob anlegen der entweder jede Minute (mir reichen alle 2 Minuten) überprüft ob die FritzBox eine neue IP bekommen hat

crontab -e
####
*/2 * * * * /opt/scripts/dyndns/check_ip.sh > /dev/null 2>&1

Fertig ist dein eigener DynDNS Dienst :)