FreeDNS

Samstag, 8. September 2007 at 16:16 Uhr

Seit Jahren verwende ich zu Hause einen Debian Linux Rechner der als Firewall den Zugriff zur Aussenwelt des Internets regelt.
Da mein Provider zwischendurch die IP Adresse meines Modem erneuert und ich jederzeit Zugriff auf meinen Server haben möchte, ohne mir immer die IP aufschreiben zu müssen, musste eine Lösung her.
Meine Wahl fiel damals auf den kostenlosen Dienst FreeDNS wo ich meine Domain eintragen liess.

Als erstes lässt man sich eine Domain über einen Domain Registrar wie SWITCH, mydomain.com oder anderen reservieren. Da diese Domains kostenpflichtig sind und der Einsatzzweck eigentlich nur aus einer Bequemlichkeit heraus folgt, kann unter Umständen eine kostenlose Domain auch den Ansprüchen genügen.

Alternativ kann man sich auch an eine der über 37’000 Domains unter FreeDNS als Subdomain anschliessen, Benutzer welche ihre Domains mit „public“ markieren, ermöglichen dieses Features. Die Adresse über die man erreichbar ist würde dann z.B. so aussehen: MeinName.mooo.com

Um FreeDNS mitzuteilen, wann sich meine IP Adresse gewechselt hat, gibt es viele Möglichkeiten. Ich habe mir damals ein Script geschrieben welches von cron alle 15 Minuten aufgerufen wird um zu überprüfen ob die IP Adresse noch gültig ist.

Ich habe das Script auskommentiert um Personen, welche keine oder wenig Kenntnisse unter Linux haben, das Verständnis über die Funktion des Scripts zu geben.

Es gibt für Windows auch praktische FreeDNS-Clients welche unter der FreeDNS Homepage zu finden sind.

#############################
# FreeDNS IP Automations-Script 
# Daniel Schurter 2001
#############################

# Der Interpreter
#!/bin/sh

# Das Netzwerk Interface welches mit dem Internet verbunden ist.
inet_if='eth0'

# An diese URL wird das Update übermittelt. Die xxx repräsentieren den Hash-Key, 
# welcher bei jedem User ein anderer ist.
url1='http://freedns.afraid.org/dynamic/update.php?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

# In diesem File wird die IP Adresse gespeichert.
ip_cache='iptmp'

# In ADDR wird die IP Adresse gespeichert welche mittels grep, sed und awk extrahiert wird.
ADDR=`ifconfig $inet_if | grep inet | sed 's/addr://g' | awk '{print($2)}'`;

# In OLD_ADDR wird die IP Adresse, welche im File iptmp hinterlegt ist, gespeichert.
OLD_ADDR=`head -1 $ip_cache`

# Das Datum mit der Uhrzeit und dem Name des Scripts wird mit der aktuellen IP messages gespeichert.
# Dies ist wichtig, um zu sehen ob das Script auch richtig läuft.
echo "`date +%c` freedns.sh >> IP: ($ADDR)" >> /var/log/messages


# Das IF Konstrukt wird ausgeführt wenn die aktuelle IP ungleich der OLD_ADDR ist.
if [ "$ADDR" != "$OLD_ADDR" ]; then
   # Die aktuelle IP Adresse wir nun in das File gespeichert.
   echo "$ADDR" > $ip_cache
   
   # wget aktualisiert die IP Adresse (wget muss auf dem System installiert sein)
   wget "$url1" -O /dev/null &>/dev/null

   # Das Datum mit der Uhrzeit und dem Name des Scripts wird mit der aktuellen IP messages gespeichert.
   # Dies ist wichtig, um zu sehen ob das Script auch richtig läuft.
   echo "`date +%c` freedns.sh >> NEUE IP: ($ADDR)" >> /var/log/messages
fi