Raspberry Pi DDNS Client



Inhalt

  1. 1. Einführung
  2. 2. Das Prinzip
  3. 3. UM Horizon HD Recorder konfigurieren
  4. 4. Raspbery Pi einrichten
  5. 5. WAN-IP-Aktualisierung prüfen
  6. 6. Fazit



Anzeige

1. Einführung

Viele Benutzer des Unitymedia Horizon HD Recorders, die von Aussen über das Internet auf das Heimnetzwerk zugreifen möchten, kennen das Problem mit der Domäne. Die Set-Top-Box unterstützt nähmlich keine DDNS Anbieter und ist nicht in der Lage die Domänen-IP-Adresse zu aktualisieren.

In diesem Tutorial erkläre ich wie der kleine Raspberry Pi Rechner dem großen Samsung HD Recorder unter die Arme greift und ihn mit der DDNS Client-Funktionalität ergänzt.

Der DDNS-Client ist allgemein einsetzbar da wo die Domänen-WAN-IP nicht aktualisiert wird. Dieses Tutorial bezieht sich nur auf den UM Horizon HD Recorder, weil er den einzigen mir bekannten Router besitzt der dieses Standardfeature nicht unterstützt.

2. Das Prinzip

Der ddclient läuft als Daemon (Prozess) auf dem Raspberry Pi. In regelmäßigen Zeitabständen fragt er einen WAN-IP-Provider (z.B.: icanhazip.com ) nach der aktuellen Wide Area Network IP-Adresse. Unterscheidet sich diese von der IP-Adresse, die auf dem Dynamic Domain Name Service Server eingetragen ist, wird sie dort aktualiesiert.

ddns client prinzip
DDNS Client Prinzip für Unitymedia Horizon HD Recorder

3. Unitymedia Horizon HD Recorder konfigurieren

Die UPC WebApp (http://gwlogin/) im Browser öffnen und einloggen.

Den Reiter Basic ==> Lokales Netzwerk (LAN) wählen.

 

UPC Webapp - DHCP Server Einstellungen
UPC Webapp – DHCP Server Einstellungen

Hier soll der DHCP-Server aktiviert, die Anfangs-DHCP-Pool-IP-Adresse gesetzt und und die DHCP-Pool-Grösse definiert sein. Im Beispiel ist also der dynamische IP-Adressen-Bereich des DHCP-Servers auf 64 IP-Adressen begränzt (192.168.2.2 bis 192.168.2.65). Alle weiteren Adressen ab 192.168.2.66 bis 192.168.2.254 können als statische IP-Adressen genutzt werden. Die IP-Adresse 192.168.2.255 ist für den directed broadcast reserviert.

Unten rechts auf Speichern klicken, abmelden und schliessen.



Anzeige

 

4. Raspberry Pi einrichten

Was für ein Betriebssystem auf dem Raspberry Pi installiert ist spielt keine Rolle solange es ein Unix OS ist. Der RPi sollte eine statische IP-Adresse haben und an den UM Horizon HD Recorder per LAN angeschlossen sein. WLAN wäre auch möglich aber nicht empfehlenswert.

Installiere den ddclient wie hier beschrieben.

Öffne die ddclient-Konfigurationsdatei:

$ sudo nano /etc/ddlient.conf

Trage ein oder ändere die Parameter wie folgt:

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

protocol=dyndns2
use=web
server=members.feste-ip.net
web=checkip.feste-ip.net
web-skip='Current IP Address: '
daemon=900
syslog=yes
pid=/var/run/ddclient.pid
login=myLoginName
password='myLoginPassword'
mail=alexwatermann@technik-tipps-und-tricks.de
mail-failure=alexwatermann@technik-tipps-und-tricks.de
ssl=yes
my.domain.com

Erklärung:

Zeile 5) Das Protokoll des genutzten DDNS-Dienstes.

Zeile 6) Nach der Installation steht hier use=if, if=eth0. Es ist eine Einstellung für den lokalen DNS-Server. Damit ein externer WAN-IP-Dienst genutzt werden kann, wird hier web eingetragen und in Zeile 8 definiert. Im Beispiel checkip.feste-ip.net.

Zeile 7) Der Name des DDNS-Dienst-Servers.

Zeile 8) Der WAN-IP-Dienst, der die aktuelle WAN-IP-Adresse liefert (z.B. icanhazip.com, checkip.feste-ip.net).

