[INFO] opendd, ein DynDNS-Client

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
8,014
Punkte für Reaktionen
28
Punkte
48
Im Anhang ein Patch für opendd (binary only), ein DynDNS-Client für die FritzBox.
 

Anhänge

  • opendd.patch.txt
    9.9 KB · Aufrufe: 55
  • new_proper_opendd.patch.txt
    10.4 KB · Aufrufe: 13
  • tun_gui_nodaemon_opendd_new.patch.txt
    17.6 KB · Aufrufe: 7
  • icmptx.patch.txt
    3.9 KB · Aufrufe: 3
  • sh-x_etc_init_d_rc_opendd_start_050610.txt
    3.4 KB · Aufrufe: 12
  • opendd_080810.patch.txt
    19.1 KB · Aufrufe: 6
Zuletzt bearbeitet:
Kannst du die CFLAGS bitte im Submake-Befehl in opendd.mk setzen? Hardcodiert im Makefile ist nicht gut.

MfG Oliver
 
Danke für den Hinweis. Erledigt, siehe Anhang.
 

Anhänge

  • proper_opendd.patch.txt
    10.6 KB · Aufrufe: 25
Zuletzt bearbeitet:
Verstehe ich es richtig, opendd kann zum einen nur dyndns (Pfade fest einprogrammiert) und zum anderen unterstützt lediglich ein Account pro config (und demzufolge laufende Instanz)?
 
Ja, so ist es. Ist halt nicht die "eierlegende Wollmilchsau".;)
Dafür soll opendd aber zuverlässig sein. Mal schauen.
Auszug aus der Konfigurationsdatei:
Code:
# Define the DynDNS server
# (mandatory)
servername = members.dyndns.org

# Define your DynDNS hostnames
# (mandatory)
hostname = test.dyndns.org, test.dnsalias.net, test.dnsalias.org

# Define your username and password
username = test
password = test
 
Und was ist dann der Vorteil gegenüber dem bereits vorhandenen inadny oder der eingebauten Funktion von AVM?
Da kann ja schon die Funktion von AVM mehr, und ist übers Interface konfigurierbar.
 
Mit opendd kann ich mehrere Hostnames (bei DynDNS) gleichzeitig updaten, was mit AVM nicht geht. Und in letzter Zeit hatte ich mit dem DynDNS von AVM auch Probleme.
A hostname you had registered with DynDNS.com, ######.mine.nu, has been
deleted from our systems.

This hostname has been deleted a week after the last legitimate update
prior to its blocking. Our policies forbid multiple successive updates from
the same IP address for performance and resource-conservation purposes;
such updates have no function, and use resources which could better serve
others.

If you are using a hardware router's built-in update functionality, it is
most likely not properly functional; we recommend that you contact your
router's manufacturer regarding this issue and ask them to contact us for
assistance correcting their products to interface properly with our
systems. Until such a time that you see an announcement on our site about
your specific router functioning properly with our systems, we recommend
using a software client from <http://www.dyndns.com/support/clients/>
instead, and being certain to disable the update functionality of your
router.
Zu inadyn gibt es hier im Forum die Meinung(en), dass es mehr schlecht als recht funktioniert.

Ohne ssl-Verschlüsselung habe ich opendd jetzt erfolgreich auf der Box, getestet:
Code:
/var/tmp # opendd -v -c /var/tmp/opendd.conf
-- running OpenDD 0.7.9 in normal mode
drop_privileges() : setgid to nobody (gid ****)
drop_privileges() : setuid to nobody (uid ****)
main() : getting my ip address : 8*.###.###.###
dyndns() : connected to members.dyndns.org:80
dyndns() : GET /nic/update?system=dyndns&hostname=######.mine.nu,#x#x#x#x.ath.cx,#y#y#y#y.ath.cx,*******.mine.nu,#*#*#*#*.ath.cx&offline=NO&myip=8*.###.###.### HTTP/1.0
listen_response() : HTTP/1.1 200 OK
listen_response() : Date: Sun, 09 May 2010 10:23:52 GMT
listen_response() : Server: Apache
listen_response() : Content-Type: text/plain
listen_response() : Connection: close
listen_response() : good 8*.###.###.###
listen_response() : The update was successful, and the hostname is now updated.
listen_response() : good 8*.###.###.###
listen_response() : The update was successful, and the hostname is now updated.
listen_response() : good 8*.###.###.###
listen_response() : The update was successful, and the hostname is now updated.
listen_response() : good 8*.###.###.###
listen_response() : The update was successful, and the hostname is now updated.
listen_response() : good 8*.###.###.###
listen_response() : The update was successful, and the hostname is now updated.
listen_response() : cannot send mail report
dyndns() : connection closed
main() : dyndns() exit normally

