ddclient is a Perl update client that will update dynamic DNS entries. It is small and full-featured (including HTTPS support) requiring no additional modules. It has been reported to run on most *nix distros. Supported features include: operating as a daemon, manual and automatic updates, static and dynamic updates, optimized updates for multiple addresses, MX, wildcards, abuse avoidance, retrying failed updates, and sending update status to syslog and through email.
ddclient is a Perl based client used to update DNS entries. This client works with all of our services as well as services provided by many of our competitors. ddclient was originally written by Paul Burry and is now maintained by a group of developers via a SourceForge project.
Acknowledgment: Much of the info here is extracted from the ddclient home page.
Download: The most recent version of ddclient should always be available here.
ddclient supports detecting the public IP address either directly from a hardware interface, from a status page provided by a NAT router, or via our CheckIP service. Due to this flexibility, ddclient can be used in almost any possible network configuration.
ddclient is a Perl based script, and as such should be runnable on any system that supports Perl. Officially all “posix” style OSes are supported. This includes all Linux, Unix and BSD variants, including Mac OS X.
Update Client Configurator – Generate your conf file after reading how to run ddclient
Because ddclient supports multiple DDNS services, its configuration files can be fairly daunting. To help alleviate that, we’re providing stripped down ddclient.conf files which are restricted to just those services which we support.
Here is a basic template which provides the various options available.
daemon=600 # check every 600 seconds syslog=yes # log update msgs to syslog mail=root # mail all msgs to root mail-failure=root # mail failed update msgs to root pid=/var/run/ddclient.pid # record PID in file. cache=/tmp/ddclient.cache # Cache file ### Select one of these options to determine your IP address ## via hardware interface (if you don't have a router/firewall) #use=if, if=eth0 ## via our CheckIP server #use=web, web=checkip.dyndns.com/, web-skip='IP Address' ## from the status page for a linksys router/firewall #use=linksys, fw=linksys, fw-login=admin, fw-password=admin ## from a FW status page #fw-login=admin, fw-password=XXXXXX #use=fw, fw=192.168.1.254/status.htm, fw-skip='IP Address' ## Enter your Dyn username and password here #login=your-login # your Dyn username #password=your-password # your Dyn password ## This section requires no changes unless you need to set a default proxy server ## or you need to bypass your proxy server (because it interferes with the updates) protocol=dyndns2 # default protocol server=members.dyndns.org # default server #server=members.dyndns.org:8245 # default server (bypassing proxies) #proxy=fasthttp.sympatico.ca:80 # default proxy ## Default options for Dynamic/Static DNS Hosts #mx= # default MX host (leave undefined by default) #backupmx=NO # MX host is primary MX? (leave undefined by default) wildcard=YES # add wildcard CNAME? ## Dynamic DNS hosts go here #your-dynamic-host.dyndns.org,another-dynamic-host.dyndns.org ## Static DNS hosts go here #static=yes, your-static-host.dyndns.org,another-static-host.dyndns.org ## Dyn Standard DNS hosts go here #custom=yes, your-domain.top-level,your-other-domain.top-level
Here is a minimal ddclient.conf file designed to update a single Dynamic DNS host plus a single Dyn Standard DNS host and using our CheckIP service to get the IP address:
# Basic configuration file for ddclient # # /etc/ddclient.conf daemon=600 cache=/tmp/ddclient.cache pid=/var/run/ddclient.pid use=web, web=checkip.dyndns.com/, web-skip='IP Address' login=your-username password=your-password protocol=dyndns2 server=members.dyndns.org wildcard=YES example.dyndns.org custom=yes, example.com
Here is a third example which shows ddclient configured to get it’s IP address from the status page provided by a router. Note that here we’ve set the daemon sleep period to 60 seconds (the smallest value ddclient accept as a sleep value).
# Basic configuration file for ddclient # # /etc/ddclient.conf daemon=60 cache=/tmp/ddclient.cache pid=/var/run/ddclient.pid use=linksys, fw=linksys, fw-login=admin, fw-password=admin login=your-username password=your-password protocol=dyndns2 server=members.dyndns.org custom=yes, example.com
Since 3.7.0, ddclient support ssl updates. To use ssl, put “ssl=yes” in your configuration and make sure you have IO::Socket::SSL.
# Basic HTTPS configuration file for ddclient # # /etc/ddclient.conf daemon=600 pid=/var/run/ddclient.pid ssl=yes use=web, web=checkip.dyndns.com/, web-skip='IP Address' login=your-username password=your-password protocol=dyndns2 server=members.dyndns.org wildcard=YES example.dyndns.org custom=yes, example.com
On debian, you need libio-socket-ssl-perl to have IO::Socket::SSL
Issues To Be Aware Of
The DynDNS update protocol supports values of “NOCHG” for the MX,
BACKMX, and WILDCARD options, but ddclient does not support these
values. Entering these values in the ddclient.conf file will result in
ddclient not setting those options in the update command at all.
The DynDNS protocol specification has the option as BACKMX, but in the
ddclient.conf file this is specified using the option “BACKUPMX”.
ddclient does send the correct parameter in the update command, you
just need to be sure to use the ddclient version of the option in the
ddclient can be run either daemon mode, or as a single shot update
fired off from crontab or other similar process. When using it in
conjunction with CheckIP or monitoring a hardware interface you should
always run it in daemon mode.