Hello,
seit ein paar Tagen habe ich Probleme mit meinem DynDNS in der Fritzbox.
Anbieter ist no-ip.com. Es hatte bis jetzt längere Zeit einwandfrei funktioniert. Ich habe nichts geändert und kein Update bekommen.
Beim Versuch, den Melde-Request manuell ausführen zu lassen, bekomme ich immer einen Status 401 als Antwort.
Beide Varianten scheitern:
https://USERNAME:PASSWOERT@dynupdate.no-ip.com/nic/update?hostname=test.ddns.net&myip=79.255.90.65
wobei USERNAME und PASSWORT base64-encoded sind
https://CREDENTIALS@dynupdate.no-ip.com/nic/update?hostname=test.ddns.net&myip=79.255.90.65
wobei CREDENTIALS = base64_encode(username + ':' + passwort) ist
(Pseudo-Code)
Witzigerweise hatte die erste Variante bei der manuellen Meldung eine Zeit lang funktioniert, obwohl die eigentlich falsch ist...
Browser
Wenn man das im Browser durchführt kommt also das "401-Popup". Wird das dann mit den passenden Werten ausgefüllt, kommt ein OK für die übermittelte IP. Die ist dann auch sofort im DNS verfügbar.
PHP
Wenn ich das Ganze in PHP versuche, bekomme ich auch den Status 401.
Wie müsste der Ablauf aussehen, damit ich es mittels PHP-Script Host2Host hinbekomme?
Bisher sieht es im Kern so aus;
$remote_url = 'https://dynupdate.no-ip.com/nic/update?hostname=test.ddns.net&myip=' . trim($ip);
$_opts =
array
(
'http'=>array
(
'method'=>"GET",
'header' => "Authorization: Basic " .
base64_encode("$username:$password")
)
);
$context = stream_context_create($_opts);
## Open the file using the HTTP headers set above
$result = file_get_contents($remote_url, false, $context);
Der letzte Fehler lag in der $remote_url
, in der ich anstelle eines '&' ein '&' notiert hatte. Das gehört in den HTML-Kontext, aber nicht in die zu übermittelnde URL.
Es funktioniert nun so.
Warum aber meine Fritzbox nicht mehr mit no-ip.com zusammenarbeitet, habe ich noch nicht herausgefunden.
.
Glück Auf
Tom