EDIT:
Das Updaten über Port 443 geht auch:
Code:
 -- running OpenDD 0.7.9 in normal mode                                                                                              
 drop_privileges() : setgid to nobody (gid ****)                                                                                     
 drop_privileges() : setuid to nobody (uid ****)                                                                                      
 main() : getting my ip address : 7*.##.###.###                                                                                                                                                                                                                                                                      
 dyndns() : [B][COLOR="Red"]Setting SSL trust certificate store to /var/tmp/opendd.pem      [/COLOR][/B]                                                                                                                                                                                                       
 Warning : certificate cannot be verified with trust store : unable to get issuer certificate locally                                 
 dyndns() : connected to members.dyndns.org:[B][COLOR="Red"]443 [/COLOR][/B]                                                                                     
 dyndns() :GET /nic/update?system=dyndns&hostname=######.mine.nu,#x#x#x#x.ath.cx,#y#y#y#y.ath.cx,*******.mine.nu,#*#*#*#*.ath.cx&offline=NO&myip=7*.##.###.### HTTP/1.0                                                                                                                                                    
 listen_response() : HTTP/1.1 200 OK                                                                                                 
 listen_response() : Date: Wed, 12 May 2010 16:29:37 GMT                                                                             
 listen_response() : Server: Apache                                                                                                  
 listen_response() : Content-Type: text/plain                                                                                        
 listen_response() : Connection: close                                                                                               
 listen_response() : good 7*.##.###.###                                                                                              
 listen_response() : The update was successful, and the hostname is now updated.
 listen_response() : good 7*.##.###.###
 listen_response() : The update was successful, and the hostname is now updated.
 listen_response() : good 7*.##.###.###
 listen_response() : The update was successful, and the hostname is now updated.
 listen_response() : good 7*.##.###.###
 listen_response() : The update was successful, and the hostname is now updated.
 listen_response() : good 7*.##.###.###
 listen_response() : The update was successful, and the hostname is now updated.
 listen_response() : cannot send mail report
 dyndns() : connection closed
 main() : dyndns() exit normally
 
Zuletzt bearbeitet:
Ich habe inadyn vor Monaten mal getestet und bin damit nicht klar gekommen. Mehr kann ich zu inadyn jetzt nicht berichten. Ich will niemad überzeugen auf inadyn zu verzichten.
Für mein Account bei DynDNS habe jetzt opendd und für den bei noip, habe ich noip2 auf der Box. Das Updaten erfolgt über onlinechanged, und DynDNS von AVM benutze ich nicht mehr.;)
 
