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:

AdresseHinweis
https://ipv64.net/nic/updateDynDNS2-Pfad, empfohlen für Router und Clients wie ddclient oder inadyn
https://ipv64.net/updateKurzform
https://ipv64.net/update.phpUrsprü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 IPv4
  • https://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üsselGilt fürWo 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 DomainDomain-Einstellungen, „Domain Update URL“
Account Update Token (Level 1, niedrig)alle Domains deines KontosDomain-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.

  1. Als Parameter
    Einer der Namen key, token, user, username, pwd, pass oder password (GET oder POST).
  2. 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 mit 401 und dem Header WWW-Authenticate: Basic realm="IPv64", damit Clients die Anmeldedaten nachreichen.
  3. Per Header
    Authorization: Bearer DEIN_DOMAIN_KEY (auch Authorization: Token …).
Schlüssel schützen

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.

ParameterBedeutung
key, token, user, username, pwd, pass, passwordSchlü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, myipv4IPv4-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, myipv6IPv6-Adresse für den AAAA-Record. auto = automatisch erkennen.
praefixPräfix (Subdomain) des Records innerhalb der Domain, z. B. nas für nas.deinedomain.ipv64.net. Leer = die Domain selbst.
ipv6prefix, ip6lanprefix, ip6prefix, ipv6lanprefix, prefixIPv6-Prefix deines Netzes, z. B. 2001:db8:1234:5600::/64, oder auto (siehe IPv6-Prefix, Beispiel-URLs).
onlyprefixNur das IPv6-Prefix aktualisieren, keine IP-Adressen. Es reicht, dass der Parameter vorhanden ist.
healthcheck, healthtokenToken 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.
dkeyDomain-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 ist nicht prefix

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.net und einmal über ipv6.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.

WertWirkung
2001:db8:1234:5600::/64Festes 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.
autoDas /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.

HTTPJSON status / infooutput=minBedeutung
200success / goodgoodIP wurde geändert (oder Record neu angelegt)
200success / nochgnochgIP war schon aktuell, nichts geändert
400400 Bad Request / No correct IP transmitted911Keine gültige öffentliche IP-Adresse
401401 Unauthorized / badauthbadauthSchlüssel fehlt oder falsch, Konto nicht aktiv oder Domain deaktiviert
404404 Not Found / nohostnohostDomain nicht gefunden oder nicht zum Schlüssel passend
409409 Conflict / CNAME is set.911Auf diesem Präfix liegt ein CNAME; A/AAAA werden nicht gesetzt
429429 Too Many Requests / Update Cooldown - 10secabuseZu viele Anfragen in kurzer Zeit
429429 Too Many Requests / Updateintervall overcommitedabuseTageslimit 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 429 und Update 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.
Faustregel für Skripte

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 kommt nohost.
  • 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 nutze ipv4.ipv64.net.
  • Falsche Adressfamilie: Die automatische Erkennung liefert IPv6, du willst aber IPv4 (oder umgekehrt) – nimm den passenden Hostnamen ipv4.ipv64.net bzw. 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