In meinem letzten Blogpost hatte ich bereits erwähnt, dass meine Domains inzwischen bei INWX registriert sind. Ich bin auf INWX im Uberspace-Wiki gestoßen, hab mich kurz umgesehen und gelesen, dass die eine API anbieten um Nameservereinträge zu verändert – und mein Interesse war geweckt.
Mein BananaPi auf dem mein Seafile-Server und ein paar andere Dienste laufen steht nämlich bei mir zuhause und ist über einen Kabel Deutschland-Anschluss mit dem Internet verbunden. Es kommt zwar nicht häufig vor, aber manchmal bekomme ich von Kabel Deutschland eine neue IP-Adresse (V4 und V6) zugeteilt. Damit Seafile via Domain erreichbar ist, muss diese neue IP-Adresse beim DNS-Server hinterlegt werden. Anfangs hatte ich dafür anydns.info genutzt und bei wechselnder IP-Adresse hat die FritzBox diese Änderung sofort anydns mitgeteilt. Nur leider kommt es immer wieder vor, dass Anydns-Dienste von Firmenfirewalls geblockt werden… Es musste also Abhilfe her.
Nach kurzem suchen bin ich bei GitHub über nsupdate gestolpert – ein Shellscript das genau das macht, was ich will: Für meine eigene Domain die A und AAAA-Records (die ipV4 und ipV6-Adressen auf die die Domain aufgelöst werden soll) im DNS-Server setzen.
Nachdem ich mich ein wenig mit der Konfiguration auseinandergesetzt habe funktioniert das inzwischen einwandfrei. nsupdate wird per cronjob minütlich auf meinem BananaPi ausgeführt (* * * * * /***/***/***/nsupdate.sh > /dev/null
), findet zwei Konfigurationsdateien (eine für ipV4 und eine für ipV6), checkt ob sich was verändert hat und meldet diese Änderung gegebenenfalls an INWX weiter. Normale Meldungen werden nach /dev/null geschickt, Fehlermeldungen bekomme ich per E-Mail.
Hier noch meine Konfigurationsdatei für ipV4 auf meinem BananaPi (Bananian Linux basierend auf Debian Jessie):
# from which site should we get your wan ip? IP_CHECK_SITE="https://XXX.uberspace.de/XXX/ip/" #i set up my own service because i didn't want to depend on someone else here # use drill instead of nslookup for hostname lookup USE_DRILL="YES" # Use IPv6 connection IPV6="NO" # Update an MX record MX="NO" # Suppress all messages SILENT="NO" # Login credentials for the inwx admin interface INWX_USER="XXX" INWX_PASS="XXX" # The hostname that you want to update and it's ID from the inwx interface # You get the ID when you edit the given nameserver entry and hover the save button. DOMAIN="XXX" INWX_DOMAIN_ID="XXX"
Für ipV6 muss der Parameter ipV6 geändert werden – und die INWX_DOMAIN_ID für den AAAA-Record angegeben.
Da ich mich beim der IP_CHECK_SITE nicht auf einen fremden Service verlassen wollte, habe ich hier auf meinem Uberspace ein Unterverzeichnis angelegt in dem mit ein kurzes PHP-Skript die IP-Adresse ausgibt:
<?php echo $_SERVER["REMOTE_ADDR"]; ?>
Läuft und ich bin glücklich 🙂

Schreibe einen Kommentar