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:
mod_rewrite
oder mod_alias
für DynDNS-kompatible URLs (/nic/update?...)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.
example.com
einrichtenddns.example.com
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;
};
// ...
};
ddns.example.com
DocumentRoot
entpackenwww-data:www-data
) lesbar, die Ordner log/
und data/
schreibbar machenBearbeiten von include/config.php
, mindestens:
DNS_SERVER
: Höchstwahrscheinlich 127.0.0.1
/localhost
DDNS_ZONE
: Die zu aktualisierende Zone wie ddns.example.com
, ohne Punkt am EndeKEY_NAME
: Der Name des Update-Schlüssels, wie ddns-update-key-php
KEY_VALUE
: Der Wert ("secret") des Schlüssels, wie 5FPbxxVasoXxssC+jc1A==
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.
Ohne Authentifizierung wird die IP des Clients angezeigt:
http://ddns.example.com/
Einfache Update-URL:
http://ddns.example.com/?name=home&pass=home$$pASSw0rd
DynDNS-kompatible URL:
http://ddns.example.com/nic/update?name=home&pass=home$$pASSw0rd
http://ddns.example.com/nic/update?hostname=home&pass=home$$pASSw0rd
Kürzeste URL:
http://home:home$$pASSw0rd@ddns.example.com
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 (dessen DynDNS-Client seit Jahren verbockt ist), lässt sich so mit der Einstellung "DynDNS (custom)" zum Laufen bekommen:
Er ruft dann folgende URL auf:
http://[username]:[password]@ddns.example.com/nic/update?system=custom&hostname=[hostname]&myip=[wan-ip]&wildcard=OFF&
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.
Eine FRITZ!Box funktioniert mit "Benutzerdefiniert" als DynDNS-Anbieter und folgenden Einstellungen:
Dies wird ausgewertet zu:
http://[username]:[password]@ddns.example.com/?hostname=<username>&pass=<pass>&hostname=<domain>&myip=<ipaddr>
Eine simple Kommandozeile für einen Cronjob:
curl -v -s "http://home:home$$pASSw0rd@ddns.example.com"
Die Antworten sind weitestgehend an den DynDNS-Standard (http://www.noip.com/integrate/response) angepasst:
good IP_ADDRESS
: Host aktualisiertnochg IP_ADDRESS
: Keine Änderung seit letztem Updatebadauth
: Benutzer und/oder Passwort ungültig911
: Interner Serverfehler (Apache Error 500, IP-Datei nicht schreibbar, nsupdate
-Fehler)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