ddclient works great with dyndns. The only thing that you have to do is enable a cron script to force an update.
Taken from this guide: 
sudo apt-get install ddclient
the ncurses wizard should come up. make sure you have your host added at dyndns.com with just any ip before you choose from a list in the wizard. If you don't have it added it can't pull the hostname.
If you need to do it manually...look at the Ubuntu link above.
One thing that most forget is that if you do not update the addy every 30 days dyndns will delete it. (With the free at least) This means that you must force an update every once in a while. (If you update too much they will disable your account to.)
The below is taken from 
Getting DDclient to Periodically Update Your DDNS service provider will typically force your entry to expire if it doesn't receive an update within a few months. The easiest way to solve this problem is to use the cron sample file that ddclient provides. Here's how to do it. 1. Use the rpm command to get a list of installed DDclient files, one of which is the cron file . [root@bigboy tmp]# rpm -ql ddclient | grep cron /usr/share/doc/ddclient-3.7.1/sample-etc_cron.d_ddclient [root@bigboy tmp]# 2. Copy the file to the /etc/cron.d directory. [root@bigboy tmp]# cp /usr/share/doc/ddclient-3.7.1/sample-etc_cron.d_ddclient /etc/cron.d/ddclient.cron 3. Edit the file and uncomment the cron entries, [root@bigboy tmp]# vi /etc/cron.d/ddclient.cron 4. Restart cron. [root@bigboy tmp]# service crond restart This simple modification will allow you to sleep at night without worrying whether ddclient is working correctly!
I found the above example cron file somewhere else but everything else is the same except that my command to restart crond was "service cron restart". I did not uncomment the second cron line in the file.
The 'No-IP Compatible' protocol is used to make dynamic dns updates over an http request. Details of the protocol are outlined at: http://www.no-ip.com/integrate/
Configuration variables applicable to the 'noip' protocol are:
protocol=noip ## server=fqdn.of.service ## defaults to dynupdate.no-ip.com login=service-login ## login name and password registered with the service password=service-password ## fully.qualified.host ## the host registered with the service.
Example ddclient.conf file entries:
## single host update protocol=noip, \ firstname.lastname@example.org, \ password=noip-password \ myhost.no-ip.biz
A Config that I made:
daemon=3600 ssl=yes use=web web=http://ip1.dynupdate.no-ip.com/ protocol=noip server=dynupdate.no-ip.com/nic/update login=a3434edf password='gfsdffsdfs' lol.no-ip.info
The debian version of ddclient 3.8.0 was giving the error
Use of uninitialized value in string ne at /usr/sbin/ddclient line 2102.
I think it is because I am using no-ip. I found out that the new version fixed this and since it is a perl script I just wgeted the new version and copied the ddclient binary over the old on in /sbin/
I also had to
ln -s /etc/ddclient.conf /etc/ddclient/ddclient.conf
and rm /var/cache/ddclient/ddclient.cache
I tested the fix by running ddclient and I also
- Lame: https://account.dyn.com/entrance/?return=%2Ftools%2Fclientconfig.html
To run ddclient as a daemon, please set run_daemon to 'true' in /etc/default/ddclient ...