DIY Dynamic DNS

Making my own DDNS Service

Dynamic DNS (DDNS), the way to access your network devices at home from remote locations without static IP. But what if you already own a domain?

Dynamic DNS

In the past I worked with a few DDNS services. They all work by running a script on your home server/network device that determines the external IP address and sends it to the DDNS service.

In my case I already have a domain name registered at TransIP which happens to have an API to automate tasks like managing DNS entries.

So Dynamic DNS is nothing more than updating a specific DNS entry with your current IP address… I wrote a little script which does exactly that. You can check the spectacular results here at github.

Requirements

This script uses the python REST API module for TransIP, which can be found here.

To get this to work, you should have the following:

  • have an account at TransIP
  • have an domain name at TransIP
  • on the API page:
    • turn API on
    • generate a keypair and copy the Private Key that is shown once
    • save it in a file called privatekey.txt
  • convert the private key to an RSA private key (you need openssl tools installed):
     openssl rsa -in privatekey.txt -out rsaprivatekey.txt
    

Usage

For example, when you own the example.com domain and you want to have home.example.com point to your home server. Let’s assume your TransIP username is myusername.

Run the dyndns.py script as follows:

./dyndns.py -u myusername -k rsaprivatekey.txt -n home -d example.com

Wrap-up

I have this script running as a cron job on my server. When your dynamic IP address changes, it takes some time to update the DNS records. So your server should be unreachable for a little while.

Always nice not to depend on DDNS services, but provide my own solution!