tag:forum.selfhtml.org,2005:/selfProbleme bei DynDNS mit no-ip.com und Fritz-Box, aber PHP-Fehler gefunden... – SELFHTML-Forum2021-04-23T05:23:03Zhttps://forum.selfhtml.org/self/2021/apr/22/probleme-bei-dyndns-mit-no-ip-com-und-fritz-box/1787597#m1787597TS2021-04-22T18:40:02Z2021-04-22T19:49:30ZProbleme bei DynDNS mit no-ip.com und Fritz-Box, aber PHP-Fehler gefunden...<p>Hello,</p>
<p>seit ein paar Tagen habe ich Probleme mit meinem DynDNS in der Fritzbox.<br>
Anbieter ist no-ip.com. Es hatte bis jetzt längere Zeit einwandfrei funktioniert. Ich habe nichts geändert und kein Update bekommen.</p>
<p>Beim Versuch, den Melde-Request manuell ausführen zu lassen, bekomme ich immer einen Status 401 als Antwort.</p>
<p>Beide Varianten scheitern:</p>
<pre><code class="block language-text">
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)
</code></pre>
<p>Witzigerweise hatte die erste Variante bei der manuellen Meldung eine Zeit lang funktioniert, obwohl die eigentlich falsch ist...</p>
<h4>Browser</h4><p>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.</p>
<h4>PHP</h4><p>Wenn ich das Ganze in PHP versuche, bekomme ich auch den Status 401.</p>
<p>Wie müsste der Ablauf aussehen, damit ich es mittels PHP-Script Host2Host hinbekomme?</p>
<p>Bisher sieht es im Kern so aus;</p>
<pre><code class="block language-php"><span class="token variable">$remote_url</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'https://dynupdate.no-ip.com/nic/update?hostname=test.ddns.net&myip='</span> <span class="token operator">.</span> <span class="token function">trim</span><span class="token punctuation">(</span><span class="token variable">$ip</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$_opts</span> <span class="token operator">=</span>
<span class="token keyword">array</span>
<span class="token punctuation">(</span>
<span class="token string single-quoted-string">'http'</span><span class="token operator">=></span><span class="token keyword">array</span>
<span class="token punctuation">(</span>
<span class="token string single-quoted-string">'method'</span><span class="token operator">=></span><span class="token string double-quoted-string">"GET"</span><span class="token punctuation">,</span>
<span class="token string single-quoted-string">'header'</span> <span class="token operator">=></span> <span class="token string double-quoted-string">"Authorization: Basic "</span> <span class="token operator">.</span>
<span class="token function">base64_encode</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"<span class="token interpolation"><span class="token variable">$username</span></span>:<span class="token interpolation"><span class="token variable">$password</span></span>"</span><span class="token punctuation">)</span>
<span class="token punctuation">)</span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$context</span> <span class="token operator">=</span> <span class="token function">stream_context_create</span><span class="token punctuation">(</span><span class="token variable">$_opts</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">## Open the file using the HTTP headers set above</span>
<span class="token variable">$result</span> <span class="token operator">=</span> <span class="token function">file_get_contents</span><span class="token punctuation">(</span><span class="token variable">$remote_url</span><span class="token punctuation">,</span> <span class="token constant boolean">false</span><span class="token punctuation">,</span> <span class="token variable">$context</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
<p>Der letzte Fehler lag in der <code>$remote_url</code>, in der ich anstelle eines '&' ein '&' notiert hatte. Das gehört in den HTML-Kontext, aber nicht in die zu übermittelnde URL.</p>
<p>Es funktioniert nun so.</p>
<p>Warum aber meine Fritzbox nicht mehr mit no-ip.com zusammenarbeitet, habe ich noch nicht herausgefunden.</p>
<p>.<br>
Glück Auf<br>
Tom</p>
https://forum.selfhtml.org/self/2021/apr/22/probleme-bei-dyndns-mit-no-ip-com-und-fritz-box/1787607#m1787607Raketenglaskugelroller2021-04-23T05:23:03Z2021-04-23T05:23:03ZProbleme bei DynDNS mit no-ip.com und Fritz-Box, aber PHP-Fehler gefunden...<blockquote>
<p>seit ein paar Tagen habe ich Probleme mit meinem DynDNS in der Fritzbox.</p>
</blockquote>
<blockquote>
<pre><code class="block">a) https://USERNAME:PASSWOERT@dynupdate.no-ip.com …
b) https://CREDENTIALS@dynupdate.no-ip.com …
</code></pre>
</blockquote>
<blockquote>
<p>Warum aber meine Fritzbox nicht mehr mit no-ip.com zusammenarbeitet, habe ich noch nicht herausgefunden.</p>
</blockquote>
<p>Womöglich haben sich die Macher der Fritzbox darauf verlassen, dass die Varianten a) oder b) noch funktionieren, denn</p>
<blockquote>
<p>Ich habe nichts geändert und kein Update bekommen.</p>
</blockquote>
<p>Da kann es ja nur an der abgeschalteten, respektive gefixten Schnittstelle von no-ip.com liegen, bei welcher es bis dato noch möglich war, die CREDENTIALs per GET zu übertragen, was eben unsicher ist. Soll heißen: Nach dem nächsten Update der Fritzbox geht es wohl (hoffentlich) wieder.</p>
<p>Tipp:</p>
<p>Aus einem ähnlichem Grund habe ich bei meinem Hoster einfach zwei CNAME-Records für meine Hostnamen auf den bei myfritz.net gelegt.</p>
<p>Etwas wie <a href="https://www.fastix.org/netztools/index.php?addr=code.fastix.org&action=nslookup" rel="nofollow noopener noreferrer">nslookup code.fastix.org</a> zeigt das.</p>