DynDNS mit Netcup und einem Git-Projekt

  • Ich habe mir zu meiner ersten Aufgabe gleich etwas für mich schwieriges ausgesucht und im Forum ihr fand ich auch noch keine Hinweise.


    Zuvor hatte ich einen Domain bei Selfhost, dort konnte man einer Subdomain ein DynDNS zuweisen. Das will ich nun auch über Netcup einrichten.

    Sowas möchte ich ohne einen andere Dyn-Dienst zu nutzen laufen lassen.

    Im Wiki ist einiges aufgeführt und ich finde diesen "fernwerker/ownDynDNS" brauchbar. https://github.com/fernwerker/ownDynDNS

    - .env.dist in .env umbenannt

    - .env mit den Zugangsdaten der FritzBox zusätzlich die API mit API-PW und der Netcup-ID gefüttert.


    URL in Browser

    https://mail.DOMAIN.de/update.php?user=%3Cusername%3E&password=%3Cpass%3E&ipv4=%3Cipaddr%3E&ipv6=%3Cip6addr%3E&domain=%3Cdomain%3E


    Kommt dieser Fehler im Browser

    Fatal error: Uncaught RuntimeException: payload invalid in /var/www/vhosts/hostingxxxxxx.axxxx.netcup.net/mail.DOMAIN.de/httpdocs/src/Handler.php:35

    Stack trace:

    #0 /var/www/vhosts/hostingxxxxxx.axxxx.netcup.net/mail.DOMAIN.de/httpdocs/update.php(20): netcup\DNS\API\Handler->__construct(Array, Array)

    #1 {main}

    thrown in /var/www/vhosts/hostingxxxxxx.axxxx.netcup.net/mail.DOMAIN.de/httpdocs/src/Handler.php on line 35


    Kommt dieser Fehler in der Fritzbox

    DynDNS-Fehler: Der angegebene Domainname kann trotz erfolgreicher Aktualisierung nicht aufgelöst werden.


    Was mache ich falsch?

  • Also erstmal würde ich das debug=true in der env setzen und schauen ob im Log irgendwas vernünftiges herauszulesen ist.

    Dann fällt mir beim Aufruf der URL noch auf, dass du die Parameter mit < und > umschließt (%3C, %3D), das muss doch sicher nicht sein.


    Hier siehst du wie die Payload generiert wird: https://github.com/fernwerker/…examples/update-dyndns.sh


    Bezüglich der Meldung der FRITZ!Box, welche TTL hast du für die Records eingestellt? Wenn du da im Stundenbereich unterwegs bist, kann die FB das nicht prüfen.

  • Ich teste manche Links auch mal nur mit dem Browser um zu sehen ob eine Reaktion von der Gegenseite kommt, deshalb der og. Vergleich.


    Mit der og. Payload Sache komme ich noch nicht klar! Ich habe in die update-dyndns.sh die Wert: USER, PASS, DOMAIN und SCRIPT von der .env übernommen und den Anfangsstring der FritzBox bei SCRIPT bis .php eingetragen.


    So von den Einstellungen werden ja an so vielen Stellen gemacht, aber der Profi kommt bestimmt klar:

    - in den DNS Einstellungen der Domain, habe ich den TTL Wert von den Standardwert auf 600 eingestellt.

    - in der .env --> debug=true --> war schon von den Standardeinstellungen so gesetzt

    - in der log.json finde ich mehrfach zeitlich wiederholend klar, diese zwei Einträge, auch nach Änderung der update-dyndns.sh :


    "[2022-10-19T09:21:12+02:00] dns recordset NOT updated (no changes)",

    "[2022-10-19T09:21:12+02:00] api logout successful"


    Es scheint ein Missverständnis in der handler.php in Zeile 35 zu geben. Ich werde diese Zeile jetzt nicht verändern, aber was will diese Zeile "throw new RuntimeException('payload invalid');" für Werte aus vorangegangenen Skripten haben? Habe ich selber einen Einfluss darauf?

  • "[2022-10-19T09:21:12+02:00] dns recordset NOT updated (no changes)",

    "[2022-10-19T09:21:12+02:00] api logout successful"

    Haben sich die IP-Adressen zwischenzeitlich auch geändert? Testweise könnte man FORCE=1 (vgl. hier) verwenden.

    VServer IOPS Comparison Sheet: https://docs.google.com/spreadsheets/d/1w38zM0Bwbd4VdDCQoi1buo2I-zpwg8e0wVzFGSPh3iE/edit?usp=sharing

  • Sieht doch gar nicht so schlecht aus, im Record sollte nun deine IP stehen.


    Bei einer TTL von 600(s) wird es 10 Minuten brauchen die Änderung greift.

    Die FRITZ!Box prüft den DNS Eintrag wesentlich zügiger und schlägt damit fehl.


    Mit der og. Payload Sache komme ich noch nicht klar! Ich habe in die update-dyndns.sh die Wert: USER, PASS, DOMAIN und SCRIPT von der .env übernommen und den Anfangsstring der FritzBox bei SCRIPT bis .php eingetragen.

    Bis .php, das verstehe ich nicht, am Besten stellst du mal ein was bei der FRITZ!Box im Scriptfeld steht.

  • Die Fritzbox ist noch etwas träge und meldet noch kein OK, aber das log.json sagt schonmal OK :) und DNS haut auch hin.


    "[2022-10-19T10:18:38+02:00] api login successful",

    "[2022-10-19T10:18:38+02:00] IPv4 for mail.DOMAIN.de set to 91.40.250.145",

    "[2022-10-19T10:18:38+02:00] dns recordset updated",

    "[2022-10-19T10:18:38+02:00] api logout successful"


    So nun ist in den DNS auch unter der Subdomain mail.DOMAIN.de die IP der FritzBox.


    Bekommt man nun diesen Wert auch auf die anderen Subdomains die auf mein NAS registriert sind hin?


    TTL=600 ist in Ordnung oder gibt es andere Empfehlungen

    FORCE=1 wieder auf 0 setzen wenn es nun für Dauer geht?

  • Das Lets Entcrypt Zertifikat läuft ja nun auf Netcup, das kann ich mir auch downloaden und auf das NAS übertragen, aber was passiert nach der ersten Aktualisierung des Zertifikats? Sind beide gleich, werden Sie auch zeitgleich aktualisiert und wenn nicht kommt dann das Chaos oder eins löschen aber welches?

  • Mehrere Records zu aktualisieren unterstützt das PHP Script wohl nicht.


    Wenn deine komplette Domain aufs NAS zeigen soll kannst du ggf den @ oder * Record aktualisieren (nie probiert).


    Da du bei deiner Domain bereits mail. aufs NAS zeigen lässt, du planst aber nicht einen Mailserver auf dem NAS zu betreiben?

    Mit dynamischen IPs ist das wenig erfolgsversprechend.

  • Den Mail Server habe ich seit 2016 erfolgreich auf dem NAS am Laufen trotz DynDNS und hatte mit mail-tester.com immer gute Werte.

    6 Jahre Selfhost

    14 Tage StratoAG

    x Tage Netcup --> soweit bin ich noch nicht, da es mit dem Umzug der Domain trotz "Auth-Code" nicht geklappt hat und ich bei Netcup eine neue Domain erhalten habe.


    An die letzten Werte (StratoAG) kann ich mich noch erinnern über 8,5Pkt. (es gibt ja schon abstriche wenn der Text zu kurz ist usw.)

    Screenshots habe ich jetzt nicht gefunden, war bei den Abzügen aber belanglos.


    schreibe ich dann nur @.mail.DOMAIN.de, dann sollte bei 4 (siehe Skizze) meine IP stehen.

    Was ist der Unterschied zwischen * und @ bei den DNS (alla Wildcard)