Set up DynDNS: FRITZ!Box, OPNsense, pfSense, Synology & Linux
For every device IPv64.net has a guide for, this page lists exactly the fields and values you need to enter: FRITZ!Box, Telekom Speedport, OPNsense, pfSense, UniFi, MikroTik, Synology, QNAP, VyOS, OpenWrt and Linux via curl and cron. What the individual parameters of the update URL mean is explained under Update URL & protocol.
Preparation: domain and key
You need a DynDNS domain and its domain key. You find both at ipv64.net/dyndns under EDIT Domain in the Domain Update URL, see Domain key and update URLs.
In the examples, yourdomain.ipv64.net stands for your domain and YOUR_DOMAIN_KEY for your key. Replace both with your values.
When you are logged in, the DynDNS Helper shows all guides with your real values. Select your domain at the top and it inserts that domain's key. Without a selection it shows your account key, which may change all domains of your account – better use the domain key in devices.
How the update works: your router or a script calls the update URL regularly. IPv64.net takes the sender address of the call, or the IP addresses given in the URL, and writes them into the DNS entry of your domain. The update succeeded on good (address changed) and nochg (address was already current).
Every call counts towards your daily update limit, even if nothing changed. An interval of one hour is enough for most connections. Limits and response codes: Update URL & protocol.
AVM FRITZ!Box DynDNS
The FRITZ!Box registers your IP address with IPv64.net by itself. All it takes is one entry under Internet → Freigaben (Permit Access) → DynDNS:
| Field | Value |
|---|---|
| DynDNS-Anbieter (DynDNS provider) | Benutzerdefiniert (User-defined) |
| Update-URL | https://ipv64.net/nic/update?key=YOUR_DOMAIN_KEY&ip=<ipaddr>&ip6=<ip6addr> |
| Domainname | yourdomain.ipv64.net |
| Benutzername (user name) | none (must not be empty) |
| Kennwort (password) | none (must not be empty) |
The key is part of the update URL, so any text will do for user name and password. The FRITZ!Box replaces <ipaddr> and <ip6addr> with its current IPv4 and IPv6 address.
https://ipv64.net/nic/update?key=YOUR_DOMAIN_KEY&ip=<ipaddr>&ip6=<ip6addr>
FRITZ!Box with IPv6 prefix
The FRITZ!Box can also send the IPv6 prefix of its home network. All device records with an interface ID are then adjusted automatically (see IPv6 prefix and interface ID). Use this update URL:
https://ipv64.net/nic/update?key=YOUR_DOMAIN_KEY&ip=<ipaddr>&ip6=<ip6addr>&ip6lanprefix=<ip6lanprefix>
The FRITZ!Box replaces the placeholders itself. A call then looks roughly like this:
https://ipv64.net/nic/update?key=YOUR_DOMAIN_KEY&ip=192.0.2.10&ip6=2001:db8:1234:5600:3a10:d5ff:fe12:3456&ip6lanprefix=2001:db8:1234:5600::/64
The domain then points to the FRITZ!Box itself; a record nas with target ::211:22ff:fe33:4455 to 2001:db8:1234:5600:211:22ff:fe33:4455. You can see whether it worked in the record table: the stored prefix is shown in bold in front of every interface ID.
Telekom Speedport DynDNS
On the Speedport, the settings only appear after you switch from standard mode to expert mode. The Speedport sends the IPv4 and IPv6 address together in one field; IPv64.net handles both from a single call, so there is nothing else to set.
Menu: Service → Dynamic DNS → Settings → create a new entry
| Field | Value |
|---|---|
| Anbieter (provider) | Anderer Anbieter (other provider) |
| Domänenname (domain name) | yourdomain.ipv64.net |
| Benutzername (user name) | 1234 (not used, but the field must not be empty) |
| Kennwort (password) | YOUR_DOMAIN_KEY |
| Updateserver-Adresse (update server) | ipv64.net |
| Protokoll (protocol) | HTTPS |
| Port | 443 |
OPNsense and pfSense
OPNsense DynDNS
OPNsense has an “old” and a “new” DynDNS updater. This guide uses the new one, the os-ddclient plugin.
Menu: Service → Dynamic DNS → Settings → create a new entry
| Field | Value |
|---|---|
| Service Type | Custom |
| Protocol | DynDns2 |
| Server | ipv64.net |
| User | none (the field must not be empty) |
| Password | YOUR_DOMAIN_KEY |
| Wildcard | leave unchecked |
| Hostname | yourdomain.ipv64.net |
| Check ip method | ipify-ipv4 or ipify-ipv6 |
| Check ip timeout | 10 (default) |
| Force SSL | check |
| Interface Monitor | your WAN interface |
Under General settings, also check Enable and set Interval, e.g. 3600.
Netgate pfSense DynDNS
The DynDNS function is built right into the web interface. Menu: Service → Dynamic DNS
| Field | Value |
|---|---|
| Service Type | Custom |
| Interface Monitor | your WAN interface |
| HTTP API DNS Options | on or off (optional) |
| Update URL | https://ipv64.net/nic/update?key=YOUR_DOMAIN_KEY&domain=yourdomain.ipv64.net |
| Result Match | good|nochg |
Without the Result Match good|nochg, pfSense reports every run as an error. For IPv6, add a second entry with service type Custom (v6) and the same URL.
Ubiquiti UniFi DynDNS
Menu: Settings → Internet → Create New Dynamic DNS
| Field | Value |
|---|---|
| Service | DynDNS |
| Hostname | yourdomain.ipv64.net |
| Username | none (anything, just not empty) |
| Password | YOUR_DOMAIN_KEY |
| Server | ipv64.net/\/nic/update?hostname=%h&key=YOUR_DOMAIN_KEY |
The character sequence /\/ in the Server field is intentional. Copy the value exactly as shown.
MikroTik RouterOS DynDNS
On MikroTik routers, switches and access points, you update the IP address with the built-in Scheduler. Menu in WinBox: System → Scheduler. As the script (On Event), enter:
/tool fetch url="https://ipv64.net/nic/update?key=YOUR_DOMAIN_KEY&domain=yourdomain.ipv64.net" keep-result=no
You set the interval yourself. 01:00:00 (one hour) is recommended.
Synology and QNAP (NAS)
Synology DynDNS
On a Synology NAS, add IPv64.net as a new DDNS service provider and then fill it in like any other provider.
| Field | Value |
|---|---|
| Query URL | https://ipv64.net/nic/update?hostname=__HOSTNAME__&key=__PASSWORD__&ip=__MYIP__ |
| Username | none (anything) |
| Password | YOUR_DOMAIN_KEY |
Leave the placeholders __HOSTNAME__, __PASSWORD__ and __MYIP__ as they are. The Synology fills in host name, password and current IP.
QNAP DynDNS
Menu: Access Services → DDNS
| Field | Value |
|---|---|
| Username | none (anything) |
| Password | YOUR_DOMAIN_KEY |
| Hostname | yourdomain.ipv64.net |
| Check IP | 1 Hour |
| URL | https://ipv64.net/nic/update?domain=%HOST%&key=%PASS%&ip=%IP% |
Linux, Raspberry Pi and Docker
curl and cron
On a Raspberry Pi or any other Linux system, curl is all you need. To update the IP regularly, e.g. every 2 hours, add the call to your crontab. Open it with:
crontab -e
and add this line:
0 */2 * * * curl -sSL "https://ipv64.net/nic/update?key=YOUR_DOMAIN_KEY&domain=yourdomain.ipv64.net"
Without further parameters, IPv64.net enters the address the call comes from. How to force IPv4 or IPv6 or send addresses yourself is described under Update URL & protocol.
Debian package ipv64-ddns-update
For Debian-based distributions there is the community package ipv64-ddns-update. Installation and setup are described in the repository's documentation: gitlab.com/playdiver/ipv64-ddns-update.
Docker DynDNS updater
If you run Docker anyway, you can use the community container docker-ddns-ipv64. Follow the guide on GitHub: github.com/alcapone1933/docker-ddns-ipv64.
Node64
Node64 is the official IPv64.net container. Its DynDNS64 module keeps your domains on the current IPv4 and IPv6 automatically, including prefix and interface ID. It uses the record or domain key, never the account key. Setup is described in the Node64 documentation.
VyOS and OpenWrt
VyOS DynDNS
In this example, eth2 is the outbound interface (WAN). Use your domain key as the password. Type single quotes ', not double quotes ".
conf
set service dns dynamic interface eth2 service ipv64 host-name 'yourdomain.ipv64.net'
set service dns dynamic interface eth2 service ipv64 login 'nobody'
set service dns dynamic interface eth2 service ipv64 password 'YOUR_DOMAIN_KEY'
set service dns dynamic interface eth2 service ipv64 protocol 'dyndns2'
set service dns dynamic interface eth2 service ipv64 server 'ipv64.net'
compare
commit
save
exit
Then check the status with:
show dns dynamic status
OpenWrt DynDNS
OpenWrt also includes a DynDNS service. Enter these values:
| Field | Value |
|---|---|
| Enabled | check |
| Hostname | yourdomain.ipv64.net |
| IP address version | IPv4, IPv6 or both |
| DDNS service provider | custom |
| Custom update URL | https://ipv64.net/nic/update?domain=[DOMAIN]&key=[PASSWORD]&ip=[IP] (copy exactly) |
| Domain | yourdomain.ipv64.net |
| Username | none (do not leave empty) |
| Password | YOUR_DOMAIN_KEY |
Testing and troubleshooting
- Call the URL in your browser
Call the update URL once in your browser and append&output=full. You get a JSON response with the detected IP address and the result.https://ipv64.net/nic/update?key=YOUR_DOMAIN_KEY&domain=yourdomain.ipv64.net&output=full - Check the logs
Under Logs you see every successful update with time, domain and IP. If there are entries, your router gets through – the only question left is whether it sends the right address. - Ask the name server directly
If the router reports success but the domain shows an old address, query the IPv64.net name server directly:
If it shows the new address, your resolver's cache is the cause.dig @ns1.ipv64.net yourdomain.ipv64.net
Common causes:
badauth: wrong key, the domain does not belong to this key, or the domain is deactivated.- HTTP 400: the IP sent is invalid or private (e.g. 192.168.x.x, 10.x.x.x, fd00::). Check the placeholders in your router URL.
- HTTP 429: too many calls. Do not set the interval shorter than necessary.
CNAME is set: the name has a CNAME, so no A or AAAA record can be set.- DS-Lite or CG-NAT: set Ignore IPv4 / A Records on the domain, see Ignore IPv4 or IPv6.
All response codes and limits are explained under Update URL & protocol. Help with individual devices is available in the v64.tech forum.
Found a mistake or missing something? Tell us in the v64.tech forum. · Updated: 2026-10-29