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:
mod_rewrite oder mod_alias für DynDNS-kompatible URLs (/nic/update?...)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.
example.com einrichtenddns.example.comBis 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.comDocumentRoot 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/localhostDDNS_ZONE: Die zu aktualisierende Zone wie ddns.example.com, ohne Punkt am EndeKEY_NAME: Der Name des Update-Schlüssels, wie ddns-update-key-phpKEY_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$$pASSw0rdDynDNS-kompatible URL:
http://ddns.example.com/nic/update?name=home&pass=home$$pASSw0rdhttp://ddns.example.com/nic/update?hostname=home&pass=home$$pASSw0rdKürzeste URL:
http://home:home$$pASSw0rd@ddns.example.comAchtung: "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.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