I recently setup dynamic DNS to allow me to SSH to my home network using a well known FQDN (Fully Qualified Domain Name). After reviewing the available dynamic DNS providers, I decided on dyndns.org since they offer several domains and an easy to use web interface. Once I picked a domain on the dyndns.org website, I decided to configure ez-ipupdate to periodically update the records on dyndns.org.
To setup ez-ipupdate, I grabbed the source from their main distribution website, and ran “configure” and “make”:
$ wget http://ez-ipupdate.com/dist/ez-ipupdate-3.0.11b7.tar.gz
$ tar xfvz ez-ipupdate-3.0.11b7.tar.gz && cd ez-ipupdate-3.0.11b
$ ./configure && make && make install
Once the software was compiled, I decided to create an IP update user, and run the periodic updates from this account. To allow for a future chroot(8) friendly environment, I setup directories to store the logfiles, binaries, and configuration files:
$ cd /home/ipupdate
$ mkdir -p apps/etc apps/log apps/bin apps/var
After the directories where created, I copied the “ez-ipupdate’ utility to /home/ipupdate/apps/bin, and verified it worked by running ez-ipupdate with the “–help” option:
$ ez-ipupdate --help usage: ez-ipupdate [options]
Next I created an ez-update.conf configuration file in /home/ipupdate/apps/etc:
$ cat ez-ipupdate.conf
service-type=dyndns user=me:password interface=hme1 host=yappy.dyndns.org
Once the configuration file was created, I setup the following cron job to run every 30-minutes, and notify dyndns.org if the IP address assigned to hme1 had changed:
0,30 * * * * echo >> /home/ipupdate/apps/log/ezipupdate.log && \
/bin/date >> /home/ipupdate/apps/log/ezipupdate.log && \
/home/ipupdate/apps/bin/ez-ipupdate \
-c /home/ipupdate/apps/etc/ez-ipupdate.conf \
-f -F /home/ipupdate/apps/var/ezrun \
--cache-file /home/ipupdate/apps/var/ipcache -q \
>> /home/ipupdate/apps/log/ezipupdate.log 2>&1
There are a plethora of options available to control the IP update process. These are documented in the output of “ez-ipupdate –help,” the sample configuration files, and the C source code.