DynDNS Adresse mit Reverse Proxy "endet" an FritzBox

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Strato bietet die Möglichkeit die IPv6 zu aktualisieren:
Code:
https://<username>:<passwd>@dyndns.strato.com/nic/update?hostname=<domain>&myip=0.0.0.0,<ip6addr>&subhostprefix=<ip6lanprefix>

Wie würde Dein Skript denn hierzu aussehen?
 

ZatSynFo

Benutzer
Mitglied seit
30. Mrz 2020
Beiträge
9
Punkte für Reaktionen
3
Punkte
53
Habe keinen Strato Account und kann es deshalb nicht testen; aber so auf die Schnelle müsstest Du nur die $url = ... Zeile anpassen. Ersetze die Platzhalter (<>) durch die jeweiligen Variablen ($). Ggfls. musst Du noch Deine Domain (als Variable) einfügen. Den IPv6-Prefix müsstest Du Dir aus der IPv6 Adresse extrahieren; die Länge / Größe kann je nach Konfiguration variieren. Ich könnte mir aber auch vorstellen, dass Du am Ende den Eintrag &subhostprefix=<ip6lanprefix> gar nicht benötigst.
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Ich hab den IPv6-Prefix weggelassen. Leider funktioniert es nicht wirklich. Der Status auf der GUI bleibt bei "wird geladen" stehen. Meine Zeile mit den Variablen sieht jetzt so aus:

Code:
 $url = "https://$username:$password@dyndns.strato.com/nic/update?hostname=$hostname&myip=$ipv4,$ipv6";

Kann ich irgendwo ein Logfile oder eine Fehlermeldung sehen?

Ist es vielleicht ein Problem, dass in der einen Zeile curl_setopt noch einmal ein Username übergeben wird? Eigentlich ist der Username schon in der Zeile eingebaut.
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
PS: in der Synology gibt es auch ein eingebautes Standardaccount von Strato. Leider ohne IPv6. Rein mit der IPv4 funktioniert das problemlos. Baut aber auf DYNDNS auf und beinhaltet damit keine IPv6.
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.205
Punkte für Reaktionen
774
Punkte
154
Bist du sicher, dass es HTTPS sein muss?

Ich hab's über die Fritzbox mit Strato laufen und der Eintrag sieht so aus:
Code:
http://dyndns.strato.com/nic/update?system=dyndns&hostname=<domain>&myip=<ipaddr>,<ip6addr>
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.067
Punkte für Reaktionen
3.885
Punkte
488
Ich nutze aktuell
Code:
https://dyndns.strato.com/nic/update?hostname=<domain>&myip=<ipaddr>
",<ip6addr>" hatte ich früher auch drin, aber es macht m.E. nur Probleme, weil man per IPv6 meist ja irgendwelche Endgeräte wie eine DS direkt erreichen möchte und nicht die Fritzbox. Portweiterleitung wie bei IPv4 gibt es bei IPv6 ja nicht, nur Portfreischaltungen (Firewall). Den "Königsweg" für solche Fälle habe ich leider noch nicht gefunden.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.165
Punkte für Reaktionen
918
Punkte
424
DynDNS auf dem Client laufen lassen der auch angesprochen werden soll, oder Dienste nutzen die eine prefix Aktualisierung unterstützen (myfritz, dynv6, und andere). Dann wird für angelegte Hosts nur der Netzanteil der ipv6 aktualisiert den der Router im lokalen Netz weitergibt.
 
  • Like
Reaktionen: blurrrr

ZatSynFo

Benutzer
Mitglied seit
30. Mrz 2020
Beiträge
9
Punkte für Reaktionen
3
Punkte
53
@stefaktiv
Ja das kann durchaus sein; entweder lässt Du den Teil "$username:$password@" in $url einfach weg oder Du kommentierst die entsprechenden Zeilen curl_setopt mit // einfach aus, außer die CURLOPT_URL. Bei mir hat es mit "$username:$password@" in der $url tats. auch nicht geklappt.

Du kannst auch curl mit Deiner URL direkt in der Shell eingeben und schauen wie es sich verhält. Bei ALL-INKL wird allerdings ein Update ignoriert, wenn immer wieder die gleich IP gesetzt werden soll. Testweise arbeite ich dann mit fiktiven IPs.

Du kannst das Script auch in der Shell laufen lassen, dazu musst Du die Variablen &username $password $hostname $ipv4 beim Aufruf mit übergeben.
Setze die Variable $verbose temporär auf true, dann werden die Ergebnisse in die Console ausgegeben.

Der Return code von Curl wird in $result gespeichert. Du kannst den ggfls. mit
PHP:
print "return = $result"
auch in der CLI ausgeben.

Wenn das Script läuft, setze $verbose wieder auf false. Vermeide am Ende jede Ausgabe, weil die Synology dann einen Fehler anzeigt.

Hattest Du auch auf Strato geprüft, ob beide Einträge aktualisiert wurden, obwohl die Synology einen Fehler anzeigt?
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.205
Punkte für Reaktionen
774
Punkte
154
  • Haha
