DynDNS-Updater

Status
Für weitere Antworten geschlossen.

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
Hab mal via ipkg nach einem Client gesucht der mehrfache DynDNS-Adressen updaten kann.

Also updatedd-wrapper installiert. Jetzt les ich bei Dyndns.com, das dieses auf Perl installiert.

Also zwei Fragen:

1.) Gibts trotzdem eine Möglichkeit das zu installieren?

2.) Würde auch selber ein C-Programm schreiben, aber mir fehlt dazu das Fachwissen. Weiß jemand, wie man das realisieren könnte?
(Einfach nur ein paar Zeilen C-Code :D )

MfG Matthieu
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Also updatedd-wrapper installiert. Jetzt les ich bei Dyndns.com, das dieses auf Perl installiert.

Also zwei Fragen:

1.) Gibts trotzdem eine Möglichkeit das zu installieren?

2.) Würde auch selber ein C-Programm schreiben, aber mir fehlt dazu das Fachwissen. Weiß jemand, wie man das realisieren könnte?
(Einfach nur ein paar Zeilen C-Code :D )

MfG Matthieu
Und wieso ist Perl schlecht? Gibt's ja auf der DS. Und (fast) alle möglichen Module auch.
Du könntest auch ein PHP Script schreiben, das dir als 3rd Party Appl mehrere DynDNS Accounts updatet. Mit dem ipkg php kannst du PHP Scripte auch direkt auf der Shell ausführen. Zudem dürftest du mit PHP wohl schneller ans Ziel kommen als mit C ;)
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
Ok. Ich formuliere mal Alternativ: Wie kann ich denn per PHP meine externe IP abrufen?!

MfG Matthieu
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich hatte mal was dazu geschrieben. Das Stichwort ist "DDNS" ... den DynDNS ist ja nur ein DDNS-Anbieter ;)

Schau z.B. mal hier.

Itari
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
[..] und muss auf irgendeinem durchlaufenden externen Web-Server liegen [..]

Also ich bin momentan so weit:
Dyndns.com bietet das hier an. Wenn ich das mittels libcurl (gefunden via ipkg) abrufe, hoffe ich die IP rauszubekommen. Wenn man das via crontab regelmäßig aufruft, wirds vielleicht was.

MfG Matthieu
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344

denon2002

Benutzer
Mitglied seit
20. Okt 2008
Beiträge
536
Punkte für Reaktionen
0
Punkte
0
Mal ein ganz anderer Ansatz.

Kann man die externe IP die der Router bekommen hat nicht auch auslesen.
Bei den Fritzboxen sollte das funktionieren. s. google
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Das setzt wieder voraus, dass die Datei auf einem externen Server läuft, der die IP auslesen kann. Ich will das ganze aber auf der DS laufen lassen.

MfG Matthieu

Das geht wohl nicht ... auch die eingebaute Funktionalität ruft alleweil zu Hause an (ich meine im 3 Minuten-Takt), um mitzubekommen, wann sich die IP ändert, um dann die neue IP an die DDNS-Provider weiterzuleiten ...

Ansonsten gibt es ja auch sehr gute Erläuterung von flicfilc hierzu. *guck* *guck*

Itari
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
Ist es noch zu früh am Morgen? Ich komm mir heute irgendwie missverstanden vor.

Mein Plan: Ich rufe (ähnlich Synology) einen fremden Server an (den von dyndns.com, siehe oben), der mir dann meine IP verrät. Wenn die anders als die gespeicherte ist, update ich mein DDNS. Wenn nicht, dann mach ich auch nichts. Hintergrund: Ich hab mittlerweile 3 DynDNS-Adressen. DS und Router nehmen mir zwei ab. Bleibt noch eine die ich jetzt anderweitig decken muss.

MfG Matthieu
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ist es noch zu früh am Morgen? Ich komm mir heute irgendwie missverstanden vor.

Mein Plan: Ich rufe (ähnlich Synology) einen fremden Server an (den von dyndns.com, siehe oben), der mir dann meine IP verrät. Wenn die anders als die gespeicherte ist, update ich mein DDNS. Wenn nicht, dann mach ich auch nichts. Hintergrund: Ich hab mittlerweile 3 DynDNS-Adressen. DS und Router nehmen mir zwei ab. Bleibt noch eine die ich jetzt anderweitig decken muss.

MfG Matthieu

