Dokumentation
Alles, was nötig ist, um einen Router oder ein Skript auf bhdns.de zu richten: das Update-Protokoll, Einstellungen für AVM FRITZ!Box und Telekom Speedport, fertige Skripte, IPv6-Handhabung und die Grenzen des kostenlosen Tarifs.
Schnellstart
Beanspruchen Sie eine Subdomain und richten Sie dann Ihren Router oder ein Skript auf die Update-URL. Der Record wird innerhalb einer Sekunde aktualisiert; die TTL beträgt 60 Sekunden, und sowohl IPv4 (A) als auch IPv6 (AAAA) werden unterstützt.
Sie können die Domain im Formular wählen — bhdns.de oder sbdns.de. Der Name, den Sie wählen, wird angelegt als <label>.<domain>, dieselbe Bezeichnung darf in beiden Domains existieren, und die kostenlosen Limits gelten gemeinsam für beide. Die Adresserkennung läuft immer über v4.bhdns.de / v6.bhdns.de: Diese Namen teilen Ihrem Browser nur mit, welche Adresse er verwendet, daher sind sie unabhängig von der Domain, die Sie wählen.
- Erstellen Sie ein Konto und bestätigen Sie den 6-stelligen Code — registrieren.
- Fügen Sie eine Subdomain hinzu, zum Beispiel
my-home. - Kopieren Sie das Update-Token aus dem Subdomain-Dialog — es wird nur einmal angezeigt.
- Geben Sie URL, Domain, Benutzername und Token in Ihren Router ein (unten) oder führen Sie ein Skript aus.
Werte, die Ihr Client benötigt
| Update-Adresse | update.bhdns.de/nic/update — eine Adresse für jeden Client. Router, die Adresse, Protokoll und Port getrennt abfragen, übernehmen sie ohne Zusätze, genau wie geschrieben; ein Skript oder eine App, die eine ganze URL annimmt, schreibt https://update.bhdns.de/nic/update. Es ist absichtlich nicht die nackte Domain: Ein Router, der bhdns.de aufgelöst hat, bevor die Domain delegiert wurde, hält möglicherweise noch die alte 127.0.0.1 der Registrierungsstelle im Cache und sendet das Update an sich selbst, während für einen Namen, der noch nicht existierte, nichts zwischengespeichert werden kann. |
|---|---|
| Domain / Hostname | my-home.bhdns.de |
| Benutzername | my-home.bhdns.de (derselbe vollständige Hostname) |
| Passwort | Ihr Update-Token, z. B. bhdns_9f2c… — 30 Zeichen, kurz genug für das FRITZ!Box-Feld (32) und den Speedport (50) |
Protokoll und Port sind nicht optional. Der Dienst antwortet auf HTTPS, Port 443. Reines HTTP wird nur auf HTTPS umgeleitet und Router folgen dieser Weiterleitung nicht, daher scheitert eine http://-URL oder der falsche Port mit einem Fehler, den der Router als "not registered" anzeigt.
Update-Protokoll
Der Endpunkt folgt der dyndns2-Konvention, die Router und Clients bereits sprechen, mit HTTP-Basic-Authentifizierung. GET und POST funktionieren beide.
GET https://update.bhdns.de/nic/update?hostname=my-home.bhdns.de&myip=203.0.113.47&myipv6=2a01:4f8::1
Authorization: Basic base64("my-home.bhdns.de:<token>")| Parameter | Bedeutung |
|---|---|
hostname | Vollständiger Hostname. Mehrere Namen können durch Kommas getrennt werden. |
myip | IPv4-Adresse → wird als A -Record geschrieben. Darf eine kommagetrennte Liste sein: Jede Adresse geht in den Record ihrer eigenen Familie, daher funktioniert hier auch eine IPv6-Adresse (der Speedport Smart 4 sendet myip=<ipv6>,<ipv4>). |
myipv6 | IPv6-Adresse → wird als AAAA Record geschrieben. |
Senden Sie beide Parameter, damit beide Records aktuell bleiben. Wenn keiner gesendet wird, wird die Adresse der Anfrage selbst verwendet. Nur die geänderte Familie wird neu geschrieben — der andere Record bleibt unberührt.
Antworten
| Antwort | Bedeutung |
|---|---|
good <ip> | Der Record wurde aktualisiert. |
nochg <ip> | Die Adresse ist bereits aktuell; es wurde nichts geschrieben. |
badauth | Falsches Token oder keines gesendet. |
nohost | Der Hostname existiert bei diesem Dienst nicht. |
notfqdn | Es wurde kein Hostname angegeben. |
abuse | Ein Limit wurde erreicht — siehe Grenzen. |
911 | Die Adresse war unlesbar (zum Beispiel Text in myip). |
IPv6 und AAAA-Records
Router wie die FRITZ!Box und der Speedport senden IPv4 und IPv6 im selben Update, daher erhält eine Subdomain normalerweise sowohl einen A- als auch einen AAAA-Record. Wenn Sie nicht möchten, dass die IPv6-Adresse veröffentlicht wird — zum Beispiel, weil Ihr Anbieter das Präfix wechselt und manche Clients dann scheitern — öffnen Sie die Subdomain im Dashboard und wählen Sie IPv6 entfernen.
Das ist eine Einstellung für diese Subdomain, keine einmalige Löschung: Ab dann ignoriert der Server die IPv6-Adresse, die Ihr Router sendet, daher kommt der AAAA-Record beim nächsten Update nicht zurück. Wählen Sie IPv6 erlauben, um das rückgängig zu machen — der Record kehrt mit dem nächsten Update Ihres Routers zurück.
Jede Subdomain behält mindestens eine Adresse. Wenn sie noch keine IPv4-Adresse hat, kann IPv6 nicht abgeschaltet werden: Fügen Sie zuerst eine IPv4-Adresse hinzu, sonst würde der Name überhaupt nicht mehr auflösen.
AVM FRITZ!Box
FRITZ!OS hat einen eingebauten DynDNS-Client, der auch IPv6 sendet. Die Menünamen unterscheiden sich zwischen den Versionen etwas; die Feldwerte nicht.
- Öffnen Sie Internet → Shares → DynDNS (bei manchen Versionen Internet → Permit Access → DynDNS).
- Aktivieren Sie Use dynamic DNS.
- Dynamic DNS provider: User-defined.
- Update URL— geben Sie genau das ein, einschließlich der Platzhalter:
https://update.bhdns.de/nic/update?hostname=<domain>&myip=<ipaddr>&myipv6=<ip6addr> - Domain name:
my-home.bhdns.de - Username:
my-home.bhdns.de - Password: Ihr Update-Token.
Die FRITZ!Box ersetzt <domain>, <ipaddr> und <ip6addr> selbst, damit beide Records aktuell bleiben. Wenn Ihre Firmware die URL ablehnt, entfernen Sie die beiden Adressparameter und lassen Sie den Router nur hostnamesenden — der Dienst verwendet dann die Adresse, von der die Anfrage kam.
Die FRITZ!Box hat ein einziges Update URL Feld, daher gehört hier das Schema doch in die URL. Das ist das Gegenteil von Routern, deren Formular die Adresse vom Protokoll und vom Port trennt (siehe Speedportundandere Router), wo https:// im Adressfeld abgelehnt wird.
Telekom Speedport
Speedport-Modelle bieten dynamisches DNS unter Internet → Dynamic DNS (die Benennung variiert je nach Modell und Firmware). Das Formular teilt das Ziel in eine Adresse, ein Protokoll und einen Port— und es lehnt die Adresse ab, wenn Sie https:// hineinkopieren. Geben Sie die Adresse ohne Zusätze ein und wählen Sie Protokoll und Port in ihren eigenen Feldern.
| Provider / Anbieter | User-defined / Other / Anderer Anbieter |
|---|---|
| Name (labelled Hostname on some firmwares) | my-home.bhdns.de— den vollständigen Namen, nicht nur my-home |
| Username / Benutzer | my-home.bhdns.de— denselben vollständigen Namen |
| Passwort | Ihr Update-Token |
| Updateserver-Adresse | update.bhdns.de/nic/update— kein https://, kein Port, kein abschließender Schrägstrich |
| Protokoll | HTTPS — zwingend. Reines HTTP wird nur umgeleitet, und der Speedport folgt keinen Weiterleitungen. |
| Port | 443 — zwingend. Verschlüsselter HTTPS-Port; alles andere läuft in einen Timeout. |
Sie müssen nicht raten, welches Feld den Namen trägt. In welchem Feld die Firmware ihn auch sendet — im Query-String, Name oder Username— das Update funktioniert. Wenn keines davon den vollständigen Namen enthält, erkennt der Server die Subdomain trotzdem allein am Token, denn ein Token gehört zu genau einer Subdomain. Geben Sie denselben vollständigen Namen in Name und Username ein, und es funktioniert mit jeder Firmware.
Das Statusfeld zeigt möglicherweise weiterhin not registered an, bis das erste erfolgreiche Update durchgelaufen ist — das ist die Anzeige des Routers, nicht unsere Antwort. Wenn es dabei bleibt, prüfen Sie das Protokoll des Routers: Eine gültige Anfrage wird mit good <ip> oder nochg <ip>, und badauth bedeutet, dass das Token falsch ist.
Viele Speedport-Versionen bieten IPv6 nicht für dynamisches DNS an. In diesem Fall wird der A -Record vom Router gepflegt, und IPv6 kann durch ein Skript (unten) oder durch Anhaken von IPv6 in einer neueren Firmware aktualisiert werden.
Andere Router und NAS
Alles, was dyndns2 spricht, funktioniert — wählen Sie den Anbieter "benutzerdefiniert" und verwenden Sie die Werte aus demSchnellstart.
Adresse, Protokoll und Port sind bei den meisten Routern drei separate Felder. Ins Adressfeld kommt update.bhdns.de/nic/update— ohne Zusätze, ohne https://, ohne Port und ohne abschließenden Schrägstrich. Wählen Sie dann HTTPS und Port 443; auf nichts anderes antwortet der Dienst. Ein Router, der "not registered" anzeigt, während sein Protokoll sagt, dass die URL abgelehnt wurde, hat fast immer das Schema ins Adressfeld kopiert.
- OpenWrt:
opkg install ddns-scripts luci-app-ddns, dann Services → Dynamic DNS → providercustom, Update-URLhttps://update.bhdns.de/nic/update?hostname=[DOMAIN]&myip=[IP]&myipv6=[IP6], Domain, Benutzername und Token. - Synology DSM: Control Panel → External Access → DDNS → Add → Service provider Customize, mit derselben URL und denselben Zugangsdaten.
- pfSense / OPNsense: Services → Dynamic DNS → Add, Service type Custom, Schnittstelle (IPv4 und/oder IPv6), URL mit
%IP%/%IP6%Platzhaltern. - Raspberry Pi, servers, containers: Verwenden Sie die Skripte unten mit einem Cronjob oder einem systemd-Timer.
Skripte zum Kopieren
Jedes Skript sendet beide Adressen, wenn es sie lesen kann. Ersetzen Sie die drei Werte am Anfang durch Ihre eigenen.
Linux / macOS (bash)
#!/bin/sh
HOST="my-home.bhdns.de"
TOKEN="bhdns_your_token"
URL="https://update.bhdns.de/nic/update"
IP4=$(curl -4 -fsS https://bhdns.de/nic/whoami || true)
IP6=$(curl -6 -fsS https://bhdns.de/nic/whoami || true)
curl -fsS -u "$HOST:$TOKEN" \
"$URL?hostname=$HOST&myip=$IP4&myipv6=$IP6"
echoCron (alle fünf Minuten)
*/5 * * * * /usr/local/bin/bhdns-update.sh >/dev/null 2>&1systemd-Timer (besser als Cron)
# /etc/systemd/system/bhdns-update.service
[Unit]
Description=bhdns.de dynamisches DNS aktualisieren
[Service]
Type=oneshot
ExecStart=/usr/local/bin/bhdns-update.sh
# /etc/systemd/system/bhdns-update.timer
[Unit]
Description=bhdns.de-Update alle 5 Minuten ausführen
[Timer]
OnBootSec=2min
OnUnitActiveSec=5min
[Install]
WantedBy=timers.targetDann: systemctl enable --now bhdns-update.timer.
Windows (PowerShell)
$host_ = "my-home.bhdns.de"
$token = "bhdns_your_token"
$pair = $host_ + ":" + $token
$auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($pair))
# IPv4 (erforderlich), IPv6, wenn Ihr Netzwerk es unterstützt
$ip4 = (Invoke-RestMethod "https://bhdns.de/nic/whoami")
$ip6 = ""
try { $ip6 = (Invoke-RestMethod "https://bhdns.de/nic/whoami" -LocalAddress "::") } catch {}
$url = "https://update.bhdns.de/nic/update?hostname=$host_&myip=$ip4&myipv6=$ip6"
Invoke-RestMethod $url -Headers @{ Authorization = "Basic $auth" }Docker / NAS-Einzeiler
curl -fsS -u "my-home.bhdns.de:bhdns_your_token" \
"https://update.bhdns.de/nic/update?hostname=my-home.bhdns.de"Ohne myip verwendet der Dienst die Adresse, von der die Anfrage kam, was Sie bei einem Einzeiler möchten.
Grenzen des kostenlosen Tarifs
Wir hosten Subdomains unter zwei Domains: bhdns.de und sbdns.de— Sie wählen beim Beanspruchen eines Namens eine aus, und die Limits gelten gemeinsam für beide (5 Subdomains insgesamt). Eine eigene Domain mitzubringen wird noch nicht unterstützt. Der kostenlose Tarif hat dieselbe Form wie der Standard-Plan bei ipv64.net: 5 Subdomains und 50 Updates in 24 Stunden.
Die 50 werden als Adressänderungen, nicht als Anfragen gezählt. Ein Router darf so oft fragen, wie er möchte — so funktioniert die FRITZ!Box — aber die Adresse darf nur so oft neu geschrieben werden:
| Limit | Wert |
|---|---|
| Subdomains pro Konto | 5 |
| Adressänderungen pro Host / 24 h | 50 |
| Anfragen pro Host / 24 h | 2000 |
| Anfragen pro Adresse / 24 h | 3000 |
| Kürzester Abstand zwischen zwei Änderungen | 30s |
| Neue Subdomains pro Konto / 24 h | 10 |
Ein Zwei-Buchstaben-Name ist für einen bezahlten Tarif reserviert; freie Namen haben mindestens drei Zeichen. Wenn ein Limit erreicht wird, erhält der Client abuse, und der Grund wird ins Protokoll geschrieben.
Namen werden auch abgelehnt, wenn sie Wörter enthalten, die für Missbrauch, Raubkopien oder Erwachsenenmaterial verwendet werden — einschließlich einfacher Verschleierungen wie p-o-r-n oder p0rn. Das gilt für jedes Konto.
Missbrauchsmeldungen
Wenn eine Subdomain wegen Missbrauch gemeldet wird — Spam, Phishing, Schadsoftware oder anderes Rechtswidriges —, ist dieser eine Name gesperrt. Er antwortet sofort nicht mehr im DNS und Sie können ihn nicht selbst aktivieren; nur ein Administrator kann die Sperre aufheben. Der Rest Ihres Kontos funktioniert weiter.
Eine Sperre ist kein Urteil: Wenn die Meldung falsch war, melden Sie sich (siehe Impressumfür die Adresse) und sie wird geprüft und aufgehoben. Sperren werden nie automatisch gelöscht, und jede wird mit der Meldung erfasst, auf der sie beruht.
Sie können die Subdomain jederzeit selbst löschen, gesperrt oder nicht — das entfernt den Namen sofort aus dem DNS und gibt ihn frei.
Um eine Subdomain zu melden, die für Phishing, Schadsoftware oder Spam verwendet wird, nutzen Sie das Missbrauchsformular. Jede Meldung wird erfasst, ein Administrator wird benachrichtigt und die Subdomain kann sofort gesperrt werden.
Wir senden keine E-Mails über Sperren, Bans oder Administratoraktionen. Jede solche Änderung erscheint im Benachrichtigungszentrum— die Glocke im Kopfbereich jeder Seite. Wenn Ihr Konto gesperrt ist, können Sie sich nicht anmelden; die Anmeldeseite sagt Ihnen dann, was passiert ist und wo Sie sich melden können; der Hinweis wartet im Zentrum, sobald die Sperre aufgehoben ist.
Fragen
Wie schnell erscheint eine Änderung?
Sofort auf diesem Server. Der sekundäre Nameserver übernimmt sie beim nächsten Transfer, und Resolver können die alte Antwort zwischenspeichern, bis die 60-sekündige TTL abläuft.
Warum wurde meine E-Mail abgelehnt?
Wegwerf-Postfächer (10minutemail, mailinator, yopmail und ähnliche) werden nicht akzeptiert: Die Adresse verschwindet innerhalb von Minuten, sodass das Konto nie wiederhergestellt werden könnte. Verwenden Sie eine Adresse, die Sie tatsächlich behalten.
Ich habe mein Token verloren
Öffnen Sie die Subdomain in Ihrem Dashboard und geben Sie ein neues aus. Das alte Token funktioniert in diesem Moment nicht mehr, daher aktualisieren Sie danach den Router.
Mein Router lehnt das Passwort ab
Manche Router begrenzen die Länge des Passwortfelds — die FRITZ!Box akzeptiert 32 Zeichen, der Speedport Smart 4 höchstens 50. Von diesem Dienst ausgegebene Tokens haben 30 Zeichen und passen daher. Wenn Sie noch ein älteres, längeres Token von vor dieser Änderung haben, geben Sie im Dashboard ein neues aus.
Meine Adresse liegt hinter NAT
Der Dienst speichert die Adresse, die Sie senden. Hinter Carrier-Grade-NAT ist das die Adresse des Anbieters — die Erreichbarkeit hängt dann von Ihrem Anbieter ab, nicht vom DNS.
Kann ich den Namen auf eine private Adresse zeigen lassen?
Ja. Der Dienst filtert Adressen nicht; eine private Adresse ist für VPN- und LAN-Setups nützlich. Aus dem Internet erreichbar wird sie natürlich nicht sein.
Gibt es eine API für meine eigenen Tools?
DasUpdate-Protokollist die API: ein GET mit Basic-Auth. Jeder Client, der dyndns2 spricht, funktioniert unverändert.
Etwas unklar oder ein Router, der nicht funktionieren will? Die Protokolle in Ihrem Dashboard zeigen jeden Versuch mit seiner Antwort — der schnellste Weg zu sehen, was der Router gesendet hat.