@sf3978:
Code:
This hostname has been deleted a week after the last legitimate update prior to its blocking. Our policies forbid multiple successive updates[COLOR="Red"] from the same IP address[/COLOR] for performance and resource-conservation purposes; such updates have no function, and use resources which could better serve others.
Wenn es wirklich Probleme mit DynDNS gegeben hätte, dann hätten wir es hier in IPPF sicherlich mitgekriegt. Ich habe in Summe etwa 20 Adressen auf 4 Accounts verteilt und hatte letzte Zeit keine Probleme damit gehabt. Letzte Probleme von DynDNS liegen schon mehrere Monate (wenn sogar nicht Jahre) zurück.
Bei welchem Provider bist du eigentlich? Trennst du deine Box ziemlich oft, um rapidshare und co. zu bescheißen? Ich hatte so um Jahreswende herum bei 1und1 über telefonica festgestellt, dass man nach einem dsl reconnect nicht immer eine neue Adresse bekommt. Ich weiß nicht, ob telefonica da einen Timer eingebaut hat, oder wie sie es denn letztendlich machen, es ist aber so, dass wenn reconnect von der Box aus ausgelöst wird und es ziemlich schnell passiert, dass man danach immer die selbe IP-Adresse hat.
Jetzt weiß ich nicht, was AVM-dyndns-Melder in solchen Fällen tut. Zum guten Ton würde gehören, die IP vorher und nachher gegenzuchecken und die Anfrage/Meldung an dyndns nur dann senden, wenn IP sich wirklich unterscheiden. Vermutlich wird es aber nicht getan. Bekommt dyndns 5 Mal nacheinander die gleiche IP (die Zahl mag auch anders liegen), behandeln sie es als Pishing-Versuch und machen dicht. Diese Funktion hat dyndns nach der letzten Attake eingeführt, als sie für 2-3 Tagen lahm gelegt wurden.
Wenn du diese Randbedingungen nicht betrachtest, hilft dir den Wechsel zum anderen dyndns-Klient gar nicht.

MfG
 
rapidshare und co. benutze ich nicht. Ich bin bei einem Kabel-Provider und habe eine, fast feste öffentliche IP-Adresse. Die Box trennt oft wenn ich Freetz-Images und Freetz-Softwares teste. Die öffentliche IP-Adresse ändert sich dadurch aber nicht, und soll sich auch nicht ändern. Das Problem war der DynDNS-Client von AVM, was aber jetzt gelöst ist, weil ich diesen DynDNS-Client nicht mehr benutze.
 
@sf3978: Und wie oft sendest du jetzt die IP-Adresse zu dyndns? Wie gesagt, ich kann mir vorstellen, dass das einzige Problem an der AVM-Lösung ist, dass sie gar nicht checken, ob die Adresse sich tatsächlich geändert hat, sondern senden sie immer weiter an dyndns.
Bei onlinechanged dagegen gab es irgendwo einen Check, wenn ich mich nicht irre. Entweder ist es schon im Paket drin, oder in den Sektionen von onlinechanged. Von daher wird alleine dadurch nicht so oft gesendet.
Elegant wäre es an allen diesen dyndns-Klients, wenn sie den AVM-dyndns-Klient lahm legen würden, dennoch die Daten aus dem AVM-WebIF nutzen würden. Also, so eine Art Ersatz-DynDNS.

MfG
 
@sf3978: Und wie oft sendest du jetzt die IP-Adresse zu dyndns?
Mit Skripten und Onlinechanged (case offline und online) kann man die öffentliche IP-Adressen vor dem offline- und nach dem online-Gehen der Box, vergleichen und das Updaten (Senden der öffentl. IP-Adresse) mit Hilfe der DynDNS-Clients (opendd, noip2, etc.), von einer erfolgten Änderung der öffentl. IP-Adresse abhängig machen.
Wie gesagt, ich kann mir vorstellen, dass das einzige Problem an der AVM-Lösung ist, dass sie gar nicht checken, ob die Adresse sich tatsächlich geändert hat, sondern senden sie immer weiter an dyndns.
Ja, ich denke auch, dass es so geschehen sein muss.
Bei onlinechanged dagegen gab es irgendwo einen Check, wenn ich mich nicht irre. Entweder ist es schon im Paket drin, oder in den Sektionen von onlinechanged. Von daher wird alleine dadurch nicht so oft gesendet.
Diesen Check von onlinechanged kenne ich noch nicht. Da muss ich mich mal auf die Suche machen.
Elegant wäre es an allen diesen dyndns-Klients, wenn sie den AVM-dyndns-Klient lahm legen würden, dennoch die Daten aus dem AVM-WebIF nutzen würden. Also, so eine Art Ersatz-DynDNS.
Der Nachteil ist, dass man beim AVM-DynDNS-Client nur 1 Domainnamen eintragen kann. Oder habe ich da was übersehen bzw. nicht richtig erkannt? Aber Benutzername und Passwort könnte man nutzen.
 