Vielleicht hilft dir ja ein kleiner Einblick in die Arbeitsweise von /usr/syno/sbin/ddnsd weiter - der etwas gekürzte Auszug per string:

Rich (BBCode):
/etc/synoinfo.conf
/etc.defaults/synoinfo.conf
%s:%d parameter error: szReport is NULL
...
%s:%d Curl unknown library error (%d)
%s:%d HTTP unknown response code (%lu)
service_status_inprocess
Failed to resolve IP address of DDNS server, please check if network is ok
Failed to connect server
Authentication failed
The format of hostname is not correct
The hostname specified does not exist.
The hostname specified is blocked for update abuse.
Server is broken.
DDNS function needs to be modified, please contact to Synology Support.
parseHtmlforIP
(%s:%d:%s)html document exceed %d bytes : html=%s
(%s:%d:%s)failed to strdup html = %s, errno=%s
(%s:%d:%s)failed to find ':' at %s, errno=%s
(%s:%d:%s)failed to find first digit of IP: %s
(%s:%d:%s)failed to allocate space for parsing IP, errno=%s
(%s:%d:%s)failed to parse correct IP: %s
NO_RECOVERY (%s,%d)
Query type and response type is not match (qtype=%d, type=%d)(%s,%d)
hostname is not match (host.h_name=%s, bp=%s)(%s,%d)
size (%d) too big (%s,%d)
Too many addresses (%d) (%s,%d)
Get no response from res_query (%s,%d)
host is NULL
hs->h_addr is NULL
Failed to parse response from res_query: %s(%s,%d)
UpdateByHTTPHeader
(%s:%d:%s) Parameter error
(%s:%d:%s)failed to init curl
%s:%d failed to set req=%s return value=%d
%s:%d failed to set req=%s, agent=%s, return value=%d
Host: %s
%s:%d failed to set req=%s, header=%s, return value=%d
%s:%d failed to set time-out, return value=%d
%s:%d failed to write function WriteMemoryCallback, return value=%d
%s:%d failed to write data, return value=%d
%s:%d failed to make http connection, return value=%d
/var/tmp/ddns.status
%s="%s"
%s:%d Failed to set '%s = %s' into file /var/tmp/ddns.status
%s:%d Module is not exist, path=%s
%s:%d Failed to chmod, path=%s, errno=%s
%s %s %s %s
%s:%d Failed to encode param for %s
%s %s
%s:%d Failed to popen(%s), reason=%s
%s:%d failed to fgets from popen(%s), reason=%s
__HOSTNAME__
__MYIP__
http://%s:%s@%s/%s
/etc.defaults/VERSION
buildnumber
Synology DDNS Updater/%s support@synology.com
DDNSFail
%s:%d Failed to get DDNS provider config: name = %s
DynDNS
%s:%d Cannot allocate hash.
%EXTERNAL_IP%
%DDNS_HOST_NAME%
%DDNS_NAME%
%FAIL_REASON%
/var/tmp/externalIP.result
externalIP
%s(%d) Failed to set external IP = %s, syno_errno=[%X]
GetExternalIPBy
(%s:%d:%s)failed to set url=%s, return value=%d
(%s:%d:%s)failed to set time-out, return value=%d
(%s:%d:%s)failed to write function WriteMemoryCallback, return value=%d
(%s:%d:%s)failed to write data, return value=%d
(%s:%d:%s)failed to parse html for IP, buffer.data=%s
(%s:%d:%s)failed to make http connection, response=%lu
(%s:%d:%s)failed to make http connection, return value=%d
(%s:%d:%s)failed to get external IP from %s, return value=%d, http response=%lu
0.0.0.0
checkip.synology.com
checkip.dyndns.org
%s(%d) : Failed to set External IP = %s
(%s:%d)DDNS update IP change: last update IP=%s, new IP=%s
(%s:%d)Expire!! Cost=%d, Limit=%d
(%s:%d)Not Expire!! Cost=%d, Limit=%d
ddns_select
%s:%d Failed to get DDNS config: name = %s
ddns_update
%s:%d DDNS config change: name=%s, hostname=%s
/var/run/ddnsd.pid
(%s:%d) %s already exists
(%s:%d) Failed to open %s, errno=[%d/%s]
/tmp/ddnsd_debug
Terminate DDNS daemon (%s:%d)
external IP = %s
supportddns
%s(%s:%d):  not support DDNS, shutdown daemon
%s(%s:%d):  not enable DDNS, shutdown daemon
%s(%s:%d):  unable to daemonize
%s(%s:%d): %s already exists. If no other instance running, delete and try again
%s(%s:%d):  Failed to load DDNS config, syno_errno=[%X]
(%s:%d)DDNS:  sleep %d seconds