Reaktionen: blurrrr

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Sorry, wenn ich nochmal nachfragen muss. Ich komme leider nicht aus der Linux-Programmierwelt. Die Verbindung mit Putty zum NAS aufzubauen ist kein Thema. Auch der Wechsel in die erforderlichen Verzeichnisse. Gleichermaßen konnte ich mit Nano die Skripte generieren und auch Änderungen vornehmen.

Aber wie genau kann ich jetzt das php-Skript starten?

Und wo in der Konsole sehe ich die Ausgabe, wenn verbose auf true gesetzt wurde?
 

ZatSynFo

Benutzer
Mitglied seit
30. Mrz 2020
Beiträge
9
Punkte für Reaktionen
3
Punkte
53
Putty ist schon mal nicht schlecht. Der Pfad zu PHP steht in der 1. Zeile "/usr/local/bin/php74", dann den Pfad zum Script eingeben und anschließend die Variablen 1 bis 4 anhängen; jeweils durch ein Leerzeichen getrennt. Du siehst die Ausgabe in der Console, in der Du auch das Script aufgerufen hast.

Denk daran die Execute Rechte zu setzen, wie in meiner Eingang Nachricht beschrieben.
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Also Dank Deiner Hilfe konnte ich das Skript starten. Verbose war auf true. Er zeigt mir daraufhin die IPv4, korrekte IPv6 und die korrekte Domain an. Eine Fehlermeldung kommt nicht. Trotzdem sehe ich bei Strato, dass die IP-Nummer nicht aktualisiert wurde.

Wenn ich die IPv4 und IPv6 manuell auf etwas anderes ändere, dann passiert auch nichts.

Im Skript habe ich noch eine Ausgabe der kompletten URL integriert - die sieht aber genau so aus, wie es sein soll.

Die Berechtigungen sind wie beschrieben gesetzt.

Wie kann ich noch checken, was das Problem ist?
 

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Wenn man das ganze in der Synology startet, dann kommt "Die IP-Adresse XX.XX.XX.XX kann nicht über DDNS-Dienst bei mein-domain.de registriert werden".

Als Grund wurde gemeldet: "Dieser Vorgang kann nicht ausgeführt werden".
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.067
Punkte für Reaktionen
3.885
Punkte
488
Vielleicht sagst du uns erst mal, was dein aktueller Stand nun ist.
Ich kann dir nur sagen, dass sich eine DDNS bei Strato sowohl mit dem DDNS-Client einer Fritzbox als auch mit dem der DS auch mit Bordmitteln und der o.g. Update-URL aktualisieren lässt.
 

ZatSynFo

Benutzer
Mitglied seit
30. Mrz 2020
Beiträge
9
Punkte für Reaktionen
3
Punkte
53
@stefaktiv hattest Du die URL mit curl auch in der Shell getestet? Es kann durchaus sein, dass evtl. Strato IPv4 und IPv6 nicht gleichzeitig setzen kann, sondern etnweder oder. Was wird denn als Ergebnis am Ende mit "print $result" ausgegeben? Kannst Du evtl. den Log af Strato einsehen?
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.067
Punkte für Reaktionen
3.885
Punkte
488

stefaktiv

Benutzer
Mitglied seit
04. Jan 2017
Beiträge
94
Punkte für Reaktionen
0
Punkte
6
Also tatsächlich funktioniert der Updatestring in der Fritzbox wie gewünscht. Das heißt es wird sowohl IPv4 als auch IPv6 eingetragen. Auch ein Eintrag einer leeren IPv4 mit 0.0.0.0 ist möglich. Wobei ich nicht weiß, ob ein Webbrower das direkt als "nicht abrufbar" interpretiert und dann ausschließlich über die IPv6 geht.

Leider hilft es nur begrenzt, wenn ausschließlich die IPv6 der Fritzbox bei Strato eingetragen ist. Damit komme ich zwar auf die Oberfläche der Fritzbox (obgleich nur mit Zertifikatsfehler) - aber weiter auf die dahinter liegende NAS geht es nicht.

Mit "print $result" kam erst einmal eine Überraschung "good + IPv4". Ich hatte es zuerst mit einer beliebigen privaten IPv4 probiert. Die tauchte dann plötzlich auch bei Strato auf. Anschließend habe ich die IPv4 auf 0.0.0.0 geändert. Wieder kam "good 0.0.0.0" als result von curl. Wenn man das Skript noch einmal aufruft, dann kommt "nochg 0.0.0.0" - laut Beschreibung steht das für "no change".

Eigentlich wäre jetzt alles supi - allerdings wird in der Strato-Oberfläche nur die Änderung auf die private IP angezeigt. Auch nach Logout und Login änderte sich nichts. Die 0.0.0.0 wird nicht angezeigt. Dass das bei Strato geht zeigt der Test mit der Fritzbox.

Das Errorlog bei Strato bringt gar nichts. Ob es noch irgendwo ein anderes Logfile gibt weiß ich nicht.

