DDNS: Unterschied zwischen den Versionen

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen
fg>WikiSysop
 
K (1 Version importiert)
 
(kein Unterschied)

Aktuelle Version vom 7. Oktober 2020, 16:02 Uhr

DDNS Anbieter

Einen Account bei http://freedns.afraid.org anlegen - ganz unten auf SignUp klicken.

  • Subdomain anlegen

Auf der Webseite http://freedns.afraid.org eine neue Subdomain anlegen, z.B.

my_subdomain.mooo.com
  • DDNS aktivieren

In der linken Navigationsleiste von http://freedns.afraid.org auf Dynamic DNS klicken. Es erscheint eine Seite, auf der alle Subdomains aufgelistet werden.

  • DDNS Client

Man kann auf einen speziellen DDNS Client verzichten. Die IP Adresse der Domain my_subdomain.mooo.com wird durch einen Cron Job aktualisiert.

crontab -e

*/5 * * * * sleep 42 ; wget -O - http://freedns.afraid.org/dynamic/update.php?xyxyxyxyxyxyxyxyx >> /tmp/freedns_my_subdomain_mooo_com.log 2>&1 &

Dieses Kommando wird angezeigt, wenn man in der Subdomain Zeile auf Example klickt.

Die Zeichenfolge hinter dem ? ist die generierte Id für diesen Account.

IP Adresse ermitteln über PHP

PHP Skript, welches die öffentliche IP Adresse des Clients am Server als Datei ablegt:

$fileName = __DIR__."/".$_GET["hostname"]."_".$_SERVER["REMOTE_ADDR"];
echo "Update auf ".$_SERVER["SERVER_NAME"]."\n";
echo $_SERVER["REMOTE_ADDR"];
@unlink (__DIR__."/".$_GET["hostname"]."*");
touch ($fileName) or trigger_error($fileName." kann nicht angelegt werden.");

Es wird in dem Verzeichnis, in dem das Skript liegt, eine leere Datei angelegt, die im Dateinamen die IP Adresse enthält.

# Beispiel
ClientHostname_46.75.123.43

PHP Script aufrufen

Folgender Befehl ruft am Server das oben beschriebene Skript auf:

wget -qO - https://my.example.com/fg_home/ip.php?hostname=$(hostname)

Automatisieren

Damit man immer die aktuelle IP Adresse bekommt, kann man einen Cronjob am Client einrichten: Ich habe obigen Befehl in ein Bash Skript geschrieben:

# ddns_update.sh
wget -qO - https://my.example.com/fg_home/ip.php?hostname=$(hostname)

Cronjob definieren

crontab -e
*/9 * * * *  /usr/local/bin/ddns_update.sh > /dev/null 2>&1