Overview
I have a small home network with a number of internal servers. After enabling IPv6, all of the internal machines now have a public, DHCP assigned IP. It would be nice to have these IPs update automatically in the DNS when they change.
Prerequisites
You'll need the following:
- Account on Hurricane Electric Hosted DNS.
- Your public domain configured and delegated to HE DNS.
- DDClient installed on your host (apt-get|yum install ddclient).
Configuration
DDNS
In this section you will create a new AAAA record in your domain hosted with HE DNS service and set it up for DDNS updates.
- Login to on Hurricane Electric Hosted DNS service portal.
- Edit the zone for your domain name (e.g. mydomain.me).
- Create a new AAAA host record for your host (e.g. myddnshost.mydomain.me).
- Make sure to tick the box "Enable entry for dynamic dns".
- Click the "refresh" icon in the DDNS column next to your AAAA record.
- Click "Generate a key", record it somewhere and click "Submit".
DDClient
The current version of ddclient (3.8.1) does not support updating AAAA records. You will need to patch it using a patch written by Eduardo TrĂ¡pani.
Since the patch cannot be applied in its current form to the present release of ddclient, I've included a patched copy here so you can update your ddclient installation as follows:
Next, update your ddclient.conf to include a block to update your DDNS record:
Note, you can add multiple hosts to update in your ddclient.conf.
Since the patch cannot be applied in its current form to the present release of ddclient, I've included a patched copy here so you can update your ddclient installation as follows:
$ cd /tmp
$ wget https://www.dropbox.com/s/fwkjh1jlt4rlu5p/ddclient.ipv6
$ cp ddclient.ipv6 /usr/sbin
$ mv /usr/sbin/ddclient /usr/sbin/ddclient.ipv4
$ ln -s /usr/sbin/ddclient.ipv6 /usr/sbin/ddclient
$ chmod 755 /usr/sbin/ddclient.ipv6
$ service ddclient restart
Next, update your ddclient.conf to include a block to update your DDNS record:
# Configuration file for ddclient
#
# /etc/ddclient.conf
daemon=300 # check every 5 minutes
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.
usev6=if, if=eth0
protocol=dyndns2, \
server=dyn.dns.he.net, \
login=myddnshost.mydomain.me \
password=myddnshost.mydomain.me's API key \
myddnshost.mydomain.me
Note, you can add multiple hosts to update in your ddclient.conf.
Testing
Renew your DHCP lease and somehow force an IP change or just set your host's IP manually in the HE DNS portal to something other than what it is currently.
Then, run a manual ddclient update as follows:
Check to make sure your AAAA record has been updated:
Then, run a manual ddclient update as follows:
$ ddclient -force
SUCCESS: updating myddnshost.mydomain.me: good: IP address set to 2001:470:890a:bcd::1000
Check to make sure your AAAA record has been updated:
$ dig aaaa myddnshost.mydomain.me
...
;; QUESTION SECTION:
;myddnshost.mydomain.me. IN AAAA
;; ANSWER SECTION:
myddnshost.mydomain.me. 300 IN AAAA 2001:470:890a:bcd::1000
References
I've used the following reference material to prepare the solution described in this article. Many thanks to the respective authors.