Diesen Check von onlinechanged kenne ich noch nicht. Da muss ich mich mal auf die Suche machen.
Ich meinte das, was du unter case offline/online beschrieben hast. Es gab irgendwo ein Beispiel, wie man es machen könnte. Ich bin mir allerdings nicht sicher, ob dieser check bereits in onlinechanged irgendwie integriert ist.
Der Nachteil ist, dass man beim AVM-DynDNS-Client nur 1 Domainnamen eintragen kann. Oder habe ich da was übersehen bzw. nicht richtig erkannt? Aber Benutzername und Passwort könnte man nutzen.
Zumindest in ar7.cfg-Sektionen zu dyndns hatte mehrere Einträge gesehen. Die WebIF-Maske von AVM gibt es natürlich nicht her, das ist richtig. Man könnte es vielleicht ähnlich wie callmonitor lösen, dass beim Starten vom Dienst die Daten aus ar7.cfg gelesen werden und in die Konfiguration des Klients eingetragen werden.

MfG
 
Zumindest in ar7.cfg-Sektionen zu dyndns hatte mehrere Einträge gesehen. Die WebIF-Maske von AVM gibt es natürlich nicht her, das ist richtig. Man könnte es vielleicht ähnlich wie callmonitor lösen, dass beim Starten vom Dienst die Daten aus ar7.cfg gelesen werden und in die Konfiguration des Klients eingetragen werden.
Ja, aber da wäre ein Freetz-WEB-IF sinnvoll (analog dem für die AVM-Firewall) mit dem man die Domainnamen in die ar7.cfg eintragen kann. Denn manuell kann ich diese Domainnamen, schneller und sicherer in die Config-Dateien der externen DynDNS-Clients eintragen, als manuell in die ar7.cfg (... meine Meinung).

EDIT:
Im gegensatz zum AVM-DynDNS-Client, prüft opendd ob ein Update erforderlich ist und wenn nicht erforderlich, dann wird das Update nicht durchgeführt:
Code:
/var/tmp # opendd -c /var/tmp/opendd.conf -v
-- running OpenDD 0.7.9 in normal mode
drop_privileges() : setgid to nobody (gid ****)
drop_privileges() : setuid to nobody (uid ****)
main() : [COLOR="Red"]getting my ip address[/COLOR] : [COLOR="Blue"]8*.###.###.###[/COLOR]
getdyndnshostnames() : [COLOR="Red"]no need to update *x*x*.mine.nu with 8*.###.###.###[/COLOR]
main() : [COLOR="Red"]No hostname(s) to update[/COLOR]

EDIT 2:
Skripte bzw. ein Abgleich der öffentl. IP-Adressen ist nicht erforderlich. Ich habe folgenden Eintrag in der rc.custom:
Code:
ifconfig dsl:0 inet $(get_ip -d)
sleep 3
opendd -c /var/tmp/opendd.conf
Meine "/var/tmp/opendd.conf" sieht so aus:
Code:
servername = members.dyndns.org
hostname = <geheim_1>.mine.nu, <geheim_2>.ath.cx, <geheim_3>.mine.nu, <geheim_4>.mine.nu, <geheim_5>.ath.cx
username = <geheim_x>
password = <geheim_y>
use_ssl = 1
cert_path = /var/tmp/opendd.pem
iface = dsl:0
runasdaemon = 0
use_syslog = 1
syslog_facility = daemon
system_user = nobody
system_group = nobody
pidfile_path = /var/run/opendd.pid
pollfrequency = 30000
domain_lifetime = 28
##wildcard = 1
##mx = test.dyndns.org
##backupmx = 1
offline = 0
##mailfrom = [email protected]
##mailto = [email protected]
##smtpservername = localhost
##smtpauthuser = user
##smtpauthpwd = user_pass