Wie du siehst, werden diese beiden Adressen hier genutzt: checkip.synology.com, checkip.dyndns.org

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Das setzt wieder voraus, dass die Datei auf einem externen Server läuft, der die IP auslesen kann. Ich will das ganze aber auf der DS laufen lassen.

MfG Matthieu
Also du könntest die externe IP so ermitteln: Eine URL wie http://download.synology.com aufrufen und die IP speichern. Dann legst du beim ersten Aufruf eine Datei an und speicherst die IP drin. Wenn dann die Rückgabe der Webseite und die IP in der Datei unterschiedlich sind, dann musst dein Script die IP updaten.

Das Update dürfte der wesentlich kompliziertere Teil des Ganzen werden. Aber letzendlich kannst du mit PHP einen DynDNS Client "simulieren", der die Daten an den DynDNS Provider übergibt.
Mach dich mal bei deinem DynDNS Provider schlau was für eine "API" er verwendet d.h. welche Daten an welchen Server übermittelt werden müssen und in welcher Form.

Danach schusterst du dir eine PHP Funktion, die einen socket zum Server deines DynDNS Providers öffnet, die benötigten Login Daten übergibt und dann deine aktuelle externe IP meldet (PHP Funktionen die von von Interesse sein könnten: file_get_contents(), preg_match, fsockopen(), fputs(), fgets())

Gruss

tobi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Wahrscheinlich ist mein Hinweis 2 Posts weiter oben unbemerkt geblieben:

Wie du siehst, werden diese beiden URLs hier genutzt: checkip.synology.com, checkip.dyndns.org

checkip.synology.com
und checkip.dyndns.org liefern die aktuelle IP-Adresse des Routers (einfach im Browser eingeben):
Rich (BBCode):
<html><head><title>Current IP Check</title></head><body>Current IP Address: 79.245.139.91</body></html>

Ich denke, dass reicht doch, oder :)

Itari
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
Genauso wollte ichs von Anfang an machen und werdes auch versuchen so zu realisieren. Endlich versteht man mich :D

MfG Matthieu
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
13
Punkte
84
Und Matthieu bist schon fleissig am coden? Hatte nämlich heute die gleiche Idee bzw. das gleiche Problem, das der eingebaute DDNS nur 1 Adresse aktualisieren kann.

Vielleicht können wir uns zusammen tun oder wenn du keine Zeit oder Interesse hast, dann würde ich was coden; sprich ein SPK-Paket schnüren.
 

olijacobi

Benutzer
Mitglied seit
04. Feb 2008
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Ich hab mittlerweile 3 DynDNS-Adressen. DS und Router nehmen mir zwei ab. Bleibt noch eine die ich jetzt anderweitig decken muss.
MfG Matthieu
Ja genau so gehts mir zur Zeit auch ;-)

Und Matthieu bist schon fleissig am coden? Hatte nämlich heute die gleiche Idee bzw. das gleiche Problem, das der eingebaute DDNS nur 1 Adresse aktualisieren kann.

Vielleicht können wir uns zusammen tun oder wenn du keine Zeit oder Interesse hast, dann würde ich was coden; sprich ein SPK-Paket schnüren.

Und, ist da schon was rausgekommen?

Freundliche Grüsse
oli
 

olijacobi

Benutzer
Mitglied seit
04. Feb 2008
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Hier etwas direkt von DynDNS.

Aber ich weiss nicht ob ich da so schlau werde. Ich versuche es mal, hoffe aber auch das ihr noch Feedback habt...
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
Ich hab ddclient nie zum laufen bekommen. QTip hingegen schon. Er wollte auch ein spk draus machen. Aber das kann noch eine Weile dauern. Bis dann könntest du dich ja mal an ipkg und ddns versuchen. Vielleicht kommst du ja weiter.

Ich hab den ddns-updater zu Gunsten eines anderen Projekts fallen gelassen und andere Auswege gefunden.

MfG Matthieu
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
13
Punkte
84
ja ich bin an einem DDNS updater WebUI dran, wird nicht mehr lange dauern ;)
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
13
Punkte
84
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat