I use zoneedit
to manage some of my DNS domains and subdomains, they're one of the only TLD DNS services who offer a free service with dynamic dns and allow you use your own domain rather than a suffix on their TLD. In order to access
certain services hosted on machines at home I have created a subdomain
of my eddgrant.com domain, called home.eddgrant.com. I then used the
dynamic DNS capabilities of my ADSL modem/router (a Thomson TG585 v7) to update my zoneedit account on a regular basis to ensure that home.eddgrant.com always points to my current home IP address.
Getting this setup wasn't the most straight forward process so I thought I'd document the steps I took and some of the problems I encountered during the process.
The Thomson TG585 v7 provides several preconfigured 'service' templates for use with certain dynamic DNS vendors, I looked at these providers but they were all either paid services or only offered dynamic addressing using a subdomain of their TLD e.g. eddhome.dyndns.org. Fortunately the speedtouch also provides a 'custom' dyndns template which allows for the configuration of a custom provider e.g. zoneedit. Unfortunately the speedtouch makes some rather unhelpful assumptions about the list of parameter names and values it supplies to the dyndns provider and as far as I can tell some of the necessary parameters are totally inaccessible through the web admin GUI. So in order to get everything working it is necessary to use a combination of telnet and web GUI access, here's how you do it:
- telnet on to your modem/ router e.g. telnet bebox.config/ telnet 192.168.1.254 etc, log in as the Administrator account.
- Type dyndns service, this will locate you in to the dynamic dns services menu.
- Type list, this will list all of the available services, one of which will be 'custom', this is the one we're going to edit to work with ZoneEdit).
- Type modify, the device will prompt you for the name of the service you wish to modify, type custom and hit return.
- The device will prompt you to enter details for each configuration attribute of the service, enter the following (ensuring that you replace home.eddgrant.com with whatever domain you're going to be updating).
name = custom
[server] = dynamic.zoneedit.com
[port] = www-http
[request] = /auth/dynamic.html?host=home.eddgrant.com&ignoreTheFollowing=
[updateinterval] = 8600
[retryinterval] = 30
[max_retry] = 3
:dyndns service modify name=custom
Notes on the above:
- The &ignoreTheFollowing might look odd but it is required to render the default URL parameters which the device sends ineffective by ensuring they are treated as the content of the ignoreTheFollowing URl parameter.
- The above configuration essentially instructs the device to make an http call, every 8600 seconds, to http://dynamic.zoneedit.com/auth/dynamic.html?host=home.mredd.co.uk&ignoreTheFollowing=<device's original URL parameters>.
- You should now be back at the menu, type list again to list the services, this time you should see your changes reflected in the 'custom' service.
- That's all we need to do in the telnet interface so exit the session.
- Now you've configured the custom service you need to configure it as the active service and add authentication details, this is easiest done in the web gui.
- Open a browser and log in to your modem/ router (again as the Administrator) e.g. http://bebox.config
- Click Toolbox from the menu on the left.
- Click Dynamic DNS Service
- Click Configure
- Enter your ZoneEdit username and password in the appropriate fields
- Select the 'custom' service
- Set the Host as: dynamic.zoneedit.com (not sure if this is entirely necessary since we've set it up in the telnet session but let's do it anyway)
- Click apply (it should look something like the image below).
You're done! Your device should pretty much immediately call the ZoneEdit update page updating your IP address - you can confirm that this by logging in to your ZoneEdit control panel and verifying your WAN IP address against something like whatismyip.com.
What to do if it doesn't work?
Essentially you're going to need to debug the requests being made by the device. I found the easiest method was to reconfigure the server property of the custom service (in the telnet steps above) to point to one of my webservers and to change the updateinterval period to 30 seconds and then tail the web server's access logs. This process gives you visibility of http requests that the device is making which makes the whole process much easier to understand and debug. Here's an example from my apache logs:
184.108.40.206 - - [06/Mar/2011:10:40:53 -0500] "GET auth/dynamic.html?host=home.eddgrant.com&ignoreTheFollowing=?system=custom&hostname=home.eddgrant.com&myip=220.127.116.11
0&wildcard=OFF&offline=NO HTTP/1.0" 400 303 "-" "SpeedTouch-18.104.22.168"
Well that's pretty much it, hope that helps someone. Just want to add my thanks to the contributors of this post who made the task much easier .