Zeile 9) Manche WAN-IP-Dienste liefern die IP-Adresse mit einem Text davor. Hier wird der String bis zu der Adresse eingetragen der übersprungen werden soll. Wie die Antwort des Dienstes aussieht kann man einfach im Internet Browser nach Eingabe der Dienst-Adresse einsehen.

Zeile 10) Hier wird das Intervall in Sekunden eingetragen, in dem der ddclienet die WAN-IP abfragt. Die Zeit soll nicht zu kurz sein, da manche Dienste sich ärgern über zu kurze Intervalle und sperren den Zugriff. 900 Sekunden = 15 Minuten sind aber ausreichend.

Zeile 11) Fehlermeldungen sollen in die syslog geschrieben werden.

Zeile 12) Der Pfad zu der Prozess-ID-Datei.

Zeile 13) Der Login-Name zu dem DDNS-Dienst. Je nach Anbieter (z.B. Feste-IP) kann es auch die Kundennummer sein.

Feste-IP.net
Feste-IP.net

Zeile 14) Das DDNS-Dienst Login-Passwort in einfachen Anführungszeichen (Hochkomma).

Zeile 15) Die E-Mail-Adresse wo die Systemnachrichten gesendet werden sollen. Benötigt postfix in Satellite-System-Mode.

Zeile 16) Die E-Mail-Adresse wo die Fehler-Systemnachrichten gesendet werden sollen. Benötigt postfix in Satellite-System-Mode.

Zeile 17) Verschlüsselte Verbindung soll genutzt werden.

Zeile 18) Die eigene Domäne.

 

Die /etc/ddclient.conf Datei mit STRG+O, ENTER speichern und mit STRG+X schliessen.

Den ddclient-Daemon neustarten:

$ sudo service ddclient restart

5. WAN-IP-Aktualisierung prüfen

Um die WAN-IP-Aktualisierung zu prüfen ist die beste Methode sich bei dem DDNS-Dienst einzuloggen, die IP-Adresse manuell auf eine andere als die aktuelle WAN-IP zu ändern und das ddclient-Aktualisierungsintervall abzuwarten. Danach sollte die WAN-IP auf dem DDNS-Dienst-Server aktualisiert worden sein.

Soll eine schon laufende Installation getestet werden, muss zusätzlich die in die /var/cache/ddclient/ddclient.cache Datei geschriebene IP auf die gleiche wie bei DDNS-Dienst geändert werden.

Der ddclient vergleicht immer die aktuelle WAN-IP-Adresse mit der im Cache gespeicherten. Nur bei einem Unterschied wird die DDNS-Dienst IP aktualisiert.

 

DDNS-Hostdetails - Beispiel Feste-IP.NET
Beispiel Feste-IP.NET

6. Fazit

Mit minimalen Kosten und wenig Aufwand ist es möglich was Unitymedia in zwei Jahren Entwicklung nicht realisieren konnte. Man kann unbeschwert von unterwegs auf das Heimnetzwerk (NAS, WebDAV, Webserver usw.) mit einer Domäne zugreifen, die sonst dank der „fortgeschrittenen“ UM Technologie nach einer WAN-IP-Änderung tot gewesen wäre.


Anzeige





