Background

I recently switched to using ZoneEdit's dynamic DNS service. However I could only find 2 clients that worked with Zoneedit.com. One was being sold for about $20 (called DirectUpdate), and the other is ZoneEdit's own open source program (called zeDyn). I wasn't really interested in the $20 one, and after trying the ZoneEdit program, I found it was a bit flaky (it would regularly not be able to find it's IP, etc).

The ZoneEdit program is to be open source, and the source will soon be provided. The instructions on how to make the request are laid out on ZoneEdit's page about Dynamic DNS.  Using the information from this source, I was able to create my own (mostly) open source program. The application runs as a service, so that it will always be running whenever your computer is.

Features

  • NEW! Can use SMTPS (Secure SMTP) (if needed).
  • Can use SMTP AUTH (if needed).
  • Allows secure Updates (using HTTPS) to Zoneedit.
  • Automatically checks weekly for updates, and sends an alert to e-mail and Event log.
  • Runs as a service.
  • Checks for an IP change every 15 minutes.
  • Sends updates only when needed.
  • Now checks the existing DNS record on startup and only updates if necessary.
  • Able to handle multiple domains.
  • Configured from an INI file.
  • Sends e-mail to you when an update occurs.

Configuration & Operation

The system is configured from an simple ini file.

Screen shot of sample ini file.  Click for a larger view.

The sections are fairly self explanatory.

