dynDNS

Zum Aktualisieren eines dynamischen DNS-Eintrags von DynDNS.com können Sie neben dem Programm inadyn auch das Perl-Skript ddclient verwenden. ddclient kann Ihre externe IP-Adresse direkt von der Hardware-Schnittstelle, von der Statusseite Ihres Routers oder mittels dem CheckIP Service von DynDNS.com ermitteln. Seit der Version 3.7.0 unterstützt ddclient auch das Updaten über HTTPS.

Wie funktioniert dyndns

Konto erstellen

Dazu auf die Seite http://www.dyndns.org/account/create.html gehen und dort ein Konto erstellen.

Nach der Aktivierung des Accounts legen wir uns zuerst einen Host (der Name, unter dem unsere Homepage gefunden werden soll) an. Falls noch nicht geschehen bitte mit den Userdaten bei http://www.dyndns.org einloggen (auf der Webseite oben rechts). Um einen neuen Host anzulegen, müssen wir in den Bereich „Services“ wechseln und dort „Add Host“ auswählen.
Im folgenden Formular können wir nun unseren gewählten Host-Namen eintragen und einer Domain zuweisen. Als dynDNS Name eine das angebotenen Domänen auswählen und bestätigen.

Installation und Konfiguration

Bei erweiterten Repositorys ist die Installation einfach:

yum install ddclient

Dieser Weg ist zu empfehlen. Ist dies nicht möglich, bleibt der Weg der manuellen Installation:

Wechseln Sie zuerst ins Verzeichnis /usr/src/ und laden den Quellcode herunter.

[root@centos ~]# cd /usr/src/
[root@centos src]# wget http://sourceforge.net/projects/ddclient/files/latest/download?source=files

Nachdem Sie den Quellcode entpackt haben, wechseln Sie in das Verzeichnis ddclient-3.8.0.

[root@centos src]# tar xfz ddclient-3.8.0.tar.gz
[root@centos src]# cd ddclient-3.8.0

Da es vorkommen kann, dass sich die Installationsanweisung modernerer Versionen verändert, ist es ratsam ab hier zuerst die Datei README zu lesen.

Kopieren Sie ddclient in das Verzeichnis /usr/sbin/ und erstellen die Verzeichnisse /etc/ddclient und /var/cache/ddclient.

[root@centos ddclient-3.8.0]# cp ddclient /usr/sbin/
[root@centos ddclient-3.8.0]# mkdir /etc/ddclient /var/cache/ddclient

Aus Sicherheitsgründen sollten Sie ddclient unter einem eigenen Benutzer laufen lassen. Dazu erstellen Sie mit den folgenden zwei Befehlen eine Systemgruppe ddclient und einen Systembenutzer ddclient welcher zur Gruppe ddclient gehört und sich nicht am System anmelden kann.

[root@centos ddclient-3.8.0]# groupadd -r ddclient
[root@centos ddclient-3.8.0]# useradd -r -m -g ddclient -s /bin/false -c "ddclient" ddclient

Anschließend erstellen Sie die Konfigurationsdatei /etc/ddclient/ddclient.conf. Im Quellcode finden Sie die Beispiel-Konfigurationsdatei sample-etc_ddclient.conf.

[root@centos ddclient-3.8.0]# vi /etc/ddclient/ddclient.conf

Eine minimale Konfiguration könnte wie folgt aussehen.

daemon=600
pid=/var/run/ddclient.pid
syslog=yes
use=web, web=checkip.dyndns.com/, web-skip='IP Address'
login=Benutzername
password=Passwort
protocol=dyndns2
server=members.dyndns.org
Hostname.dyndns.org

Um zu verhindern, dass alle Benutzer die Login-Daten lesen können, ändern Sie den Besitzer und die Zugriffsrechte der Konfigurationsdatei.

[root@centos ddclient-3.8.0]# chown ddclient:ddclient /etc/ddclient/ddclient.conf
[root@centos ddclient-3.8.0]# chmod 0600 /etc/ddclient/ddclient.conf

Erstellen Sie als nächstes das Init-Skript für ddclient.

[root@centos ddclient-3.8.0]# vi /etc/rc.d/init.d/ddclient

Das folgende Skript ermöglicht das Starten, Stoppen und Neustarten des ddclient-Daemons. Kopieren Sie den Code in die Datei /etc/rc.d/init.d/ddclient.

#!/bin/sh
# chkconfig: - 65 35
# description: ddclient provides support for updating dynamic DNS services.
 
# Check that config file exist
[ -f /etc/ddclient/ddclient.conf ] || exit 0
 
# Source function library
. /etc/rc.d/init.d/functions
 
# Source networking configuration
. /etc/sysconfig/network
 
# Check that networking is up
[ "$NETWORKING" = "no" ] && exit 0
 
exec=/usr/sbin/ddclient
lockfile=/var/lock/subsys/ddclient
cache=/var/cache/ddclient/ddclient.cache
pid=/var/run/ddclient.pid
 
start() {
  echo -n "Starting ddclient: "
  [ -f $cache ] || touch $cache
  chown ddclient:ddclient $cache && chmod 0600 $cache || exit $?
  [ -f $pid ] || touch $pid
  chown ddclient:ddclient $pid && chmod 0600 $pid || exit $?
  daemon --user=ddclient --pidfile=$pid $exec
  retval=$?
  echo
  [ $retval -eq 0 ] && touch $lockfile
  return $retval
  }
 
stop() {
  echo -n "Stopping ddclient: "
  killproc $exec
  retval=$?
  echo
  [ $retval -eq 0 ] && rm -f $lockfile
  return $retval
  }
 
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  status)
    status ddclient
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status}"
    ;;
