Dynamic DNS or DDNS is a method of updating, in real time, a DNS to point to a changing IP address on the Internet. This is used to provide a persistent domain name for a resource lacking a static IP. To use DDNS, you need to both sign up with a DDNS provider and set up an automatic update tool that will notify the provider when your IP address changes.
If the device needing DDNS sits behind a router, you should first check if the router itself can update any DDNS services. Although the selection of services may be limited, there are several advantages to using the router: it will probably be easier to set up, will require little to no maintenance, and will have no downtime (if the router is down you won't have Internet anyway).
|Service||Cost||Available Records||Hostname Limit||Config Notes||Alternative tools|
|Now-DNS||Free||A, AAAA||unlimited||Use protocol
|ChangeIP||Free or paid||A, AAAA, CNAME, MX, codomains||7 free|
|Duck DNS||Free and open source||AUR|
|FreeDNS||Free or paid||CNAME, A, AAAA, MX, NS, TXT, LOC, RP, HINFO, SRV||5 free||example||AUR, AUR|
|No-IP||Free or paid||3 free, 25+ paid||Use protocol
|nsupdate.info||Free and open source||A, AAAA||Use protocol
Starting ddclient after networking is up
If you find that ddclient is unable to update your IP properly, it may be that the ddclient process is starting before networking is up. To fix it, you can edit the unit file to depend on
network-online.target (added lines in bold):
# systemctl edit --full ddclient.service
[Unit] Description=Dynamic DNS Update Client After=network.target After=network-online.target PartOf=network-online.target [Service] Type=forking PIDFile=/var/run/ddclient.pid ExecStart=/usr/bin/ddclient [Install] WantedBy=network-online.target
- A full replacement must be created, because a drop-in override cannot modify the
[Install]section of a unit file. Make sure to disable and reenable the
ddclient.serviceso that the symlink is put into the right place.
- It may be necessary to configure the network manager to activate
network-online.target(for netctl see netctl#Activate network-online.target).
Other DDNS updaters that work with several providers are supported providers) and AUR (supports DynDNS and Namecheap).AUR (
The following DDNS providers are not compatible with ddclient so updating your IP with them may require a special tool or some custom scripting. Remember that if the service allows you to update your IP using the command line, you can automate the process using tools such as cron or systemd/Timers.
FreeDns.io provides free A and AAAA DNS records and CNAME, TXT and MX records with a premium membership. You can update your IP using their HTTP API (with a 60 requests-per-hour limit). They provide several example scripts.
Now-DNS.com is a free service which is easy and uncomplicated to set up.