Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a subdomain that I want to update with ddclient. I configured the ddclient to get the IP from dyndns but it's not updating the subdomain on namecheap. They said to use as the login instead of my actual domain.

Has anyone been able to get namecheap DNS updated with ddclient?

I'm running CentOS 6.2 with ddclient 3.7.3.

When I run ddclient I get the following.

SENDING:   Host:
SENDING:   User-Agent: ddclient/3.7.3
SENDING:   Connection: close
RECEIVE:  Content-Type: text/html
RECEIVE:  Server: DynDNS-CheckIP/1.0
RECEIVE:  Connection: close
RECEIVE:  Cache-Control: no-cache
RECEIVE:  Pragma: no-cache
RECEIVE:  Content-Length: 106
RECEIVE:  <html><head><title>Current IP Check</title></head><body>Current IP Address: IPADD</body></html>
Use of uninitialized value in string ne at /usr/sbin/ddclient line 1998.
WARNING:  skipping update of lf4bot from <nothing> to IPADD
WARNING:   last updated <never> but last attempt on Fri Jun 15 22:46:21 2012 failed.
WARNING:   Wait at least 5 minutes between update attempts.

ddclient.conf File

daemon=300                              # check every 300 seconds
syslog=yes                              # log update msgs to syslog
mail=root                               # mail all msgs to root
mail-failure=root                       # mail failed update msgs to root
pid=/var/run/               # record PID in file.
ssl=yes                                 # use ssl-support.  Works with
use=web,, web-skip='IP Address' # found after IP Address
protocol=namecheap \ \ \
password=PASSWORD \
share|improve this question
up vote 5 down vote accepted

I just went through this process, and want to note some issues that tripped me up.

First, this is the canonical reference for configuring ddns for namecheap:

If you don't want to rely on an external web service for finding your IP (like me), things are slightly more complicated. ddclient has a facility for logging into your router and grabbing your IP address from there, which should be the most efficient and reliable method.

The first thing you need is to find the page that contains your IP address. For me, this was Make sure that when you "view source" on that page, you see your IP address. Now log out of your router, otherwise ddclient will just see an error message about how someone is already logged in. Finally edit your /etc/ddclient.conf like so:


To make sure it works, run: ddclient --debug --verbose. You should see the webpage that it downloads from the router, and the IP that it scrapes out of it.

You probably don't want to use the --noexec option for debugging, since ddclient will then skip downloading html from the router, and won't find any IP address. In that case you will see DEBUG: skipped network connection and WARNING: unable to determine IP address, which is no good.

share|improve this answer
Thanks for this! For my Linksys e3000, I had to use – jgrowl Mar 11 '13 at 23:24
I'm glad it helped! – bukzor Mar 12 '13 at 1:41

I was using ddclient version 3.7.3 on centos 6.2 I don't know if the versions matter but the way I ended up setting up my namecheap dyndns was this way. I made it so others could see exactly how they should have it just replace the, 8cc67226fadff52f402d31505ee85d6b and dev with your setup.

Don't add quotes around the password or add commas/backslashes after each line.

## NameCheap (
share|improve this answer

I had the same difficulty with ddclient. So I wrote a simple perl module to take care of updates. I developed it thinking, as everyone does, that you have to grab your external ip and feed it to Namecheap with your basic parameters. This isn't necessary, as the update script on Namecheap's end determines your IP on its own.

So an update call is simple:

use App::DDNS::Namecheap;

my $domain =  App::DDNS::Namecheap->new(
                  domain   => '',
                  password => 'abcdefghijklmnopqrstuvwxyz012345',
                  hosts    => [ "@", "www", "*" ],

while (1) {
    sleep (300); #5 minute cycle

Note that subdomains can be handled with the use of a wildcard entry. Just define "*" as a subdomain A record on your Namecheap "all host records" page.

App::DDNS::Namecheap is on the CPAN if you're interested.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.