Unabhängig davon komme ich bei der Oberfläche der DS gar nicht einmal soweit, dass irgendetwas funktioniert. "good" kam wie gesagt nur unter der Konsole.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.067
Punkte für Reaktionen
3.885
Punkte
488
Lies nochmal #26. Du hast die Wahl zwischen
Code:
https://dyndns.strato.com/nic/update?hostname=<domain>&myip=<ipaddr>
https://dyndns.strato.com/nic/update?hostname=<domain>&myip=<ipaddr6>
https://dyndns.strato.com/nic/update?hostname=<domain>&myip=<ipaddr>,<ipaddr6>
also nur IPv4, nur IPv6, oder beide. Wobei ich nur die IPv4 aktualisieren würde. Grund s.o.
 

ZatSynFo

Benutzer
Mitglied seit
30. Mrz 2020
Beiträge
9
Punkte für Reaktionen
3
Punkte
53
@Benares Nutzt Du den DynDNS Service der Fritzbox mit IPv6, wird auch nur die IPv6 der Fritzbox registriert aber eben nicht die der DS, aber gerade die willst Du ja ansprechen. Du kannst so auch keine Portfreigabe zur DS einrichten, das lässt wiedrum die FB nicht zu - dazu gibt es ein entsprechenden KB Eintrag von AVM -> hatte ich in meiner Eingangs-Post erwähnt. Die FB hat eine andere Präfix wie die Clients, die die FB selbst registriert. Deswegen klappt DynDNS auf der FB nicht; zumindest nicht, um von außen auf die DS zu kommen. Mit IPv4 würde das funktionieren ... Wie auch immer; es gibt ein paar gute Gründe, sowohl die IPv4 als auch die IPv6 der DS im bekannt zu machen.

@stefaktiv Ich denke Du bist auf einem guten Weg ... "good $ipv4" oder auch "nochg $ipv4" ist gut. Genau das und nur das sollte das Script dann auch ausgeben. Bei mir fehlt der IPv4 Part. Damit die DS das auch ausführen kann; musst Du "verbose = false;" setzen, sonst kann die DS das nicht richtig verarbeiten.
Auf der DS Oberfläche siehst DU nicht wirklich etwas, außer mit Test Connection ein Normal oder eben ein Failed.

Du kannst zum Testen in der Shell auch dieses Kommando eingeben; das zeigt ein wenig mehr was evtl. schief geht:
Code:
curl --silent --show-error --insecure --user [BENUTZERNAME]:[PASSWORT] https://dyndns.strato.com/nic/update?hostname=[HOSTNAME]&myip=[IPv4],[IPv6]
Gibst Du die IP Werte in der URL nicht mit, wird die lokale IP benutzt. Deswegen siehst Du evtl nur Deine private IP. Die DS ermittelt vor dem Aufruf die öffentliche IP und übergibt diesen Wert an das Script.
Ob mit CURL oder per Script, das Ergebnis solltest Du auf Strato auch sehen.

Wenn das klappt, versuche es nochmal mit dem Script in der Shell; die Ausgabe sollte identisch sein; auch hier sollte das Ergebnis auf Strato zu sehen sein; vorausgesetzt Du verwendest jeweils eine andere IP. Sonst ist auch "nochg IPv4" positiv.

Lass Dich erstmal nicht davon beirren, dass die IPs auf Strato "falsch" sind, Hauptsache die werden gesetzt.

Sollte das alles klappen, dann können wir checken warum bei Dir die DS das nicht ausführen will.

Noch etwas; die DS benötigt zwingend "root execute" Rechte, um das Script auszuführen. Nicht dass Du für Root kein X gesetzt hast.

Evtl. kannst Du den Comment (//) in der Zeile mit CURLOPT_RETURNTRANSFER bei Dir herausnehmen. Auch würde ich jetzt nicht unbedingt mit IPs wie 0.0.0.0 oder einer Adresse aus dem privaten IP Ranges testen.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.067
Punkte für Reaktionen
3.885
Punkte
488
@ZatSynFo
Genau das hatte ich es ja in #26 geschrieben. Lässt man das DDNS-Update auf der Fritzbox laufen, macht es wenig Sinn, neben der IPv4 auch die IPv6 der Fritzbox zu registrieren, wenn man darüber hauptsächlich Geräte hinter der Fritzbox erreichen möchte. Im Gegenteil, das führt nur zu Verwirrungen, da IPv6 kein Port-Forwarding und NAT mehr kennt. DNS löst dann beide Adressen auf, aber nur die IPv4 führt zum eigentlichen Ziel.

Umgekehrt ist es für einen DDNS-Updater auf der DS immer recht schwierig, die externe IPv4 seines Routers zu ermitteln. Das geht nur über externe Abfragen. Dass er seine eigene IPv4 übermittelt, macht ja erst recht keinen Sinn.

Am optimalsten scheint mir: Die FB aktualisiert die IPv4, die DS die IPv6.
 


 

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