My Router Doesn’t Support Dynamic DNS, No Problem!
by Mark Sanborn on October 23, 2008
Well I just recently hooked up a DSL connection via a DSL modem that was also a router. For regular home users this DSL modem/router is probably good enough but for more complex setups it is useless. In this particular setup we had a custom built firewall. This firewall had a built in dynamic DNS service for ISP’s that rotate IP addresses. The problem however, is that the firewall was behind the DSL modem’s NAT. So it was reporting a private 192.168 number to Dyndns.
We couldn’t turn off NAT on the DSL modem unless we purchased a block of static IPs. The DSL modem, being home orientated, didn’t allow for dynamic DNS.
Fortunately dyndns offers a service to detect your public IP address. They also have an API to change your IP for dynamic DNS. Knowing this I quickly did a search on my favorite perl code repository, CPAN. Sure enough someone made a module that sends updated IP info to dyndns.
Updating DynDNS with Perl
The first thing you will want to do is download the module, Net::DNS::DynDNS. On a Linux box it is super easy.
cpan
install Net::DNS::DynDNS
On windows you will need to compile it with dmake and mingw since there are no ppm for Active Perl.
Then create a file called, dyndns.pl, replacing username, password, and yourdomain.selfip with your own values.
#!/usr/bin/perl
use Net::DNS::DynDNS;
print Net::DNS::DynDNS->new('username', 'password')->update('yourdomain.selfip.com');
You can then update your IP by simply doing
perl dyndns.pl
To setup automatic updating we can use our favorite scheduler, cron.
crontab -e
Then add the following line, pointing to where you saved dyndns.pl
1 * * * * /usr/bin/perl /home/youruser/crons/dyndns.pl
This will update every hour which is plenty for my needs. Feel free to change it to fit yours.
5 comments
Ahh yes love dyndns
by Jade Robbins on October 24, 2008 at 11:21 am #
So I’m assuming that this script checks your ip before it tries to do the update. DynDns will disable your hostname if you try to update more than like 1 time per ~20 days or something.
I found this out when I did this and the stupid client I used just tries to update regardless if your ip is already correct or not.
by Tyghe on November 7, 2008 at 3:04 pm #
Tyghe,
Good point.
I actually got banned after using this script after a few hours. I rewrote it so that it only updates if the IP actually changes.
If you want it I can upload it up here.
by Mark Sanborn on November 7, 2008 at 3:20 pm #
can’t you just use the one provided by dyndns? you are guaranteed not to be banned as they say.
by sz on November 10, 2008 at 3:57 pm #
sz,
Good point, for Windows machines please use their updater. They also have recommended third-party Linux clients, but I didn’t see any that I liked.
by Mark Sanborn on November 10, 2008 at 4:58 pm #