Introduction

This page explains how to configure protocols for ddclient, which is what ddclient will update when your IP address changes. This is one of the three pieces of ddclient configuration alongside general config and routers. Start on the homepage for a breakdown of how these interact.

This is an incomplete list of the services supported by ddclient. If your favourite dynamic dns provider isn’t here, check the result of ddclient --help with the most recent version of ddclient. If it’s not there, check the code at https://github.com/ddclient/ddclient and if it’s really not supported by ddclient you can try to modify ddclient yourself.

Overview

Using multiple protocols

You can specify multiple protocols in a single configuration file. For example:

# Router
usev4=webv4,webv4=ipify-ipv4

# Protocol 1
protocol=dyndns2
login=myUsername
password=myPassword
myhost.dyndns.org

# Protocol 2
protocol=dyndns2
login=anotherUsername
password=aDifferentPassword
myotherhost.dyndns.org

# Protocol 3
protocol=porkbun
apikey=pk1_abcdef
secretapikey=sk1_abcdef
another.example.com

changeip

The changeip protocol is used by DNS services offered by changeip.com.

Applicable configuration variables:

configuration information
protocol=changeip  
server=fqdn.of.service defaults to nic.changeip.com
login=service-login login name and password registered with the service
password=service-password  
fully.qualified.host the host registered with the service.

Example ddclient.conf file entries:

## single host update
protocol=changeip,                                               \
login=my-my-changeip.com-login,                                  \
password=my-changeip.com-password                                \
myhost.changeip.org

ChangeIP is supported since [r150] based on a patch submitted by Michele Giorato in [e85661ad]

dnspark

