Eigener DynDNS mit Bind, Apache und PHP

Geschrieben am 03.03.2015, zuletzt geändert am 18.11.2019
In Home » Computer und Netzwerk

Diese Seite wurde vor über einem Jahr erstellt oder zuletzt bearbeitet. Der Inhalt ist eventuell veraltet.

Aktualisiert: Version 2.0 für Bind und dnsmasq ist hier

Nach einigem Googeln in die Tat umgesetzt, um von Dienstleistern unabhängig zu werden: Ein DynDNS-Server mit Bind, Apache und PHP. Eine (kurze) Anleitung findet sich auch in der README.txt des Archivs, hier die Zusammenfassung:

Voraussetzungen

Ich gehe davon aus, dass man – sofern man die Rechte zum Update seiner eigenen DNS-Zone hat – auch über die nötigen Kenntnisse im Umgang mit PHP, Apache und der Shell hat.

Installation

Bis hierher ist das Setup dem Leser überlassen, nur einige Anhaltspunkte zum Weiterlesen:

Für das Erstellen des Keys taugt folgendes Kommando:

ddns-confgen -q -a hmac-md5 -k ddns-update-key-php -r /dev/urandom | tee ddns-update-key-php

In der named.conf den Key definieren:

// DDNS-Update Key
key "ddns-update-key-php" {
    algorithm hmac-md5;
    secret "5F1234TrallalaHopsassa12345abcABCC+jc1A==";
};

und in der Zone Updates mit diesem Key erlauben:

zone "ddns.example.com" {
    // ...
    allow-update {
       key ddns-update-key-php;
    };
    // ...
};

Installation und Konfiguration der Software

Bearbeiten von include/config.php, mindestens:

Bearbeiten von include/users.php: USERNAME ist gleichzeitig der dynamische Hostname, also USERNAME.ddns.example.com. Beispiel:

$known_clients['home'] = 'home$$pASSw0rd';

Der User home mit dem Passwort home$$pASSw0rd ist somit für das Update von home.ddns.example.com eingerichtet.

Tests mit einem Browser

Ohne Authentifizierung wird die IP des Clients angezeigt:

Einfache Update-URL:

DynDNS-kompatible URL:

Kürzeste URL:

Achtung: "Basic Auth" (http://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….

M0n0wall

M0n0wall (dessen DynDNS-Client seit Jahren verbockt ist), lässt sich so mit der Einstellung "DynDNS (custom)" zum Laufen bekommen:

Ddns_setup_m0n0wall

Er ruft dann folgende URL auf:

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

AVM FRITZ!Box

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

Ddns_setup_fritzbox

Dies wird ausgewertet zu:

Bash/cURL

Eine simple Kommandozeile für einen Cronjob:

curl -v -s "http://home:home$$pASSw0rd@ddns.example.com"

Server-Antworten

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

Dateien

Download (Version 1.0): privater-ddns_1.0.tar.bz2

Die Inhaltsstoffe, 1 zu 1 aus dem Archiv zitiert:

favicon.ico            - An icon. You guessed it. Ripped from DynDNS
index.php              - Main php file
.htaccess              - Basic settings and rewriting of DynDNS protocol URLs
data/${client}.ip      - Stored client IPs
data/.htaccess         - Folder protection
include/config.php     - PHP system configutation
include/functions.php  - PHP functions
include/users.php      - DynDNS user setup
include/.htaccess      - Folder protection
log/debug.log          - Log for debugging
log/events.log         - Log for events
log/.htaccess          - Folder protection

Andere Seiten unter 'Computer und Netzwerk'