DDNS

Aus Mediawiki Ferdinand Gruber
Version vom 16. Mai 2020, 09:46 Uhr von fg>WikiSysop (→‎IP Adresse ermitteln über PHP)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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