Any new 800 series Cisco routers should support dynamic DNS, provider like DynDNS.com
Here is the config:
Login to you router via console or telnet
Go into Enable mode
Then configure terminal (conf t)
ip domain name dyndns.org
ip ddns update method DynDNS
HTTP add http://username:passwd@members.dyndns.org/nic/update?system=dyndns&hostname=myrouter.dyndns.org&myip=
interval maximum 1 0 0 0
username:password This is the username and password of the account you created at the dyndns provider.
members.dyndns.org/nic/update? after this might cause problems where the Cisco router thinks that you are asking for help you can escape this by pressing CTRL and V at the same time then ?
hostname= The hostname you are updating in this case: cisco2.dyndns.org
myip= Leave this blank the dyndns site will determine what IP your ISP has issued to you
Then add,
interface Dialer1
ip ddns update hostname cisco2.dyndns.org
ip ddns update DynDNS host members.dyndns.org
interface Vlan1
ip ddns update hostname cisco2.dyndns.org
ip ddns update DynDNS host members.dyndns.org
Once you have that all added write the config, then enable dedugging turn on terminal monitor
debugging ip ddns update
term mon