Eigener DynDNS auf Netcup-vServer mit API



Diese Seite wurde vor mehr als 2 Jahren erstellt und vor über einem Monat zuletzt bearbeitet. Eventuell ist längst ihr Mindesthaltbarkeitsdatum überschritten!

DynDNS-Dienst für Netcup-Server mit der Netcup DNS-API

Netcup stellt für Abfragen und Änderungen der DNS-Daten eine API zur Verfügung. Lars-Sören Steck hat auf Github Code veröffentlich, der auf Clients ausgeführt werden kann und mit der API dynamische DNS-Einträge aktualisiert.

Ich habe das Repository mit meinem bisherigen Code zu einem DynDNS-Server für Netcup verwurstelt.

Funktion

Clients werden authentifiziert, im Erfolgsfall wird der DNS A-Record für hostname1.ddns in der Domäne example.com mit der Netcup-API aktualisiert (Bisher nur IPv4).

Voraussetzungen

Ich gehe davon aus, dass man – sofern man einen eigenen vServer besitzt – auch über die nötigen Kenntnisse im Umgang mit PHP, Apache, DNS-Einträgen und der Shell hat.

Installation

Konfiguration

Bearbeiten von include/config.php, mindestens:

CUSTOMERNR     Netcup-Kundennummer
APIKEY         API-Key
APIPASSWORD    API-Passwort
DOMAIN         Domain mit von Netcup verwaltetem DNS, Beispiel 'example.com'
DDNS_ZONE      Subdomain von DOMAIN, die für den DynDNS-Server verwendet wird, Beispiel 'ddns'
DEBUG          true für gesprächige Ausgaben im Logfile, false für nur das Wichtigste

Bearbeiten von include/users.php:

$known_clients['hostname1'] = 'password1';
$known_clients['hostname2'] = 'password2';
...

Die User hostname1/hostname2 für die Hosts hostname1.ddns.example.com bzw. hostname2.ddns.example.com mit den Passwörtern password1/password2 sind somit aktiv.

Tests mit einem Browser

Ohne Authentifizierung wird die IP des Clients angezeigt:

Einfache Update-URL:

DynDNS-kompatible URL:

Kürzeste URL:

Achtung: Basic Auth (https://user:pass@hostname) wird heute von vielen Browsern nicht mehr unterstützt bzw. stillschweigend ignoriert! So kann man Stunden damit verbringen zu suchen, wo PHP User & Passwort versteckt hat... Mit cURL funktioniert es.

Das Umschreiben von URLs (/nic/update?... nach /index.php?...) wird in der .htaccess gesteuert, mod_rewrite muss dazu aktiviert sein. Alternativ mit RedirectMatch etwas selbst basteln.

Beispiel: AVM FRITZ!Box

Eine FRITZ!Box funktioniert mit "Benutzerdefiniert" als DynDNS-Anbieter und folgenden Einstellungen:

Ddns_setup_fritzbox

Dies wird ausgewertet zu:

Beispiel: cURL

Eine simple Kommandozeile für einen Cronjob auf einem Client:

curl -v -s "https://hostname1:password1@ddns.example.com"

Beispiel: WGET

wget --http-user=hostname1 --http-passwd=password1 --no-check-certificate https://ddns.example.com

Server-Antworten

Die Antworten sind weitestgehend an den DynDNS-Standard (https://www.noip.com/integrate/response) angepasst:

Nginx-Proxy

Hinter einem Nginx als Proxy ist $_SERVER['REMOTE_ADDR'] eventuell leer: In diesem Fall muss in include/functions.php in Zeile 9 stattdessen $_SERVER['HTTP_X_REAL_IP'] verwendet werden.

   // IP des HTTP-Clients verwenden
   //define("CLIENT_IP", $_SERVER['REMOTE_ADDR']);
   define("CLIENT_IP", $_SERVER['HTTP_X_REAL_IP']);

oder alternativ muss Nginx REMOTE_ADDR bereitstellen:

fastcgi_param  REMOTE_ADDR        $remote_addr;

beziehungsweise

fastcgi_param  REMOTE_ADDR        $http_x_real_ip;

Download

Version 0.1 vom 14.04.2020: nc_ddns_master.tar.bz2

Mit Skripten und Quellcode auf dieser Seite sollte man keine Herz-Lungen-Maschine betreiben!


24 andere Seiten unter 'Computer und Netzwerk'

Permalink CC BY-NC 4.0 DEED 9718 4 14.04.2020 14.04.2021