EDIT 3:
Ich habe den Patch für das Makefile überarbeiten müssen. Die Abhängigkeiten für die libcrypto und libssl wurden nicht in das binary kompiliert. Aber jetzt funktioniert es:
Code:
/var/tmp # ldd /usr/bin/opendd
       [COLOR="Red"] libssl[/COLOR].so.0.9.8 => /usr/lib/freetz/libssl.so.0.9.8 (0x2aabe000)
        [COLOR="Red"]libcrypto[/COLOR].so.0.9.8 => /usr/lib/freetz/libcrypto.so.0.9.8 (0x2ab0a000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2ac1f000)
        libc.so.0 => /lib/libc.so.0 (0x2ac3d000)
        libdl.so.0 => /lib/libdl.so.0 (0x2acf2000)
        ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)
Den neuen Patch (new_proper_opendd.patch.txt) habe ich im Beitrag #1 angehängt.
 
Zuletzt bearbeitet:
opendd kann jetzt auch mit dem Freetz-Web-IF konfiguriert und gestartet werden. Siehe Anhang.

EDIT:
Wer opendd als nodaemon (runasdaemon = 0) benutzen will, kann folgende Einträge in die "rc.custom" oder in die "onlinechanged-cgi" (Syntax beachten) machen:
Code:
ifconfig dsl:0 inet $(get_ip -d)
/var/mod/etc/init.d/rc.opendd start
Falls externalisiert, muss "sleep 60" verwendet werden. Oder, die Funktion start() ind der rc.opendd, könnte auch geändert werden.

EDIT 2:
Die Einträge in die "rc.custom" oder in die "onlinechanged-cgi" (Syntax beachten) sind nicht mehr erforderlich. Durch ein eigenes onlinechanged-Skript (siehe 3. Patch im Beitrag #1), liegt opendd im nodaemon-Modus immer auf der Lauer. Zu erkennen an folgender Ausgabe im Syslogd (hier auch für noip):
Code:
Jun  6 05:33:03 82 user.notice info: start NOIP after IP-change                                                                                                                     
Jun  6 05:33:03 82 user.notice info: [B]start OPENDD after IP-change[/B]
 

Anhänge

  • gui_opendd.patch.txt
    15.5 KB · Aufrufe: 11
  • gui_opendd.jpeg
    gui_opendd.jpeg
    118.8 KB · Aufrufe: 79
Zuletzt bearbeitet:
Hallo habe auch ständig Probleme mit Dyndns und würde gerne mal opendd testen,
wie ich ein Freetz erstelle weiss ich nur leider finde ich opendd nicht. Muss ich dazu ein Addon installieren? wenn ja wo bekomme ich es. Wäre für ne Anleitung dankbar.
 
opendd gibt es noch nicht im trunk. Ich erstelle die aktuellen Patches von opendd bzw. matude und hänge sie hier rein. Wenn Du dann noch fragen hast, kann ich dir behilflich sein.
 
Habe die Patches gesehen aber wie binde ich die ein??? das sind doch txt Dateien
 
Nimm diese aktuellen Patches hier. Die Skripte musst Du ausführbar machen.
Das matude-Archiv musst Du in das dl-Verzeichnis kopieren.
Patches ausführen mit:
Code:
patch -p0 < opendd_020710.patch.txt

Code:
patch -p0 < matude_020710.patch.txt

EDIT:
Die Einträge in die "make/Config.in" musst Du manuell machen. Im Anhang auch meine anonymisierte opendd.conf.
 

Anhänge

  • matude_020710.patch.txt
    3.8 KB · Aufrufe: 9
  • opendd_020710.patch.txt
    17.2 KB · Aufrufe: 11
  • matude-0.1.tar.gz
    1.7 KB · Aufrufe: 10
  • anon_opendd.conf.txt
    601 Bytes · Aufrufe: 13
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.