DynDNS-Update: Update-URL, DynDNS2-Protokoll und Antworten
Über die Update-URL meldet dein Router, NAS oder Skript die aktuelle IP-Adresse an IPv64.net. Der Updater spricht das DynDNS2-Protokoll (/nic/update), versteht viele Parameter-Namen anderer Anbieter und erkennt deine IP auf Wunsch selbst. Hier stehen alle Parameter, Antworten und Limits.
Update-URL und Endpunkte
Die DynDNS-Update-URL von IPv64.net gibt es unter drei Adressen. Alle drei verhalten sich gleich:
| Adresse | Hinweis |
|---|---|
https://ipv64.net/nic/update | DynDNS2-Pfad, empfohlen für Router und Clients wie ddclient oder inadyn |
https://ipv64.net/update | Kurzform |
https://ipv64.net/update.php | Ursprüngliche Adresse |
Der Updater nimmt GET und POST an. Die Antwort ist standardmäßig JSON; die klassischen DynDNS2-Wörter wie good oder nochg bekommst du mit output=min (siehe Antworten).
Willst du erzwingen, dass die automatisch erkannte Adresse IPv4 oder IPv6 ist, rufst du den Updater über einen der beiden Hostnamen auf, die nur eine Adressfamilie haben:
https://ipv4.ipv64.net/nic/update– Verbindung nur über IPv4https://ipv6.ipv64.net/nic/update– Verbindung nur über IPv6
Die passende Update-URL für deine Domain findest du auf ipv64.net/dyndns in den Einstellungen der Domain. Wie du Domains und Records anlegst, steht unter DynDNS-Domains; fertige Anleitungen für Geräte unter Router & Geräte.
Authentifizierung: Update-Token und Domain-Key
Für ein Update brauchst du einen von drei Schlüsseln. Alle sind 32 Zeichen lang und stehen in deinem Konto; je enger der Schlüssel, desto sicherer:
| Schlüssel | Gilt für | Wo zu finden |
|---|---|---|
| Record-Token (Security Level 3, hoch) | genau einen Record (dessen Präfix) | im einzelnen Record der Domain |
| Domain-Key / Domain Update Token (Level 2, empfohlen) | nur diese eine Domain | Domain-Einstellungen, „Domain Update URL“ |
| Account Update Token (Level 1, niedrig) | alle Domains deines Kontos | Domain-Einstellungen („Account Update URL“) und als „Account Update Token“ im Kontokasten (siehe Konto) |
Mit Domain-Key oder Record-Token kannst du den Parameter domain weglassen – der Updater nimmt dann die Domain des Schlüssels. Mit dem Account Update Token musst du die Domain immer angeben. Jeden Schlüssel kannst du in der Oberfläche neu erzeugen; der alte ist danach ungültig. Der Updater nimmt keine Kombination aus E-Mail und Passwort an.
Schlüssel übergeben
Den Schlüssel kannst du auf drei Wegen mitschicken. Viele Router haben nur Felder für Benutzername und Passwort – dann trägst du den Schlüssel in eines davon ein.
- Als Parameter
Einer der Namenkey,token,user,username,pwd,passoderpassword(GET oder POST). - Per HTTP Basic Auth
Benutzername und Passwort sind frei; eines der beiden Felder muss der Schlüssel sein (24 oder 32 Zeichen). Das andere Feld füllst du mit einem beliebigen Wert, z. B.none. Fehlt der Schlüssel ganz, antwortet der Updater mit401und dem HeaderWWW-Authenticate: Basic realm="IPv64", damit Clients die Anmeldedaten nachreichen. - Per Header
Authorization: Bearer DEIN_DOMAIN_KEY(auchAuthorization: Token …).
Der Schlüssel steht bei GET-Aufrufen in der URL und landet damit z. B. in Logs. Nutze nach Möglichkeit den Domain-Key oder Record-Token statt des Account Update Tokens – dann ist bei einem Leck nur eine Domain betroffen.
Alle Parameter
Der Updater versteht die Parameter-Namen vieler Router und DynDNS-Clients. Bei mehreren gleichbedeutenden Namen gilt der erste, der gefüllt ist.
| Parameter | Bedeutung |
|---|---|
key, token, user, username, pwd, pass, password | Schlüssel (siehe Authentifizierung) |
domain, domains, host, hostname, zone, host_id (nur GET) | Domain, z. B. deinedomain.ipv64.net. Mehrere Domains durch Komma trennen. Mit Domain-Key oder Record-Token optional. |
ip, ip4, ipv4, myip, myip4, myipv4 | IPv4-Adresse für den A-Record. auto = automatisch erkennen. Enthält der Wert ein Komma (z. B. „IPv6,IPv4“ wie bei manchen Speedport-Routern), wird jede gültige Adresse übernommen. |
ip6, ipv6, myip6, myipv6 | IPv6-Adresse für den AAAA-Record. auto = automatisch erkennen. |
praefix | Präfix (Subdomain) des Records innerhalb der Domain, z. B. nas für nas.deinedomain.ipv64.net. Leer = die Domain selbst. |
ipv6prefix, ip6lanprefix, ip6prefix, ipv6lanprefix, prefix | IPv6-Prefix deines Netzes, z. B. 2001:db8:1234:5600::/64, oder auto (siehe IPv6-Prefix, Beispiel-URLs). |
onlyprefix | Nur das IPv6-Prefix aktualisieren, keine IP-Adressen. Es reicht, dass der Parameter vorhanden ist. |
healthcheck, healthtoken | Token eines Push-Checks. Nach jeder verarbeiteten Adresse – auch bei nochg – ruft der Updater zusätzlich die Push-URL dieses Checks auf. Die Antwort steht im Feld healthcheck (bei einem Push-Check OK). Der Push zählt wie jeder andere gegen das Tageskontingent der Healthchecks. |
dkey | Domain-Key einer Domain als Auswahl der Domain; nur zusammen mit einem gültigen Schlüssel in key. |
output (nur GET) | full (Standard, JSON), min (nur ein Wort, Text) oder none (keine Ausgabe) |
howismyip (nur GET) | Ohne Schlüssel: zeigt nur die IP-Adresse, mit der du anfragst |
praefix (mit „ae“) wählt den Record innerhalb der Domain, also die Subdomain. prefix ist dagegen ein Alias für das IPv6-Prefix. Wer prefix=nas schickt, wählt nicht die Subdomain „nas“, sondern setzt ein ungültiges IPv6-Prefix.
Für Subdomains gib die Domain in domain und den vorderen Teil in praefix an.
Gibt es den A- bzw. AAAA-Record für die Domain und das Präfix noch nicht, legt der Updater ihn beim ersten Update an.
Automatische IP-Erkennung
Schickst du weder eine IPv4- noch eine IPv6-Adresse mit (oder nur auto), nimmt der Updater die Adresse, von der deine Anfrage kommt. Das ist immer nur eine Adresse – je nachdem, ob dein Gerät IPv4 oder IPv6 für die Verbindung nutzt. Für Dual-Stack gibt es zwei Wege:
- zwei Aufrufe, einmal über
ipv4.ipv64.netund einmal überipv6.ipv64.net, oder - beide Adressen ausdrücklich mitschicken (
ip=…&ip6=…).
Welche Adresse IPv64.net von dir sieht, zeigt https://ipv64.net/update.php?howismyip.
Nur öffentliche Adressen werden übernommen. Private und reservierte Bereiche (z. B. 192.168.0.0/16, 10.0.0.0/8, fe80::/10) und IPv4-gemappte IPv6-Adressen (::ffff:…) lehnt der Updater ab. Eckige Klammern und eine Zonen-Angabe wie %eth0 entfernt er.
In den Domain-Einstellungen kannst du mit „Ignore IPv4 / IPv6 on the updater (/nic/update)“ eine Adressfamilie ausblenden – praktisch bei DS-Lite oder CG-NAT, wenn der Router eine unbrauchbare IPv4 meldet. Die Antwort zeigt dann "ignore" für diese Familie.
IPv6-Prefix aktualisieren
Ändert dein Provider das IPv6-Prefix, ändern sich die Adressen aller Geräte im Heimnetz. Statt jedes Gerät einzeln zu melden, schickt der Router nur das Prefix. AAAA-Records, deren Inhalt nur aus der Interface-ID besteht (beginnt mit ::, z. B. ::211:22ff:fe33:4455), setzt IPv64.net dann mit dem neuen Prefix zusammen und trägt sie kurz danach im DNS ein. Wie du solche Records anlegst und wie die Adressen entstehen, steht unter IPv6-Prefix und Interface-ID.
Werte für ipv6prefix
Statt ipv6prefix gehen auch ip6lanprefix, ip6prefix, ipv6lanprefix und prefix – je nachdem, was dein Router anbietet.
| Wert | Wirkung |
|---|---|
2001:db8:1234:5600::/64 | Festes Prefix mit Länge. Es muss auf ::/ und die Länge enden (z. B. ::/56 oder ::/64); ohne Länge kommt format error. Verwendet werden die ersten 64 Bit. |
auto | Das /64 der IPv6-Adresse, von der die Anfrage kommt. Klappt nur, wenn die Anfrage über IPv6 kommt – nimm dafür ipv6.ipv64.net. Kommt sie über IPv4, passiert nichts (die Antwort enthält dann kein ipv6prefix). |
Platzhalter des Routers, z. B. <ip6lanprefix> | Der Router setzt selbst das Prefix seines Heimnetzes ein, z. B. 2001:db8:1234:5600::/64. |
Mit oder ohne onlyprefix: Ohne onlyprefix aktualisiert ein Aufruf das Prefix und wie gewohnt die A- und AAAA-Records der Domain (mitgeschickte oder automatisch erkannte Adresse) – so arbeitet die FRITZ!Box. Mit onlyprefix wird nur das Prefix gespeichert, die Adressen der Domain bleiben. Der Parameter braucht keinen Wert, &onlyprefix genügt.
Beispiel-URLs für das IPv6-Prefix
Prefix automatisch erkennen, sonst nichts ändern – z. B. per Cron auf einem Gerät im Heimnetz:
https://ipv6.ipv64.net/nic/update?key=DEIN_DOMAIN_KEY&ipv6prefix=auto&onlyprefix
Festes Prefix setzen:
https://ipv64.net/nic/update?key=DEIN_DOMAIN_KEY&ipv6prefix=2001:db8:1234:5600::/64&onlyprefix
Prefix und Adressen in einem Aufruf – A- und AAAA-Record der Domain plus alle Geräte-Records:
https://ipv64.net/nic/update?key=DEIN_DOMAIN_KEY&ip=192.0.2.10&ip6=2001:db8:1234:5600::1&ipv6prefix=2001:db8:1234:5600::/64
Mit dem Account Update Token – hier muss die Domain dabei sein:
https://ipv6.ipv64.net/nic/update?key=DEIN_UPDATE_TOKEN&domain=deinedomain.ipv64.net&ipv6prefix=auto&onlyprefix
Per POST mit Bearer-Token:
curl -X POST "https://ipv6.ipv64.net/nic/update" \
-H "Authorization: Bearer DEIN_DOMAIN_KEY" \
-d "ipv6prefix=auto" -d "onlyprefix=1"
Router mit Platzhalter (FRITZ!Box, Einrichtung unter FRITZ!Box mit IPv6-Prefix):
https://ipv64.net/nic/update?key=DEIN_DOMAIN_KEY&ip=<ipaddr>&ip6=<ip6addr>&ip6lanprefix=<ip6lanprefix>
Antworten
Mit onlyprefix enthält die JSON-Antwort nur das Ergebnis für das Prefix:
// neues Prefix gespeichert, 3 Geräte-Records werden angepasst
{"info":"good","updated_ipv6prefix_ips":"3","ipv6prefix":"2001:db8:1234:5600::/64","status":"success"}
// Prefix unverändert
{"info":"nochg","ipv6prefix":"2001:db8:1234:5600::/64","status":"success"}
// Prefix nicht erkannt, z. B. ohne /Länge
{"info":"","ipv6prefix":"format error"}
Mit output=min kommt good, nochg oder bei einem Fehler 911. Ohne onlyprefix richten sich status und info nach dem Update der Adressen, dazu kommt ip wie bei jedem Update. updated_ipv6prefix_ips zählt alle AAAA-Records der Domain mit Interface-ID.
Antworten und Statuscodes
Standard ist JSON (output=full). Das Objekt enthält status, info und – je nach Anfrage – ip (mit ipv4/ipv6), ipv6prefix und healthcheck:
{"info":"good","status":"success","ip":{"ipv4":"192.0.2.10"}}
Mit output=min kommt nur ein Wort als Text, wie es DynDNS2-Clients erwarten. output=none liefert keinen Inhalt, nur den HTTP-Statuscode.
| HTTP | JSON status / info | output=min | Bedeutung |
|---|---|---|---|
| 200 | success / good | good | IP wurde geändert (oder Record neu angelegt) |
| 200 | success / nochg | nochg | IP war schon aktuell, nichts geändert |
| 400 | 400 Bad Request / No correct IP transmitted | 911 | Keine gültige öffentliche IP-Adresse |
| 401 | 401 Unauthorized / badauth | badauth | Schlüssel fehlt oder falsch, Konto nicht aktiv oder Domain deaktiviert |
| 404 | 404 Not Found / nohost | nohost | Domain nicht gefunden oder nicht zum Schlüssel passend |
| 409 | 409 Conflict / CNAME is set. | 911 | Auf diesem Präfix liegt ein CNAME; A/AAAA werden nicht gesetzt |
| 429 | 429 Too Many Requests / Update Cooldown - 10sec | abuse | Zu viele Anfragen in kurzer Zeit |
| 429 | 429 Too Many Requests / Updateintervall overcommited | abuse | Tageslimit an Updates erreicht |
Besonderheiten im Feld ip: "ignore" heißt, die Adressfamilie ist in der Domain ausgeblendet; "cdn" heißt, für diese Adressfamilie gibt es unter dem Namen nur den Record eines Edge-Servers von CDN64; er bleibt unverändert (info ist dann nochg, sofern nichts anderes geändert wurde). Hat der Name in CDN64 eigene A/AAAA-Records, aktualisiert der Updater diese ganz normal im Hintergrund, während das DNS weiter auf die Edge-Server zeigt (siehe CDN64 → DynDNS-Updates).
Bei mehreren Domains in einem Aufruf fasst die Antwort alle Ergebnisse in einem Objekt zusammen; spätere Domains überschreiben die Felder früherer. Zur Fehlersuche rufst du die Domains am besten einzeln auf.
Limits und Rate-Limit
- Abkühlzeit: Höchstens drei Updater-Anfragen in 10 Sekunden je Konto. Technisch zählt der Updater die Einträge im Konto-Log der letzten 10 Sekunden; sind es mehr als zwei, antwortet er mit
429undUpdate Cooldown - 10sec. - Tageslimit: Die Zahl der DynDNS-Updates pro Tag hängt von der Kontoklasse ab (Free: 64, Home / Supporter: 1024, Business und Company: unbegrenzt – siehe Konto & Limits). Gezählt wird jede verarbeitete Adresse je Domain, auch ein
nochg. Ein Aufruf mit IPv4 und IPv6 zählt also doppelt. - Zurücksetzen: Der Zähler wird einmal täglich auf 0 gesetzt.
Mit einem Free-Konto reicht ein Aufruf alle 30 Minuten für eine Adresse (48 Updates pro Tag). Besser: Das Skript prüft selbst, ob sich die IP geändert hat, und ruft den Updater nur dann auf. Router machen das in der Regel von sich aus.
Beispiele mit curl und wget
Nur mit Domain-Key, IP automatisch
curl "https://ipv64.net/nic/update?key=DEIN_DOMAIN_KEY"
Domain und beide Adressen angeben
curl "https://ipv64.net/nic/update?key=DEIN_DOMAIN_KEY&domain=deinedomain.ipv64.net&ip=192.0.2.10&ip6=2001:db8::10"
Record mit Präfix (nas.deinedomain.ipv64.net)
curl "https://ipv64.net/nic/update?key=DEIN_DOMAIN_KEY&domain=deinedomain.ipv64.net&praefix=nas&ip6=2001:db8::20"
Basic Auth und DynDNS2-Antwort
curl -u "none:DEIN_DOMAIN_KEY" "https://ipv64.net/nic/update?hostname=deinedomain.ipv64.net&myip=192.0.2.10&output=min"
Bearer-Token per POST
curl -X POST "https://ipv64.net/nic/update" \
-H "Authorization: Bearer DEIN_DOMAIN_KEY" \
-d "domain=deinedomain.ipv64.net" -d "ip=192.0.2.10"
Dual-Stack automatisch mit wget
wget -qO- "https://ipv4.ipv64.net/nic/update?key=DEIN_DOMAIN_KEY&output=min"
wget -qO- "https://ipv6.ipv64.net/nic/update?key=DEIN_DOMAIN_KEY&output=min"
Mehrere Domains mit dem Account Update Token
curl "https://ipv64.net/nic/update?key=DEIN_UPDATE_TOKEN&domain=deinedomain.ipv64.net,zweitedomain.ipv64.net"
Nur einen Record mit dem Record-Key
curl "https://ipv4.ipv64.net/nic/update?key=DEIN_RECORD_KEY"
curl "https://ipv6.ipv64.net/nic/update?key=DEIN_RECORD_KEY"
Der erste Aufruf setzt den A-Record, der zweite den AAAA-Record des Records, zu dem der Key gehört – jeweils mit der automatisch erkannten Adresse.
Update mit Lebenszeichen an einen Healthcheck
curl "https://ipv64.net/nic/update?key=DEIN_DOMAIN_KEY&healthcheck=DEIN_HEALTHCHECK_TOKEN"
Bleibt das Update aus, meldet der Push-Check nach seiner Frist down.
Ohne Ausgabe (für Cron)
curl -s "https://ipv64.net/nic/update?key=DEIN_DOMAIN_KEY&output=none"
Nur das IPv6-Prefix
curl "https://ipv6.ipv64.net/nic/update?key=DEIN_DOMAIN_KEY&ipv6prefix=auto&onlyprefix"
Weitere Varianten unter Beispiel-URLs für das IPv6-Prefix.
Welche Adresse sieht IPv64.net?
curl "https://ipv4.ipv64.net/update.php?howismyip"
curl "https://ipv6.ipv64.net/update.php?howismyip"
Für regelmäßige Updates per Cron siehe Router & Geräte.
Fehlersuche
badauth: Prüfe, ob der Schlüssel vollständig ist (32 Zeichen, Groß-/Kleinschreibung zählt) und ob er nach einem Neu-Erzeugen ersetzt wurde. Bei Basic Auth muss der Schlüssel im Benutzernamen oder im Passwort stehen. Das Konto muss aktiviert sein, die Domain darf nicht deaktiviert sein.nohost: Schreibweise der Domain prüfen. Ein Domain-Key gilt nur für seine eigene Domain – mit fremder Domain im Parameter kommtnohost.No correct IP transmitted: Der Router meldet eine private Adresse (z. B. hinter einem zweiten Router oder bei CG-NAT). Lass die IP automatisch erkennen oder nutzeipv4.ipv64.net.- Falsche Adressfamilie: Die automatische Erkennung liefert IPv6, du willst aber IPv4 (oder umgekehrt) – nimm den passenden Hostnamen
ipv4.ipv64.netbzw.ipv6.ipv64.net. CNAME is set.: Auf dem Präfix liegt ein CNAME. Lösche ihn oder nutze ein anderes Präfix.abuse/ 429: Router oder Skript fragen zu oft. Intervall vergrößern oder nur bei IP-Wechsel aktualisieren.- Kein Effekt im DNS: Der Updater speichert die neue IP sofort, der Nameserver übernimmt sie kurz danach. Danach gilt noch die TTL des Records in Caches von Resolvern.
Jedes erfolgreiche Update steht im Konto-Log auf ipv64.net/logs („Update A/AAAA Record - GOOD“). Weitere Hilfe gibt es in den FAQ und im v64.tech-Forum.
Fehler gefunden oder etwas fehlt? Schreibt uns im v64.tech-Forum. · Stand: 2026-10-29