10 Kommentare zu “Raspberry Pi DDNS Client

  1. Hallo Whykiki,
    hast du die Ports auf den Raspberry Pi weitergeleitet? Auf der Horizon Box in der UPC WebApp unter Fortgeschritten => Weiterleitung soll zum Beispiel der öffentliche FTP-Port 21 auf den Port 21 des RPi’s weitergeleitet werden. Wenn du deine Domäne mit http://***.feste-ip.net aufrufst, geht er automatisch auf Port 80. Versuche mit ftp://***.feste-ip.net oder mit dem FileZilla Client auf dein RPi FTP-Server drauf zu gehen. Falls du versuchst lokal die Domäne anstelle der RPi IP-Adresse zu nutzen und es klappt nicht, dann schaue mal hier rein: http://www.technik-tipps-und-tricks.de/unitymedia-horizon-hd-recorder-loest-die-domaene-lokal-nicht-auf/

  2. Hallo,

    vielleicht kannst du mir ja weiterhelfen 🙂
    Ich scheine also ein ähnlich leidgeprüfter UM-Kunde mit der Horizon-Box zu sein. Hinzu kommt, dass ich in Sachen Rasp und Co ein echter Noob bin. Ich möchte meinen Rasperry von Aussen erreichbar machen. Testweise erstmal nur als FTP, aber eben später auch einen Apache für kleine Testspielereien.
    Aber ich scheitere daran das Ganze mit der Horizon Box zum Laufen zu bekommen.

    Ich nutze den ddclient so wie hier von dir beschrieben und bekomme auf dem Rasperry auch bei eder Statusabfrage (wie oben hier zu lesen) eine Success-Meldung.
    Wenn ich aber nun meine „***.feste-ip.net“ aufrufe von einem Rechner aus, dann bekomme ich keinen Zugriff. Im lokalen Netz klappt alles wunderbar. Aber hier komme ich nicht mehr weiter.

    Vielleicht hast ja noch einen Tipp für mich.

    LG Kiki

  3. Um Dateien hoch- oder herunterzuladen kannst du zum Beispiel den FTP/SFTP-Server oder das Webinterface des NAS-Servers nutzen. Ich persönlich nutze im Heimnetzwerk FTP (vom Smartphone) und Netzlaufwerkverbindung (Windows und Linux). Extern greife ich über SFTP wegen der Sicherheit drauf zu. Von Fremdrechnern ohne FTP-Client auch ausnahmsweise WebAccess (Buffalo’s Webinterface).
    Die NAS-Routereinstellungen müssen meines Wissens nicht geändert werden. Das jeweilige Protokoll mit Standardport und die UM Horizon Portweiterleitung regeln worauf du zugreiffst.
    Zum Beispiel:
    http://deine.domaene.de [Port:80] oder https://deine.domaene.de [Port:433] werden auf das NAS-Server-Webinterface weitergeleitet.
    ftp://deine.domaene.de [Port:20] und sftp://deine.domaene.de [Port:22] werden auf den NAS-FTP-Server weitergeleitet.

  4. Ja, du hast recht. Das Passwort soll zwischen einfache Anführungszeichen(“) geschrieben werden.
    Die ddclient Warnung heißt in dem ddclient.cache war noch keine WAN-IP aus der vorherrigen Überprüfung eingetragen.
    Es ist normal, weil ddclient zum ersten Mal gestartet wurde und die aktuelle IP abgefragt hat, aber
    im Cache noch keine frühere IP zum Vergleichen vorhanden war. Deswegen steht in der nächsten Log-Zeile dass die Aktualisierung
    von ‚leer‚ zu der aktuellen IP:88.152.45.58 übersprungen wird. Die aktuelle IP wurde dann in Cache geschrieben und
    nur wenn der nächste IP-Check neue, geänderte IP ergibt, wird ein Update beim Feste-IP-Dienst durchgeführt.
    Diese Warnung (kein Fehler) kommt also nur bei dem ersten IP-Check nach der ddclient-Installation und hat keine Auswirkung
    auf den weiteren Ablauf.

  5. Das Problem kenne ich. Es liegt an der Horizon Box. Solange du im lokalen Heimnetzwerk bist wird deine DDNS nicht aufgelöst.
    Du must die lokale IP-Adresse deines NAS Servers anstatt der Domäne eingeben. Die Unitymedia Entwickler sind eben nicht in der
    Lage die Box mit einer vernünftigen Software auszustatten. Sie sind eben Verkäufer und keine Softwareentwickler.
    Ich überlege an einer Lösung mit einem lokalen DNS-Server auf dem RPi, der diese Aufgabe übernimmt. Werde es
    auch irgendwann hier veröffentlichen.

    Gruss
    Alexander

  6. So weit siehts gut aus.
    Aber ich ich komme nur von extern über die ddns Adresse auf den NAS.
    Wenn ich mit meinem Smartphone per WLAN verbunden bin und mittels CloudSync Fotos hochladen will, klappt das im Mobilfunk-Netz.
    Eine IDee was ich hier faslch mache?

  7. gard noch mal einen restart…sieht schon besser aus:

    Okt 03 20:06:33 raspberrypi systemd[1]: Started LSB: Update dynamic domain name service entries.
    root@raspberrypi:~# sudo service ddclient status
    ● ddclient.service – LSB: Update dynamic domain name service entries
    Loaded: loaded (/etc/init.d/ddclient)
    Active: active (running) since Mo 2016-10-03 20:06:33 CEST; 13s ago
    Process: 4461 ExecStop=/etc/init.d/ddclient stop (code=exited, status=0/SUCCESS)
    Process: 4469 ExecStart=/etc/init.d/ddclient start (code=exited, status=0/SUCCESS)
    CGroup: /system.slice/ddclient.service
    └─4487 ddclient – sleeping for 290 seconds

    Okt 03 20:06:33 raspberrypi systemd[1]: Started LSB: Update dynamic domain name service entries.

    Sieht gut aus. Cool. Danke schon mal.

    Kann ich denn au der Synology jetzt auch EZ Internet einrichten, um darauf von extern zugreifen zu können? Um zB Fotos hochladen zu können. Dazu müsste ich in den Synology einstelllungen ja noch etwas unter Routereinstellungen eintragen.

  8. Hallo,
    also habe wie von dir geschrieben anpassungen vorgenommen.
    ich glaube das Passwort muss in ‚pw‘ geschrieben werden, kann das sein?
    Aufruf von
    sudo service ddclient status

    liefert das zurück:
    ● ddclient.service – LSB: Update dynamic domain name service entries
    Loaded: loaded (/etc/init.d/ddclient)
    Active: active (running) since Mo 2016-10-03 19:59:17 CEST; 25s ago
    Process: 3507 ExecStop=/etc/init.d/ddclient stop (code=exited, status=0/SUCCESS)
    Process: 3516 ExecStart=/etc/init.d/ddclient start (code=exited, status=0/SUCCESS)
    CGroup: /system.slice/ddclient.service
    └─3528 ddclient – sleeping for 280 seconds

    Okt 03 19:59:17 raspberrypi systemd[1]: Started LSB: Update dynamic domain name service entries.
    Okt 03 19:59:18 raspberrypi ddclient[3536]: WARNING: file /var/cache/ddclient/ddclient.cache, line 5: Invalid Value for keyword ‚ip‘ = “
    Okt 03 19:59:18 raspberrypi ddclient[3538]: WARNING: skipping update of test.feste-ip.net from to 88.152.45.58.

    Was will mir das sagen?

    vg
    Thorsten

  9. Hallo Thorsten,
    wie ich sehe nutzt du auch Feste-IP.net. In der ddclient-Konfigurationsdatei
    in der Zeile 7 muss server=members.feste-ip.net stehen. Also nicht dein
    Hostname sondern der Name des Feste-IP Servers der den Zugriff auf dein Feste-IP-Account verwaltet.
    In der Zeile 13 und 14 muss du deine Feste-IP Kundennummer (Host-ID in den Hostdetails bei Feste-IP)
    und dein Feste-IP-Login-Passwort eingeben. Die aktuelle WAN-IP frage lieber bei checkip.feste-ip.net
    ab. Sie liefert deine IP im Klartext und nicht wie wieistmeineip als html. Also kannst du die Zeile 8
    und 9 so übernehmen wie sie in meinem Beispiel stehen.
    In zeile 18 sollte bei dir test.feste-ip.net stehen (deine öffentliche Domäne), nicht die lokale NAS-Domäne.
    Auf diese (bzw. die NAS-IP und Port) muss du nähmlich in der Horizon Box umleiten.

    Ich hoffe ich konnte dir damit weiterhelfen und würde mich freuen über dein Feedback ob es dein Problem gelöst hat.

    Grüsse
    Alexander

  10. Hallo,

    ich komme irgendwie nicht mit den ganzen Einträgen klar.
    Also ich habe eine Synology NAS auf die ich von extern zugreifen will. Habe auch eine Horizon Box.
    Meine URL lautet: http://test.diskstation.me/
    => in den Horizon Einstellungen haben ich unter Fortgeschritten/Weiterleitung eine Port Weiterleitung eingerichtet, damit ich nicht das :5000 in der URL ergänzen muss: Öffentlicher Range = 80 / Lokale IP Adresse die IP von meiner NAS / Ziel Port Range = 5000 / Protokoll = TCP/UDP
    ich hoffe das ist so korrekt?

    Weiter gehts:
    im DDclient habe ich unter:
    7) server=test.feste-ip.net (Mein vergebener Hostname bei festIP)
    13) meine HOST ID von festIp.net (hab mich entsprechend registriert)
    14) password=passwort (Ohne ‚ ‚ )
    18) test.diskstation.me
    Alles andere so gelassen wie bei dir oben im Beispiel.

    In den HOST Einstellungen bei festeIP habe ich
    HOstname=test.feste-ip.net
    IPv4 Adresse= letzte IP über wieistmeineIP
    IPv6 = leer gelassen da über wieistmeineIP auch keine IPv6 kam
    ipv4/ipv6 Verhalten: Standard

    Ist das soweit alles richtig? Habe ich irgendwas verwechselt?
    Hoffe du liest das und kannst mir helfen.

    Bisher kann ich meine URL nicht erreichen 🙁

    Besten Dank und Gruß
    Thorsten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.