Selfmade dyndns

Es soll ja Leute, wie mich, mit DSL ohne Zwangstrennung geben. Hier habe ich das Problem, dass nach einem Router restart oder aehnlichem ja wieder eine neue externe IP vergeben wird. Also braucht man dyndns um auf sein Heimnetzwerk zugreifen zu koennen. Allerdings laeuft so ein Router ja auch mal ueber 30 Tage durch => dydns expired. Abhilfe schafft hier web-nsupdate. Hat man einen Webserver mit PHP, eine eigene Domain und kann diese Domain (weil man entweder selbst den Nameserver verwaltet oder der Provider mit sich reden laesst) diese per nsupdate verwalten, kann man auch selbst dydns spielen. web-nsupdate ist ein php Script, welches, mit den richtigen Parametern gestartet, ein Update des Nameservers per BIND Tool nsupdate durchfuehrt. Das ganze ist auch recht sicher. Im Config File (welches nicht im Document Root liegen sollte) gibt man fest an welche hosts ueber das Tool aktualisiert werden duerfen und vergibt noch ein Passwort. Fuer das Nameserverupdate benoetigt man noch einen Key. Der Public Key wird von web-nsupdate und der Private Key vom Nameserver benoetigt. BIND wird dann noch mitgeteilt welcher Host mit diesem Key aktualisiert werden darf (geht recht feinkoernig per ACL). Achtung in der README ist ein kleiner Bug: Der Bezeichner („web-nsupdate.“ – ACHTUNG PUNKT) im Key File und in der named.conf sollten natuerlich identisch sein. Ausserdem muss das Verzeichniss in dem das entsprechende Zone File liegt und natuerlich das Zone File selbst von Bind beschreibbar sein. (chgrp bind „dir“; chmod g+w „dir“). Anschliessend BIND restarten. Beim Reload greifen die Aenderungen nicht. Laesst sich der Nameserver updaten braucht man nur noch am Router per wget das PHP Script mit den entsprechenden Parametern aufrufen und schon ist der Nameserver aktuell. Unter Linux/Openwrt/Freewrt bietet sich dazu /etc/ppp/ip-up an. Ich habe das Script noch etwas angepasst, so dass, wenn keine IP uebergeben wird, die IP benutzt wird mit der man beim Webserver ankommt. Ist ja meistens die richtige.
Hier der Patch:

--- nsupdate.php 2005-12-26 19:21:28.000000000 +0100
+++ nsupdate.php 2006-09-14 11:29:20.000000000 +0200
@@ -10,7 +10,7 @@
#
# *** Edit this to point to where your definitions file is installed.
#
-require_once("/usr/local/lib/web-nsupdate/nsupdate-defs.php");
+require_once("nsupdate-defs.php");

/**
@@ -196,7 +196,8 @@
$p_addr = $_REQUEST['addr'];
if (empty($p_addr))
{
- trigger_error("Required parameter "addr" not specified.", E_USER_ERROR);
+ // trigger_error("Required parameter "addr" not specified.", E_USER_ERROR);
+ $p_addr = $_SERVER["REMOTE_ADDR"];
}
$p_key = $_REQUEST['key'];
if (empty($p_key))

One thought on “Selfmade dyndns

  1. Wenn man bei dyndns nicht dynamisch, sondern statisch als Dyndns Typ auswählt, läuft der Eintrag nicht nach 30 Tagen aus. Die Einschränkung ist dort quasi das Gegenteil: Der statische Typ lässt nur alle 24 Stunden eine Änderung der IP-Adresse zu (oder so ähnlich). Da man aber ohnehin nur „alle Jubeljahre mal“ den Router neu startet, ist das für dieses Setup genau das richtige.

    Ich hatte für mehrere Monate in einer Wohnung ein Kabelmodem, das auch nur sehr, sehr selten eine neue IP bekam (lange DHCP Lease-Zeiten etc.); da funktionierte der statische Typ reibungslos.

Schreibe einen Kommentar