DynDNS Client mit Perl Programmieren

DNS Einträge dynamisch aktualisieren, das braucht einen Service und einen Client

DynDNS braucht Provider, der den Service (Dienst, DDNSS) bereitstellt, und einen Client, welcher mit dem Dienst kommuniziert. Somit ist DynDNS eine Client/Server-Anwendung und dieser Artikel wird etwas mehr zum Verständnis beitragen, indem er die Funktionsweise des Clients erklärt. Eine Solchen selbst aufzusetzen ist nämlich gar nicht so kompliziert und andererseits auch notwendig, weil nicht jeder Router im Heimnetzwerk einen DDNSS unterstützt. Ein DDNSS-Client muss Folgendes tun: 1. Die aktuelle eigene IP-Adresse feststellen, 2. Bei Änderung der IP-Adresse einen Update-Request zum Server senden. Zu (1) wird ein Webservice benötigt, der die REMOTE_ADDR liefert: my $req = HTTPRequest->common( method => 'GET', host => 'handwerkzeugs.de', uri => '/proxytest.html', ) || die $@; my $ip_current = $req->response_header->{'x-remote-addr'} || ''; Die IP-Adresse steht also in einem Response-Header, der Webservice kann die aber auch im Body liefern, wenn der Request mit dem Parameter ?remote_addr=1 erfolgt. Zum Vergleich, ob sich die Adresse geändert hat, wird sie aus einer lokalen Datei gelesen: my $ip_stored = do{ my $fh = IO::File->new; $fh->open($ipfile, O_CREAT|O_RDONLY) || die $!; read($fh, my $addr, -s $fh); $fh->close; $addr || ''; }; Zum Schluss bleibt nur noch eine Kontrollstruktur über das, was zu tun ist: if($ip_current ne $ip_stored){ print "Update\n"; my $r = HTTPsRequest->common( method => 'GET', host => 'www.dnshome.de', uri => '/dyndns.php', Authorization => sprintf("Basic %s", encode_base64('USERNAME:PASSWORD')), ); # Datei mit geänderter IP Addresse neu beschreiben my $fh = IO::File->new; $fh->open($ipfile, O_RDWR|O_TRUNC) || die $!; $fh->print($ip_current); $fh->close; } else{ print "Aktuell\n"; } Dieses Script wird nun noch in die Crontab eingetragen und jede Minute aufgerufen. Das ist Alles. Für den CRON-Daemon unter Win32 empfiehlt sich Win32::Daemon bzw. der Dienst CRONw welcher damit gemacht ist.

Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. s​os­@rolf­rost.de.