esac
 
exit 0

Nachdem das Init-Skript erstellt wurde, ändern Sie die Zugriffsberechtigungen der Datei.

[root@centos ddclient-3.8.0]# chmod 0755 /etc/rc.d/init.d/ddclient

Anschließend wird der Service ddclient mit den folgenden Befehlen erstellt und im Runlevel 3 und 5 aktiviert.

[root@centos ddclient-3.8.0]# chkconfig --add ddclient
[root@centos ddclient-3.8.0]# chkconfig --level 35 ddclient on

Der soeben erstellte Service kann jetzt gestartet werden.

[root@centos ddclient-3.8.0]# service ddclient start

Sollten Sie Probleme mit dem Daemon haben, überprüfen Sie die Logdatei /var/log/messages nach möglichen Fehlermeldungen.

[root@centos ddclient-3.8.0]# tail -f /var/log/messages

Übertragung der DNS-Updates mit SSL absichern

Wenn Sie die Übertragung der DNS-Updates mittels SSL absichern wollen, benötigen Sie das Perl-Modul IO::Socket::SSL. Dieses installieren Sie unter CentOS 5 mit dem folgendem Befehl.

[root@centos ddclient-3.8.0]# yum install perl-IO-Socket-SSL

Anschließend müssen Sie die Konfigurationsdatei um die Option ssl erweitern.

[root@centos ddclient-3.8.0]# vi /etc/ddclient/ddclient.conf

Fügen Sie die folgende Zeile in die Konfigurationsdatei ein.

ssl=yes
</coe>
Nachdem Sie die das Perl-Modul installiert und die Konfiguration angepasst haben, müssen Sie ddclient neu starten.
<code/bash>
[root@centos ddclient-3.8.0]# service ddclient restart

Online-Hilfe

Die Online-Hilfe von ddclient wird Ihnen durch die Option –help angezeigt. Da diese jedoch sehr umfangreich ist, sollten Sie diese an less weiterleiten.

[root@centos ddclient-3.8.0]# ddclient --help | less

Kurzanleitung

Installation
wget http://cdn.dyndns.com/ddclient.tar.gz
tar -xzvf ddclient.tar.gz
cd ddclient-3.7.3/
mkdir /etc/ddclient
mkdir /var/cache/ddclient
cp ddclient /usr/local/bin
cp sample-etc_ddclient.conf
cp sample-etc_rc.d_init.d_ddclient /etc/rc.d/init.d/ddclient
chkconfig --add ddclient
cd ..
rm -rf ddclient-3.7.3/

Now edit the /etc/ddclient/ddclient.conf file:

vim /etc/ddclient/ddclient.conf

so that it contains something like:

use=web
login=yourdndnslogin
password=yourdyndnspassword
server=members.dyndns.org,            \
protocol=dyndns2                      \
yourhost.dyndns.domain

Now start the ddclient daemon:

/etc/init.d/ddclient start

You can check status and troubleshoot using:

/etc/init.d/ddclient status
/etc/init.d/ddclient stop
tail /var/log/messages

Konfiguration mit Wenmin

Dazu unter www.webmin.org das Paket ddclient suchen und als neues Modul in Webmin installieren.
Die Konfiguration (/etc/ddclient/ddclient.conf) muss noch angepasst werden

Weitere Anwendungen

Mit dem IPhone auf die Fritzbox Telefonliste zugreifen

Alternativen zu DynDNS

Leider kostet der Dienst mitlerweile bei langfristiger Nutzung Geld. Alternativen sind:

Kurzanleitung SPDNS mit dyndns

daemon=600                                       # alle 600 Sekunden wird synchronisiert
mail=deine@mail.adresse                          # für Info-Mails (alle 10 Minuten!)
mail-failure=deine@mail.adresse                  # für Error-Mails
pid=/var/run/ddclient.pid                        # PID-File
cache=/tmp/ddclient.cache                        # Cache
protocol=dyndns2
use=web, web=checkip.spdns.de
wildcard=YES
server=update.spdns.de
#ssl=yes
login=benutzername                               # Bitte ändern
password='passwort'                              # auch ändern
erster_Host.spdns.de,zweiter_Host.spdns.de       # hier auch ändern
chown ddclient:ddclient /etc/ddclient/ddclient.conf
chmod 0600 /etc/ddclient/ddclient.conf
touch /var/run/ddclient.pid
chown ddclient:ddclient /var/run/ddclient.pid
service ddclient start
chmod 777 /tmp/ddclient.cache                   
ddclient -daemon=0 -debug -verbose -noquiet

Die Rechteänderung am tmp-File ist nur nötig, da ddclient zuvor als Dämonn, und damit unter root, gestartet wurde.

ddclient-Bug beseitigen

Wenn ein ähnlicher Fehler

cannot connect to checkip.spdns.de:80 socket: IO::Socket::INET: Bad hostname 'checkip.spdns.de'

auftritt, ligt das an einem Namenauflösungsfehler. Dies kann man so beheben:
In die Datei /etc/ddclient.conf diese Zeile hinzu fügen:

use=cmd, cmd=/etc/checkip.sh, cmd-skip='IP Address' # found after IP Address

Jetzt dei Datei /etc/checkip.sh erstellen

#!/bin/sh
#
# A script to fill in for what ddclient
# can't seem to do: reliably connect to checkip.dyndns.org.
curl http://checkip.dyndns.org/

und die Datei für alle ausführbar machen.
ddclient neu starten