Home Page
Projects > DDNS
95% organized
A Dynamic DNS server and client
Rating: 7 (Works extremely well, fast, small memory foot print and executable size, easy to implement, achieves all original goals, very useful.)
Project Time: Jan 2006-03/01/2006: 60*
Languages: C++
Requirements: DNS write/refresh and PHP access to the server hosting the domain, written for the named DNS server
Downloads: No downloads currently available
Sections: Information, Content, Concepts, Notes, Comments
Updates the IP address of a domain which you own (for example, home.yourdomain.com) to that of the reporting computer. The client connects to the DNS server that you (or someone who can install this) has full access to. With this, someone outside your location can always look up the IP address of your home computer to access it for whatever reason across the Internet. Some example reasons include troubleshooting your computer via remote desktop, a web server, or web cam access. This works across NATs too.

I’ve always run a home server from my homes and whenever the ISPs change their IP addresses, I needed the ability to obtain the new ones immediately. I like running everything in-house where possible and didn’t want to give up my domains to another DDNS solution that cost money, so I decided to write my own client and server, which was a fun project. I also ended up using this for multiple computer repair customers, whose IP addresses I needed to keep track of for remote logging-in for troubleshooting.

The aim for the client was as small a memory and resource footprint as possible. This project started me into writing and optimizing my string class library, working on my 64k project since I was learning about maximum executable compression, and also my networking library.

It works across NATs by periodically “pinging” a trusted server and asking for the received IP address.

Networking, HTTP, executable and memory footprint size minimizing
This was very useful when ISPs often forced dynamic IP address changes when release dates were hit. Fortunately, you can bypass that nowadays by just keeping the machine (usually a router) with the assigned IP address active, which is especially no longer a problem now that home [wireless] routers have become such a norm.

Also, adding the extra stuff is always what takes all the time!
Time to program working DDNS client: 5 hours
And afterwards, time to debug, add bells and whistles, make a working service, design, and shakedown making sure it has all it needs: 55 hours
To add comments, please go to the forum page for this project (guest comments are allowed for the Projects, Posts, and Updates Forums).
Comments are owned by the user who posted them. We accept no responsibility for the contents of these comments.

No comments for this Project