Impressum

MyDynDNS -

DynDNS-Funktionalität selbstgemacht

Das Problem:

Wer zuhause einen Web-Server betreibt, möchte diesen nicht nur im heimischen (lokalen) Netz erreichen können, sondern auch aus dem Internet, also von einem beliebigen Ort irgendwo auf der Welt. Dazu ist es aber erforderlich, dass die "echte" IP-Adresse des Home-Servers bekannt ist (also die Adresse des DSL-Routers, an dem der Home-Server angeschlossen ist). Diese IP-Adresse wird vom Internet-Provider vorgegeben und das Problem ist, dass sich diese Adresse täglich ändert. Die Vergabe einer festen IP-Adresse ist im privaten Umfeld äußerst selten.

Das Problem besteht also darin, diese täglich sich ändernde Adresse irgendwie im Web zu veröffentlichen, sodass an einem beliebigen Ort, von wo aus man auf den Home-Server zugreifen möchte, diese aktuelle Adresse bekannt ist. Das klassische Mittel der Wahl ist unter dem Stichwort DynDNS bekannt, realisiert durch eine Reihe von DynDNS-Servern. Der bekannteste ist DynDNS.org. In Verbindung mit einer entsprechend darauf abgestimmten Funktion in den meisten DSL-Routern ist es möglich, unter einem Subdomain-Namen unter DynDNS.org seinen eigenen privaten Server zu erreichen.

Nun gibt es aber eine Reihe von Überlegungen, die die (nicht immer kostenlose) Nutzung solcher DynDNS-Dienste als nicht angeraten erscheinen lassen. Die wichtigsten sind:

Für viele Home-Server-Betreiber erscheint es daher wünschenswert, eine DynDNS-Funktionalität komplett in eigener Regie zu implementieren.

Die Lösung:

Eine sehr einfache Lösung bietet sich an, wenn man außer seinem privaten Home-Server noch eine Internet-Domain bei einem beliebigen Provider unterhält (sogen. "Homepage"). Diese muß keinen großen Webspace beinhalten (genaugenommen reicht 3 kByte aus). Voraussetzung ist lediglich PHP-Unterstützung.

Die Lösung basiert auf der Idee, dass die Homepage keinen eigenen Inhalt hat, sondern nur dazu dient, auf den privaten Home-Server umzuleiten, wenn sie aus dem weltweiten Netz aufgerufen wird. Dazu werden nur wenige Zeilen Programmcode benötigt.

Im folgenden wird eine Lösung für die OS/2-Plattform beschrieben:

Die Software-Komponenten:

Es werden zwei Programme benötigt (genauer gesagt: zwei Skripte):

  1. Im lokalen Netz: Ein Requester, der in bestimmten Abständen ein PHP-Skript auf der eigenen Homepage aufruft
  2. Auf der eigenen Homepage: Ein PHP-Skript, das die echte IP-Adresse des Home-Servers feststellt und in einer Datei im Webspace speichert (zusammen mit der Portnummer, unter der der Homeserver zu erreichen ist).

Zu (1):
Der Requester ist in Rexx geschrieben und soll den Namen MyDynDNS.cmd erhalten.

Das Rexx-Skript MyDynDNS.cmd läuft im 24/7-Modus, d.h. grundsätzlich permanent (so wie auch der Home-Server, um dessen Erreichbarkeit im weltweiten Netz es geht). Es besteht im wesentlichen aus einer Schleife, die im Abstand von einigen Minuten jeweils einmal einen HTTP-GET-Request auf die private Homepage ausführt.

Zu (2):
Das Skript auf der Homepage ist in PHP geschrieben und soll den Namen index.php erhalten.

Der Sinn des Namens index.php besteht darin, dass üblicherweise der sogen. Directory-Index der Webserver, unter denen Homepages laufen, als Wert 'index.html, index.php' hat, was soviel bedeutet, dass diese Namen automatisch herangezogen werden, wenn nur der Domain-Name angesprochen wird (bzw. das Unterverzeichnis, in dem die index-Datei liegt).

Ein Unterverzeichnis ist dann sinnvoll, wenn die Homepage (der Webspace) nicht ausschließlich zu den hier beschriebenen Zwecken dient. In dem Fall wäre dann 'Domain/Unterverzeichnis' die Ziel-URL für index.php.

Der name index.php ist natürlich nicht zwingend, man kann die Datei auch anders nennen. Nur muß man dann bei allen Aufrufen entsprechend den Namen mit angeben.

Download:

Die beiden Skripte können hier downgeloaded werden. Weitere Erläuterungen befinden sich im Code.

Code-Modifikation:
Das Rexx-Skript MyDynDNS.cmd ist anzupassen an den Namen (inkl. ggf. eines Unterverzeichnis) der Homepage und der Portnummer, unter der der Home-Server läuft.

Das PHP-Skript benötigt nicht zwingend eine Anpassung. Es ist in den Webspace bzw. ein Verzeichnis darin hochzuladen.

Router-Konfiguration:
Im DSL-Router muß die Funktion "Port-Forwarding" benutzt werden, um die Port-Nummer des Home-Servers dem konkreten Gerät zuzuweisen. Wie das genau durchzuführen ist, kann hier nicht beschrieben werden, weil es je nach Router unterschiedlich gehandhabt wird.

Aufruf aus dem Internet:

Nachdem die beiden Skripte wie oben beschrieben angepasst und gespeichert sind, wird das Rexx-Skript gestartet (und der Home-Server natürlich auch). Danach kann von einem beliebigen PC, Notebook, Tablet etc. irgendwo in der Welt der Home-Server angesprochen werden, indem als URL der Name der Homepage (ggf. inkl. Unterverzeichnis) in den Browser eingetippt wird.

Schlußbemerkung:

Die hier beschriebenen und zum Download bereitgestellten Programme (Skripte) erledigen die Aufgabe, aber in sehr rudimentärer Weise. Sinnvolle Ergänzungen wären:

Eine solche Lösung ist gegenwärtig in Arbeit (als VX-Rexx-exe) und wird in Kürze hier zur Verfügung gestellt werden.

Falls noch Fragen dazu bestehen, kann man mir gern eine Mitteilung zukommen lassen (via Impressum, s.o.).