The dnspark protocol is used by DNS service offered by www.dnspark.com. According to [bugs:#54] you have to use ssl and set the server to www.dnspark.org to get it working but that bug isn’t confirmed yet. A possible fix for it can be found on [bugs:#36].

Applicable configuration variables:

configuration information
protocol=dnspark  
server=fqdn.of.service defaults to www.dnspark.com
backupmx=no indicates that DNSPark should be the secondary MX for this domain or host.
mx=any.host.domain a host MX’ing for this host or domain.
mxpri=priority MX priority.
login=service-login login name and password registered with the service
password=service-password  
fully.qualified.host the host registered with the service.

Example ddclient.conf file entries:

## single host update
protocol=dnspark,                                         \
login=my-dnspark.com-login,                               \
password=my-dnspark.com-password                          \
myhost.dnspark.com

## multiple host update with wildcard'ing mx, and backupmx
protocol=dnspark,                                         \
login=my-dnspark.com-login,                               \
password=my-dnspark.com-password,                         \
mx=a.host.willing.to.mx.for.me,                           \
mxpri=10,                                                 \
my-toplevel-domain.com,my-other-domain.com

## multiple host update to the custom DNS service
protocol=dnspark,                                         \
login=my-dnspark.com-login,                               \
password=my-dnspark.com-password                          \
my-toplevel-domain.com,my-other-domain.com

dslreports

The dslreports1 protocol is used by a free DSL monitoring service offered by www.dslreports.com.

Applicable configuration variables:

configuration information
protocol=dslreports1  
server=fqdn.of.service defaults to www.dslreports.com
login=service-login login name and password registered with the service
password=service-password  
unique-number the host registered with the service.

Example ddclient.conf file entries:

## single host update
protocol=dslreports1,                                     \
server=www.dslreports.com,                                \
login=my-dslreports-login,                                \
password=my-dslreports-password                           \
123456

Note: DSL Reports uses a unique number as the host name. This number can be found on the Monitor Control web page.

duckdns

The duckdns protocol is used by the free dynamic DNS service offered by www.duckdns.org. Check http://www.duckdns.org/install.jsp?tab=linux-cron for API

Applicable configuration variables:

configuration information
protocol=duckdns  
server=www.fqdn.of.service defaults to www.duckdns.org
password=service-password password (token) registered with the service
non-fully.qualified.host the host registered with the service.

Example ddclient.conf file entries:

## single host update
protocol=duckdns,                \
password=z0mgs3cjur3p4ss         \
myhost

DuckDNS is supported since [r179] based on a patch provided by by gkranis on github.

dyndns1

The dyndns1 protocol is a deprecated protocol used by the free dynamic DNS service that used to be offered by www.dyndns.com. dyndns2 should be used to update the www.dyndns.com service. However, other services are also using this protocol so support is still provided by ddclient.

Applicable configuration variables:

configuration information
protocol=dyndns1  
server=fqdn.of.service defaults to members.dyndns.org
backupmx=no indicates that this host is the primary MX for the domain. Set to yes to mark it as a backup mx.
mx=any.host.domain a host MX’ing for this host definition.
wildcard=yes add a DNS wildcard CNAME record that points to {host}. Set to no if you don’t need a wildcard.
login=service-login login name and password registered with the service
password=service-password  
fully.qualified.host the host registered with the service.

Example ddclient.conf file entries:

## single host update
protocol=dyndns1,                                         \
login=my-dyndns.org-login,                                \
password=my-dyndns.org-password                           \
myhost.dyndns.org

## multiple host update with wildcard'ing mx, and backupmx
protocol=dyndns1,                                         \
login=my-dyndns.org-login,                                \
password=my-dyndns.org-password,                          \
mx=a.host.willing.to.mx.for.me,backupmx=yes,wildcard=yes  \
myhost.dyndns.org,my2ndhost.dyndns.org

Note: you only need one of the examples

dyndns2

The dyndns2 protocol is a newer low-bandwidth protocol used by a free dynamic DNS service offered by www.dyndns.com. It supports features of the older dyndns1 protocol in addition to others.

Applicable configuration variables:

configuration information
protocol=dyndns2  
server=fqdn.of.service defaults to members.dyndns.org
backupmx=no indicates that this host is the primary MX for the domain.
static=no indicates that this host has a static IP address.
custom=no indicates that this host is a ‘custom’ top-level domain name.
mx=any.host.domain a host MX’ing for this host definition.
wildcard=no add a DNS wildcard CNAME record that points to {host}
login=service-login login name and password registered with the service
password=service-password  
fully.qualified.host the host registered with the service.

Example ddclient.conf file entries:

## single host update
protocol=dyndns2,                                         \
login=my-dyndns.org-login,                                \
password=my-dyndns.org-password                           \
myhost.dyndns.org

## multiple host update with wildcard'ing mx, and backupmx
protocol=dyndns2,                                         \
login=my-dyndns.org-login,                                \
password=my-dyndns.org-password,                          \
mx=a.host.willing.to.mx.for.me,backupmx=yes,wildcard=yes  \
myhost.dyndns.org,my2ndhost.dyndns.org

## multiple host update to the custom DNS service
protocol=dyndns2,                                         \
login=my-dyndns.org-login,                                \
password=my-dyndns.org-password                           \
my-toplevel-domain.com,my-other-domain.com

’'’Note:’’’ you only need one of the examples

easydns

The easydns protocol is used by the for fee DNS service offered by www.easydns.com.

Applicable configuration variables are:

configuration information  
protocol=easydns    
server=fqdn.of.service defaults to members.easydns.com  
backupmx=no yes indicates that EasyDNS should be the secondary MX for this domain or host.
mx=any.host.domain a host MX’ing for this host or domain.  
wildcard=no add a DNS wildcard CNAME record that points to {host}  
login=service-login login name and password registered with the service  
password=service-password    
fully.qualified.host the host registered with the service.  

Example ddclient.conf file entries:

## single host update
protocol=easydns,                                         \
login=my-easydns.com-login,                               \
password=my-easydns.com-password                          \
myhost.easydns.com

## multiple host update with wildcard'ing mx, and backupmx
protocol=easydns,                                         \
login=my-easydns.com-login,                               \
password=my-easydns.com-password,                         \
mx=a.host.willing.to.mx.for.me,                           \
backupmx=yes,                                             \
wildcard=yes                                              \
my-toplevel-domain.com,my-other-domain.com

## multiple host update to the custom DNS service
protocol=easydns,                                         \
login=my-easydns.com-login,                               \
password=my-easydns.com-password                          \
my-toplevel-domain.com,my-other-domain.com

namecheap

The namecheap protocol is used by DNS service offered by www.namecheap.com.

Applicable configuration variables:

configuration information
protocol=namecheap  
server=fqdn.of.service defaults to dynamicdns.park-your-domain.com
login=service-login login name and password registered with the service
password=service-password  
fully.qualified.host the host registered with the service.

Example ddclient.conf file entries:

## single host update
protocol=namecheap,                                         \
login=my-namecheap.com-login,                               \
password=my-namecheap.com-password                          \
myhost.namecheap.com

zoneedit1

The zoneedit1 protocol is used by a DNS service offered by www.zoneedit.com.

Applicable configuration variables:

configuration information
protocol=zoneedit1  
server=fqdn.of.service defaults to www.zoneedit.com
login=service-login login name and password registered with the service
password=service-password  
your.domain.name the host registered with the service.

Example ddclient.conf file entries:

## single host update
protocol=zoneedit1,                                     \
server=www.zoneedit.com,                                \
login=my-zoneedit-login,                                \
password=my-zoneedit-password                           \
my.domain.name

## multiple host update                                 \
protocol=zoneedit1,                                     \
server=www.zoneedit.com,                                \
login=my-zoneedit-login,                                \
password=my-zoneedit-password                           \
my.domain.name,my2nd.domain.com

googledomains

The googledomains protocol is used by DNS service offered by www.google.com/domains.

Applicable configuration variables:

configuration information
protocol=googledomains  
login=service-login the user name provided by the admin interface
password=service-password the password provided by the admin interface
fully.qualified.host the host registered with the service.

Example ddclient.conf file entries:

## single host update
protocol=googledomains,                                      \
login=my-generated-user-name,                                \
password=my-genereated-password                              \
myhost.com

## multiple host update to the custom DNS service
protocol=googledomains,                                      \
login=my-generated-user-name,                                \
password=my-genereated-password                              \
my-toplevel-domain.com,my-other-domain.com

Googledomains are supported since [r171] based on a pull request from nelsonjr on github.

nsupdate

The nsupdate protocol (added in ddclient version 3.8.3) is a wrapper around the nsupdate command-line tool. It uses the RFC 2136 DNS Update protocol to push changes to a zone using the standard DNS communication protocols directly to a DNS server, instead of to a web service operated by a DNS vendor (like most other ddclient protocols do).

To use ‘nsupdate’, your DNS server or servers must be configured to accept RFC 2136 DNS Update requests (consult the documentation for your DNS server, or its hosting provider, on how to do this). While it is allowed in RFC 2136 to configure DNS updates without authentication, it is strongly discouraged, and ddclient does not support it. You must generate a TSIG key (with, for example, a tool like dnssec-keygen), configure your DNS server to accept only those DNS updates signed by that key, and then create a key file for ddclient+nsupdate to use.

There are two supported key file formats. The first is a pair of symmetric key files output by dnssec-keygen (or similar tools) with the same name but different extensions (one ends in .key and the other in .private). When specifying the key file in your ddclient configuration options, you use the path to the file with the .key extension, and nsupdate uses it and replaces the extension with .private to obtain the second key file. However, newer versions of dnssec-keygen generate newer key file formats that nsupdate might not understand. A more reliable option is to create a key file containing a named-compatible key statement and specify the full path to that (with extension) in your ddclient configuration. See the examples below for more information.

Applicable configuration variables:

configuration information
protocol=nsupdate  
server=fqdn.of.name.server OR server=”fqdn.of.name.server port-number” Server name defaults to members.dyndns.org, server port defaults to 53. If you need to specify a port number, you must put quotes around the space-separated server address and port number. The server name can also be specified as an IPv4 or IPv6 address instead of a host name.
login=/usr/bin/nsupdate Defaults to /usr/bin/nsupdate. Change to the full path to nsupdate on your system if it differs.
password=/path/to/key The path to the symmetric HMAC key file with the .key extension, or the path to the named-compatible key file.
zone=domain.name The domain name of the DNS zone under which the host to be updated resides.
ttl=600 The time to live that should be used for the host record. Defaults to 600 seconds.
tcp=no|yes nsupdate uses UDP by default, and switches to TCP if the update is too large to fit in a UDP datagram. This setting forces nsupdate to always use TCP. Defaults to no (default automatic operation). (This option was added in ddclient version 3.8.next / 3.next.0).
full.qualified.host The host whose IP address should be updated.

The following is an example named-compatible key file. You can get the algorithm and secret from the HMAC key file with the .private extension. If the algorithm in the file contains an underscore, replace it with a hyphen. If the secret is longer than 56 characters, you must insert a space every 56 characters.

key my.key.name {
algorithm HMAC-MD5;
secret "SAdhkjhkjashdkjhasdkjbasdkbk8768/+sadfnasdasdkjahsdasdhk jhasdasd/+oeurc8234==";
};

Example ddclient.conf file entries:

## Single host update with default port, nsupdate path, TTL, and TCP options
protocol=nsupdate
server=ns1.mydomain.com
password=/secure/folder/key-file.key
zone=mydomain.com
dynamic-domain.mydomain.com

## Multiple hosts with nonstandard port and no defaults
protocol=nsupdate
server="ns1.mydomain.com 54"
login=/custom/sbin/nsupdate
password=/secure/folder/key-file.key
zone=mydomain.com
ttl=1800
tcp=yes
dynamic-domain1.mydomain.com,dynamic-domain2.mydomain.com

porkbun

The porkbun protocol is used by DNS service offered by www.porkbun.com.

Generate API keys at https://porkbun.com/account/api

Applicable configuration variables:

configuration information
protocol=porkbun  
apikey=pk1_abc the public API key
secretapikey=sk1_abc the secret API key
fully.qualified.host the host registered with the service.

Example ddclient.conf:

protocol=porkbun
apikey=pk1_abcdef
secretapikey=sk1_abcdef
myhost.com

Your-favorite-provider here

If you want your favorite provider, please don’t just ask. You can raise a pull request on GitHub against the latest version of ddclient. It will probably be accepted if:

  • it’s a free dynamic DNS provider.
  • if the provider support SSL please add it to the readme.ssl file.
  • if you provide a nice example in the sample-etc_ddclient.conf file.
  • if you don’t forget to edit the README.md
  • and if you provide a link to the API.

As we don’t use all the possible options, we also like it if you could give support if people are having problems with your provider.