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.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.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