In the “early” days of the internet, you could find free Dynamic DNS (DDNS) accounts everywhere. The providers of those free services, such as DynDns, hoped that by giving you a freebie, you’d eventually become a paying customer for one of their pay services.
Unsurprisingly, that’s not what happened.
When Dyn decided to stop offering free accounts and cancelled everyone’s free DDNS service, users predictably went in search of other free options. D-Link router owners got a reprieve, as D-Link had previously partnered with Dyn to offer limited free DDNS services for D-Link users. However, anyone could claim they were a D-Link user and use the free service… even if they were using something other than a D-Link router.
Eventually, D-Link caught on, and kicked off everyone that couldn’t verify they actually owned a D-Link router with a valid serial number and MAC address. This led to a mad scramble for a new, reliable, and totally free DDNS service.
Note: I’ve got an old D-Link DIR-615 wireless router that I no longer use, but because I have a valid serial number and MAC address from that router, D-Link still allowed me to keep a free DDNS account through their partnership with Dyn. However, I’m not a Dyn fan, so I chose to go with different option.
Enter FreeDNS.Afraid.org. As of the writing of this post, they still offer 100% free dynamic DNS services. Like those who came before them, their budget relies completely on users who choose to pay for their premium DNS services.
If your router has a built-in pre-configured DDNS service, it’s possible that it won’t work with Afraid.org. For example, my Google Fiber “network box” (their fancy word for router & WiFi access point) limits your choices to a small list of DDNS providers… none of which are free.
But since I have a Linksys router running DD-WRT set up as a standalone access point at my Utah house with Google Fiber, and also use Linksys routers with DD-WRT in router configuration at both my main house in Seattle and our cabin in Eastern Washington, I was able to configure them all to use Afraid.org’s FreeDNS service so that I can remotely access each location.
Step 1: Create an account on FreeDNS.Afraid.org
Visit the signup page at FreeDNS.Afraid.org, then verify your email address once you receive the activation email.
Step 2: Create an A Record for your IP Address
Click the Dynamic DNS link in the “For Members:” menu. For Type, select A.
Next, select a Subdomain that you want to use. This needs to be one that hasn’t already been taken on the main domain you’ll choose next, so don’t be surprised if you have to try a few to find one that’s unique. For this example, let’s say I just used “steve”
Now drop down the Domain list and pick one of the domains that’s available. For this how-to, I’ll use “example.com” (actual domains will probably have weird sounding names, like chickenkiller.com, ignorelist.com, or strangled.net).
Finally, enter the current WAN IP for your internet connection as the Destination. It should auto-populate your current IP. But you’re setting this up for a remote system with a different IP, don’t worry about it for now. We’ll be setting up your DD-WRT client to auto-update with the correct IP.
Leave the TTL and Wildcard settings at the default, and press Save!
Here’s what it should look like when you’re done:
Step 3: Find your Record’s Unique Update Token
Your Dynamic DNS page should now show a list of all your DDNS domains and subdomains (called your Update Candidate List) that looks something like this:
Let’s briefly go over the 5 available links and what they do.
- The Direct URL is a link that will manually (and instantly) set the DNS for that subdomain to the WAN IP of your current connection. So if you’re not currently connecting from the IP address that you want associated with this subdomain, don’t click this link.
- The Wget Script link is a batch file for updating your DDNS with the Linux wget utility.
- The Curl Script link does the same thing as the Wget Script link, but with the Linux curl utility.
- The Edit Record link lets you manually enter the IP address, or modify the domain or subdomain for this record.
- The quick cron example link shows an example cron entry for updating via the cron utility on Linux systems.
Click on the quick cron example link and look at the bottom of the file. You should see something that looks like this:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * sleep 32 ; wget -O - http://freedns.afraid.org/dynamic/update.php?ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890= >> /tmp/freedns_steve_example_com.log 2>&1 &
Find the long string of letters, numbers, and characters following the update.php? part of the included URL. This is your unique update token for this record. Select the entire string (including any characters at the end, such as the equal sign in the above example) and copy it to your system’s clip board (CTRL+C on a Windows box). In the above example, you would have selected and copied:
Step 4: Configure DD-WRT to use FreeDNS.Afraid.org
Log in to the admin interface of your DD-WRT router. Click the Setup tab, then the DDNS sub-tab. Select freedns.afraid.org as the DDNS Service. Next, enter the username and password you chose when setting up your FreeDNS.Afraid.org account. Note that your username is not your email address. It’s your freedns.afraid.org UserID, which you can find in the upper-right corner of http://freedns.afraid.org/dynamic/ (when you’re logged in).
In the Hostname field, enter the full subdomain and domain name you want to associate with your connection’s IP address, then a comma, followed by the unique update token for the record. Don’t use any spaces in this field. Our example’s hostname would be:
Select “Yes” for Do not use external ip check.
You can leave the Force Update Interval option at the default of 10, or change it to some other value for the number of days you want to want to wait between forcing the system to push an IP address update to FreeDNS.Afraid.org. I set mine to 5.
Here’s what that tab should look like when you’re done entering your settings:
When you’re done, press Save and then Apply Settings.
Step 5: Verify that your Settings are Working
Once you press Apply Settings, keep an eye on the DDNS Status area at the bottom of the DDNS tab. You should see messages appear that will confirm you’ve set everything up properly, and that your DD-WRT router is successfully updating FreeDNS.Afraid.org with your WAN IP address. It should look something like this:
Note that the WAN IP of your router (in the upper right corner of the image) should match IP address reported in the DDNS Status area.
If you don’t get “success” messages, go back and check all your settings. You may have forgotten to include a character in your update token. Or maybe you mis-typed your password. Or maybe you set the wrong hostname. But if you go back and double-check all your settings (and you’re certain you have a working internet connection), then everything should be fine.
At this point, you should be able to ping the FQDN (fully qualified domain name) that you set up (such as steve.example.com) and see it attempt to ping WAN IP address. The ping will probably time out (which is a good thing), but you’ll confirm that the hostname is being resolved to the proper IP address.
And… that’s it! Congratulations on setting up your DD-WRT router to use the FreeDNS.Afraid.org free DDNS service.
As always, I welcome your questions, comments, and feedback below.