Dynamic DNS updating


I am trying to configure my Cisco 857w Router to update my dns records when my internet IP address changes. However reading the documentation I have noticed that to authenticate to the API to update these settings it requires headers to be sent as part of the request which there is no option for in my router. Is there another way to authenticate this request for the DDNS updates (HTTP Basic Auth or even an additional query string for the GET Request) like the majority of other ddns providers offer as I would rather this option than having to configure my server to manage this.

Thanks in advance.

Hey @wobblybobz,

I’m afraid this is the only way to update your DNS settings, you both need email and key heeaders to get authenticated and then, being able to update your changes…

Look at this article, you may find it interesting, can help you to use DNS-O-MATIC in between to keep the job done by your router and then make the change on us.


1 Like

I personally much prefer using ddclient and use it from my mac (DNS-O-Matic tends to hit our API limits since it is a shared service).

My personal notes on configuring ddclient for OS X below:

xcode-select --install

If you haven’t already installed Brew on your Mac do so now (it’s a package manager used to install/configure lots of useful software on Macs).

/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

Once Brew is installed use it to install ddclient:

brew install ddclient

Install a required Perl Json parser

sudo cpan install JSON::Any

And then copy over a sample configuration file which we’ll edit with our Cloudflare account details.

cp /usr/local/opt/ddclient/share/doc/ddclient/sample-etc_ddclient.conf /usr/local/etc/ddclient/ddclient.conf

nano /usr/local/etc/ddclient/ddclient.conf

edit this line to remove the #

#use=web, web=checkip.dyndns.org/


use=web, web=checkip.dyndns.org/

For each of the lines below in the next quoted section remove the # in front of them (this section is about 2/3 down in the file).

Change domain.tld in zone to your Cloudflare DNS zone (e.g. example.com)

Populate login with the email address you use to log into Cloudflare and copy the API key from your profile settings page.

On the final line change to the host whose address you want to update (e.g. myhost.exampe.com). This host must already exist as an A record in your Cloudflare account.

Cloudflare (www.cloudflare.com)


To test and force an update:

sudo /usr/local/opt/ddclient/sbin/ddclient -force -verbose -noquiet

This will set the ddclient to automatically run on start-up.

sudo cp -fv /usr/local/opt/ddclient/*.plist /Library/LaunchDaemons

sudo chown root /Library/LaunchDaemons/homebrew.mxcl.ddclient.plist

sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.ddclient.plist



I stopped using DNS O Matic, because I got a “too many requests” error for months. Has this been solved? :slight_smile:

Cloudflare response for ‘dynamic’:

err More than 1200 requests per 300 seconds reached. Please wait and consider throttling your request speed (10100)

1 Like

DDNS on Cloudflare only works in linux distributions with systemd service deamon by default script. But it have cross platform compiler that can be adjusted and used.

This one might work. I just made it up. Either you can use the automated script or hack it and compile it for your distribution and run it.

Cheers :slight_smile:

I wrote a quick and dirty script to update my zone, because I have other dyndns hosts and somehow I couldn’t get ddclient to work with both a dyndns account and the Cloudflare account in one config (or perhaps didn’t try hard enough), and I didn’t want to call it with two different configs (and I was a bit bored…)
check it out here: https://github.com/netphantm/scripts

I have written a small script in Go to update Cloudfare DNS

In case anyone finds it useful.