In the Settings section:

  • Username - This is your zoneedit.com username.  This is a required field.
  • Password - This is your zoneedit.com password.  It needs your username & password in order to login to Zoneedit.com and update your records.  This is a required field.
  • Hosts - This is the comma-separated list of domains that you want to update with the new IP Address.  This is a required field.
  • SecureUpdate - If this is set to 1, it will use HTTPS to send the updates. (see FAQ # 5 below)
  • IgnoreCert - If this is set to 1, it will ignore an invalid SSL certificate. (see FAQ #5 below)
  • CheckForUpdate - When this is set to 1, on a weekly basis it will check this server to see if a newer version is available.  If a newer version is available, it will send an e-mail to you (using the address configured below), and log an event to the Application event log
  • IPProvider - Decides what IP Provider to use. Starting with version 1.4, it will default to use www.whatismyip.com (equal to 1). Setting this to '2' will force it to use the old provider (on Zoneedit.com). If you have problems with the error message 'excessive usage', setting this to 1 should solve it. Starting January 14, 2013, WhatisMyIP.com has decided you need to pay $50 / year to use their service. Option 1 or 3 (checkip.dyndns.com) should work.
  • DisableStartupCheck - When this is set to 1, the app will not update the DNS record on startup if it is not necessary.

In the SMTP section:

  • MailTO - This is the destination address(s) that you want to send an e-mail to when an update occurs.  There can be multiple addresses here if they are separated by a semi-colon (;).  If this field is blank, then no e-mails will be sent.
  • MailFrom - This is the address that the e-mail will be sent from.  If this field is blank, then no e-mails will be sent.
  • SMTPServer - This is the name or IP Address of your outgoing SMTP server.  Contact your ISP if you do not know what this is.  If this field is blank, then no e-mails will be sent.
  • SMTPAuth - Will use SMTP Authentication. This will depend on your SMTP server. '1' uses SMTP Auth, '0' disables it. This is an optional setting.
  • SMTPUsername - The SMTP Username to send if you are using SMTP Authentication
  • SMTPPassword - The SMTP Password to send if you are using SMTP Authentication
  • SMTPPort - The SMTP port to connect to (Defaults to 25). Set to 465 for GMail secure SMTP.
  • SMTPSSL - Set to 1 for SMTPS (e.g.: Gmail)

You will need to restart the service to make any changes take effect.

When the service 1st starts, it will update the DNS Record.  It will then check every 15 minutes to see if your public IP has changed.  If it has changed, then it will update the DNS record at ZoneEdit.com with the new information.  It will only attempt to refresh the record if a change has been made.  Any errors or information will be logged in the Windows Event Log.  A Sample event log is shown here.

Event Log Sample of ZoneEdit Dynamic DNS Update on Initial Startup

Prerequisites

You will need to have Microsoft .NET 4 installed.  You can download it from the Microsoft Website.

You will need to be logged in as a local Administrator to install the program.

Download & Installation

You can download the installer for the program.  Once it is installed, you will have to update the configuration file with your appropriate information, and start the service.

Warning - If you obtained a copy of the software before January 14, 2013, you'll need to re-download it.

Version 1.7 (4.0) (January 14, 2012) - ZoneEditDynDNS_3.zip (14KB) - Compiled for .Net 4. Works on Windows 2008, Windows 2008R2, Windows 7 32/64 bit.

Unzip the files into a folder of your choice. To install it, open up a command prompt (using the Run as Administrator right click option), navigate to the folder you've created, and run the install.bat file.

You can not install this without administrative privledges. You can not install this by double-click on the batch file.

Cost

Free.  Gratis.  You pay nothing.  If you find a bug, please let me know the details, and I will fix it.  If there is a feature you would like to have added, again, let me know, and I will do my best to write it in.  If you are still using Internet Explorer, scroll on down to the bottom, download and install Firefox (and actually use it).  You'll like it better than IE.  It is more secure as well.  You can also use Paypal to make a donation below.

FAQ

1. What is the name of the service?

   The name of the installed service is "ZoneEdit Dynamic DNS Update"

2. I am receiving an error along the lines of 'excessive usage' or 'excessive updates'.  What does this mean?

   If you try to update your DNS record too often (i.e. more than a couple times per 15 minutes) ZoneEdit complains with this type of error.  This can occur when you are 1st setting the program up, as each time that you start the service it pushes an update to ZoneEdit.  NOTE: This has been partially resolved with the release of version 1.2

3. Can I update multiple domains at the same time (e.g. example.org, www.example.org, example.com, www.example.com)?

   Yes.  All the domain names must be in the same ZoneEdit account.  If all the domains are listed separated by commas on the HOSTS line in the ini file, it will update all the domains at once (don't put any spaces between the domains).  To update the 4 domains in this example, the HOSTS line in the ini file should read as:


Parital screen shot of sample ini with multiple hosts to update.

4. I've performed the installation successfully, however there was no service created.  How can I fix this?

   For some reason, the installer does not always register the application as a service.  I don't know why.  It can be fixed by performing the following steps:

  1. Click on Start, and select Run...
  2. type cmd and click OK.
  3. Type (or copy and paste) the following command: c:\windows\microsoft.NET\Framework\v1.1.4322\installutil.exe "\program files\ZoneEditDynDns\ZoneEditDynDns.exe" (you may need to adjust the path if you have not installed everything into it's default directory).
  4. The service should now show up as a windows service.

5. What's up with ignoring the SSL certificate (the IgnoreCert setting in the INI file)?

   When an update is sent, it is sent to the dynamic.zoneedit.com domain.  If you are using regular HTTP, everything works fine.  If you are using HTTPS, Zoneedit is sending a certificate for a different domain (specifically www.dnsvr.com).  The update is done using HTTPS, but it uses the invalid certificate that ZoneEdit sends.  In conversations with Zoneedit technical support, this is apparently by design, and is not going to be changed.  This in many ways removes a lot of the security that SSL would normally provide.

6. I am getting a 'Cannot access CDO.message error. How can I fix this?

   This error seems to be caused by your Antivirus preventing the application from sending mail.  You will have to set it so that ZoneeditDyndns.exe can send mail.

7. I'm receiving an error along the lines of <ERROR CODE="704" TEXT="Invalid IP Address." ZONE="" HOST="www.example.org">

   I was using the URL http://automation.whatismyip.com/n09230945.asp to get the IP. Despite this URL being designed specifically for automation, www.whatismyip.com has decided to disallow its use. If you have a version 1.2 or newer, you can work around this by performing the following steps:

  1. Stop the ZoneEdit Dynamic DNS Update service.
  2. Edit the zoneedit.ini file using notepad or similar.
  3. Search for a line in the [Settings] section that says IPProvider=1. Change it to say IPProvider=2
  4. Save the ini file.
  5. Restart the ZoneEdit Dynamic DNS Update service.

8. It is updating with the wrong IP address. What is wrong?

   There was a bug. The current version has fixed it. It was truncating the last 2 digits of the IP address.

Help!

If you are having a problem, you can contact me via e-mail at

Legal

It should run fine.  It shouldn't cause anything bad to happen. Neither ZoneEdit.com or myself take any responsibility if something does go wrong.

Todo

  • Send e-mail when IP Address is updated
  • Properly interpret error code meanings ( http://zoneedit.com/doc/dynamic/ReturnCodes.txt)
  • Check to see if an update is really needed on startup, and skip the update if the ZoneEdit DNS record matches the current IP.Now in Version 1.2
  • Check for updated versions of the program (and send an e-mail alert when it is true).  This probably should be an optional setting.Now in version 1.3
  • Enable the use of HTTPS for secure updates to Zoneedit.Now in version 1.3