Eigener DynDNS mit Bind, Apache und PHP



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

Eine Version für dnsmasq ist hier zu finden.

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

Die Rewrite-Regel für Apache sieht in etwas wie folgt aus:

RewriteEngine on
RewriteRule ^/nic/update?(.*)$ /index.php?$1 [NC, QSA]

also alle GET-Parameter, die der Standard-URL /nic/update mitgegeben werden, werden an /index.php übergeben.

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.1): privater-ddns_1.1.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

24 andere Seiten unter 'Computer und Netzwerk'

Permalink CC BY-NC 4.0 DEED 8030 2 03.03.2015 08.05.2021