DynDNS-Alternative im Eigenbau

Wer ohnehin über einen eigenen Webserver/Webspace im Internet und etwas Programmierkenntnisse verfügt, kann sich ohne großen Aufwand einen Service wie DynDNS.org & Co. sparen, will man auf Teile seines Heimnetzwerkes von Unterwegs aus zugreifen. Solche Services stellen einen Hostnamen/URL bereit (z.B. mein-heimnetzwerk.dyndns.org) welche dann auf die IP-Adresse des Heimnetzwerkes weitergeleitet wird. Neben einem oft kostenpflichtigem Benutzerkonto muss man dann nurnoch seinen Router zuhause so konfigurieren, das dieser bei einem IP-Wechsel dies automatisch an den DynDNS-Dienst übermittelt.

Heutzutage haben bereits viele Internetanschlüsse zuhause mehr oder weniger feste IP-Adressen, zumindest solange man z.B. das Kabel-Modem nicht kurzzeitig vom Strom trennt. Wer also auf nochmal sicher gehen will, richtet sich eine DynDNS-Lösung ein oder baut sich auf die schnelle selber eine. ;-)

Inhaltsverzeichnis:

Der Ablauf hin zum eigenen DynDNS-Service

1.) PHP-Script schreiben, welches die neue IP-Adresse des Heimnetzwerkes entgegen nimmt, speichert und ausgeben kann.
2.) Das PHP-Script auf einem Webserver/Webspace installieren, welcher öffentlich erreichbar ist. (z.B. http://saschas-bastelstube.de/mein_dyndns/index.php)
3.) Den Heimserver (z.B. Raspberry Pi Raspberry Pi) so einstellen (Cronjob, Task-Scheduler, o.ä.), das dieser das PHP-Script regelmäßig aufruft, um ggf. die neue IP-Adresse mitzuteilen.

Schritt 1 und 2 - Das PHP-Script

Um das Ganze so simpel wie möglich zuhalten habe ich auf eine Datenbank-Anbindung verzichtet. So wird die IP-Adresse des Heimnetzwerkes einfach in eine Datei geschrieben.

//dateinamen ggf. ändern; config_file enthält später die IP des Heim-Netzwerkes;
$config_file = "myip.txt";

Um einen Hauch von Sicherheit in das Script zubringen, definieren wir als nächstes zwei Variablen mit jeweils einer zufälligen Zeichenkette. Diese Zeichenketten müssen beim Schreiben ($secret) und Lesen ($getip) der IP-Adresse des Heimnetzwerkes übermittelt werden, um sicher zustellen, das nur befugte Personen Zugriff auf die Funktionalität erhalten. Wem das nicht reicht, kann die Verbindung auch per SSL verschlüsseln und um das Ganze ein Login-System bauen. ;-)

//Diese Zeichenkette wird vom Heimnetzwerk-Server per GET übergeben, woraufhin die neue IP-Adresse im config-file gespeichert wird;
$secret = "1234567890";
    
//Diese Zeichenkette muss per GET übergeben werden, um die aktuelle IP-Adresse des Heim-Netzwerkes zu erhalten;
$getip = "0987654321";

Nun folgen noch ein paar Zeilen Code der das Schreiben, Lesen und Ausgeben der IP-Adresse übernimmt.

if (isset($_GET['secret']))
    {
        if (strcmp($secret, $_GET['secret']) == 0)
        {
            //secret korrekt; IP-Adresse speichern;
            $ip = $_SERVER['REMOTE_ADDR'];
            
            $f = fopen($config_file, "w");
            fwrite($f, $ip);
            fclose($f);
        }
    }
    else if (isset($_GET['getip']))
    {
        if (strcmp($getip, $_GET['getip']) == 0)
        {
            //secret korrekt; IP-Adresse herausgeben;
            $f = fopen($config_file, "r");
            $ip = fread($f, 32);
            fclose($f);
            
            echo $ip;
        }
    }

Das Script ist nun für einen Test bereit, also hochladen. Ruft man die URL des Webspaces indem das Script liegt nun mit dem Parameter secret=1234567890 auf, wird die IP-Adresse des aufrufenden Rechners gespeichert. Ein Aufruf mit getip=0987654321 hingegen gibt die IP-Adresse aus.

christ schmuck.jpgJe nachdem wie man den Zugang zum Heimnetzwerk nutzen möchte, macht es ggf. Sinn anstatt mit echo die IP-Adresse auszugeben, lieber mit Header("Location: http://".$ip."/deeplink-ins-heimnetz/"); den User bzw. den aufrufenden Rechner direkt weiterzuleiten. Möchte man die IP-Adresse statt dessen z.B. über eine App nur abrufen, um dann eigene Pfade oder Calls ins Netzwerk zu bilden, genügt an dieser Stelle das echo der IP-Adresse.

Link zum PHP-Script für den eigenen DynDNS-Server:
-= Download DynDNS-Server =-

Schritt 3 - PHP-Script aus dem Heimnetzwerk heraus aufrufen

In meinem Fall steht ein Raspberry Pi (Model B) im Heimnetzwerk, welcher als Server fungiert. Mein Webrouter wurde so konfiguriert (IP-Forwarding), das der RaspberryPi auf Anfragen aus dem Internet auf Port 80 (http) antwortet. Um den Pi zu veranlassen, sagen wir alle 10 Minuten das PHP-Script aufzurufen, um so ggf. die neue IP-Adresse des Heimnetzwerkes mitzuteilen, öffnen wir die Datei /etc/crontab und fügen folgende Zeile hinzu:

*/10 * * * * pi wget -O /dev/null "http://mein-webspace.de/index.php?secret=1234567890"

Nun gibt der Pi im 10-Minuten-Interval die IP-Adresse des Heimnetzwerkes durch. - Fertig! :-)

Schlusswort / Fazit zum Do-It-Yourself Dyn.DNS-Service

Natürlich ist das keine professionelle, aber dafür schlicht und einfache Lösung, um einen eigenen DynDNS-Service zu realisieren. Alles in allem tut es, was es soll! :-)

Wie schon kurz erwähnt ist das Script in Hinblick auf Sicherheit und Datenschutz noch anzupassen. Sinnvoll wären auf jedenfall starke Passwörter ($secret und $getip), und einen ebenso zufälligen wie mindestens 16 Zeichen langen Namen für die Datei in der die IP-Adresse des Heimnetzwerkes abgelegt wird ($config_file -> z.B. jkSD43jkdmrwf4993jk_43s4AA!.txt).

uhrcenter.jpg

Eine SSL-Verschlüsselung wäre auch nicht schlecht, allerdings ist das Thema Sicherheit in diesem Fall auch relativ, zumindest was das Lesen der IP-Adresse angeht. Denn jeder Dienst der im Heimnetzwerk läuft und von außen erreichbar sein soll, sei es Cloud oder Media-/Web-Server, sollte über eine eigene Zugangskontrolle bzw. Login mit Benutzernamen und Passwort verfügen, sodass es nicht allzu tragisch ist, wenn jemand an die IP-Adresse des Heimnetzwerkes gelangt, sodass man auch beim Aufruf des Scriptes auch ohne den $getip-Parameter die IP-Adresse ausgeben könnte. So bleibt es schlichtweg jedem selbst überlassen, wieviel Aufwand er (oder sie ;)) in die Absicherung steckt....

Author: Sascha von Saschas-Bastelstube.de

Autor: sascha

Ein paar Worte über mich selbst. Mein Name ist Sascha, wie der Titel dieses Blogs erahnen lässt. :-) Ich bin von Beruf selbstständiger Programmierer und Trader. Neben Programmierung, Trading und Kampfsport sind einige meiner Interessen und Hobbys das Kochen, Fitness und das Hören lauter Heavy-Metal Musik. :D

This might also be interesting for you

Experiment: Hacking Ethereum Wallets - Bruteforce

Vor einiger Zeit bin ich durch Zufall auf ein Youtube-Video gestoßen mit dem Titel: "Eth Wallet Bruteforce Hack". Ein Programmierer zeigte da ein einfaches Python Script welches einen zufälligen Private-Key (64 Zeichen / 32 Byte / 256 Bit) generieren konnte. Daraus wurde Public-Key und Adresse errechnet und an einen Blockchain-Explorer-Webseite wie Etherscan.io übergeben ob diese … „Experiment: Hacking Ethereum Wallets - Bruteforce“ weiterlesen


Raspberry Pi und weitere Mini-Computer

Der Raspberry Pi ist nach wie vor einer der beliebtesten Mini-Computer. Dieser und andere Kleinst- und Einplatinencomputer sind nicht nur bei Bastlern und Hobbyschraubern beliebt. Kostengünstig, flexibel im Anwendungsbereich und mit ausreichend CPU-Leistung und Arbeitsspeicher ausgestattet, um auch etwas komplexere Aufgaben lösen zu können. Ethernet-Anschluss, HDMI-Ausgang, und Quadcore-CPUs mit über 1 Ghz machen Spass und … „Raspberry Pi und weitere Mini-Computer“ weiterlesen


Fitnessboard v1 - DIYS

Am Wochenende hatte ich glücklicherweise mal wieder etwas Zeit zum Basteln und dazu noch eine ganz nette Idee für ein Fitness-Board für das Training zuhause, welches aus der Liegestütz-Position bedient wird. Ein Video dazu gibt es weiter unten in diesem Artikel und im Youtube-Channel von tedokai.de. Jeder der Zuhause dann und wann Sport betreibt kennt … „Fitnessboard v1 - DIYS“ weiterlesen


iTunes-Connect - Sales-Reports

Wer Apple und iTunes-Connect (ITC) kennt, weiß von den Problemchen welche ITC teilweise mit sich bringt. Mich persönlich hat immer gestört, das die Sales-Reports / Verkaufszahlen des Vortages manchmal erst am späten Abend des Folgetages verfügbar waren. Das liegt wohl daran, das die Apple-Server die Reports für jeden Entwickler aufbereiten müssen und es hier öfter … „iTunes-Connect - Sales-Reports“ weiterlesen


Screen Recorder / Capture Software selber programmieren

Auf der Suche nach einem einfach zu bedienenen Screen-Recorder-Tool bin ich über allerhand kostenloser sowie kostenpflichtiger Softwarelösungen gestolpert. Aus meiner Sicht waren ziemlich alle entweder völlig überladen oder auch schlecht bzw. kompliziert zu bedienen. Andere waren auch einfach nur teuer im Verhältnis zum Funktionsumfang. Mein Fazit: Selber programmieren! Inhaltsverzeichnis:Screen-Recorder-Tool selber programmierenSchritt 1 - FFMPEG.NET Library … „Screen Recorder / Capture Software selber programmieren“ weiterlesen