Dynamic DNS With ez-ipupdate

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.

Configuring ez-ipupdate

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.