{demo_update_url}
Generate one secret update URL under {suffix}. Paste it into your router, script it with curl, or point your own subdomain at it with a CNAME.
Choose your hostname
Use a generated KarlDNS hostname immediately, or verify your own domain with a DNS TXT record.
Use our domain
KarlDNS generates the hostname, secret update URL, and optional router compatibility credentials automatically.
Use your own domain
Add one TXT record so KarlDNS can confirm you control the domain before it publishes A/AAAA records there.
Use FRITZ!Box placeholders, curl, cron, Home Assistant, OpenWrt, pfSense, OPNsense, UniFi, MikroTik, or your own automation.
# explicit IPv4
curl -sS 'https://karldns.de/u/<secret>?myip=203.0.113.10'
# source IP fallback
curl -sS 'https://karldns.de/u/<secret>'
{status}
This unlocks after the TXT record is visible in public DNS.
Direct custom-domain publishing
Use this only when KarlDNS should publish A/AAAA records directly inside your domain. If you just want your own subdomain, generate a hostname above and create a CNAME to it.
Hostname generated
Use the Update-URL directly. The separate Benutzername and Kennwort values are optional compatibility fields for routers that require them.
{_one_time_secret_notice()} {_secret_notice()}Admin action
Copy this now. Secret values are only shown in this response.
{safe_value}
FRITZ!Box replaces <ipaddr> and <ip6addr>, then sends a GET request to the Update-URL. Scripts and other routers can do the same with curl. If no IP parameter is sent, KarlDNS uses the request source IP.
{safe_commands}
{_copy_button("Copy curl examples", commands)}
Magic management
Anyone with this link can manage or delete this hostname. Keep it private.
Back homeRouter settings
Use the Update-URL directly if your router only has one URL field. Separate Benutzername and Kennwort values are optional compatibility fields. If you use your own DNS name, point it at this hostname with a CNAME.
{_one_time_secret_notice()} {_secret_notice()}Current address
| IPv4 | {ipv4} |
|---|---|
| IPv6 | {ipv6} |
| Updated | {updated} |
History
Recent IP changes and failed DNS publishes for this hostname.
| Time | Status | IPv4 | IPv6 | Detail |
|---|
Danger zone
This removes the hostname and DNS records. The router update URL will stop working.
DynDNS aktiv
Inspect hostnames, verify domain claims, rotate links, run cleanup, and review router update events.
Service health
Cleanup runs every {html.escape(str(settings.cleanup_interval_seconds))} seconds. It removes unverified domain claims after {html.escape(str(settings.cleanup_challenge_hours))} hours and never-used generated hostnames after {html.escape(str(settings.cleanup_unused_account_hours))} hours.
Hostnames
| Domain | User | IPv4 | IPv6 | Updated | Links |
|---|
Domain claims
| Domain | Status | Created | Verified |
|---|
Cleanup
| Time | Domain claims removed | Unused hostnames removed |
|---|
Updates
| Time | Domain | Status | IPv4 | IPv6 | Detail |
|---|
Legal and privacy
This page explains the basic data handled by this self-hosted service. Configure your own imprint, controller details, and jurisdiction-specific terms before offering it publicly.
KarlDNS stores generated hostnames, public DNS target names, update slugs, hashed management tokens, hashed router passwords, DNS TXT verification challenges, IP update history, timestamps, and operational events needed to run Dynamic DNS.
Private management links, update URLs, router passwords, and one-box update URLs are bearer secrets. Anyone with them can update or manage the related hostname. Passwords and management lookup values are not stored in recoverable plaintext.
The service keeps recent update events for troubleshooting and runs cleanup jobs for abandoned setup flows and unused hostnames. Server and reverse-proxy logs may also contain IP addresses and request metadata depending on your deployment.
For the public KarlDNS instance, contact Karl through karl.fail or karlcom.de.