Ddclient
ddclient(8) is a script that automatically updates Dynamic DNS records. It is written in Perl with only a few library dependencies.
Installation
Install the ddclient package. It is widely available, but some package manager may not detect the perl dependencies.
Note: some distributors (i.e. FreeBSD) fail to package the manual page.
For systemd-capable systems, start and enable ddclient.service.
For FreeBSD-style init systems, set the following lines into /etc/rc.conf:
ddclient_enable="YES" ddclient_flags="-daemon 900"
Configuration
The minimum configuration of ddclient(8) specifies...
- A method for obtaining the public IP address
- The Dynamic DNS protocol
The simplest configurations use a public website to discover the public IP address.
ssl=yes use=web, web=checkip.dyndns.com
When testing a configuration, consider running ddclient -daemon=0 -debug -verbose -noquiet.
Routers
As an alternative to using a public website, ddclient(8) can obtain the IP address directly from a router.
See here for a list of supported routers and the router-specific configurations.
Protocols
ddclient(8) supports a wide variety of Dynamic DNS protocols, including the in-house protocols of various domain providers.
For a Cloudflare registration, try:
protocol=cloudflare, \ zone=domain.name, \ ttl=1, \ login=username, \ password=global_api_key \ fully.qualified.domain.name
For a Google Domains registration, try:
protocol=googledomains login=username password='password_in_quotes' fully.qualified.domain.name
See here for a list of supported protocols and the protocol-specific configurations.
/etc/default/ddclient
Some systemd-capable distributions break the daemon configuration into a separate file, at /etc/default/ddclient. The basic setup for this file is:
run_dhclient="false" run_ipup="false" run_daemon="true" daemon_interval="300"