If you have a VPS at Linode, then you have free Dynamic DNS. You can use that from a regular Linux machine, or from a router that runs OpenWRT.
This article describes how to setup an OpenWRT router with Linode Dynamic DNS.
First, the script itself, which goes into the file: /etc/custom/linodedns.sh
#!/bin/ash
BASE=`basename $0 .sh`
DIR=`dirname $0`
OUTPUT1=/tmp/$BASE-1.out
OUTPUT2=/tmp/$BASE-2.out
# Read the configuration file
CONF=$DIR/$BASE.conf
if [ -r "$CONF" ]; then
. $CONF
else