Dynamic IP and ZoneEdit.com
First things first: I am assuming that you have a DSL or Cable Modem connection. If you are
like 95% of the broadband world then your home network IP address is assigned dynamically,
meaning that it changes periodically. This is not a problem if you just want to "get on" the
internet, but this is a huge problem if you actually want to HOST your own domain (like
spencerstirling.com) on a server in your house. Many people will probably opt to just pay
somebody else to host their site - that's fine, but not nearly as fun.
Here's the problem with a dynamic PUBLIC IP address: when somebody types
www.spencerstirling.com, the DNS name resolver doesn't know where to go (because the actual
address keeps changing). This is where so-called "dynamic DNS" comes in handy. I use a free
service available from www.zoneedit.com. Here's how it works: you can buy a domain name from
several "official" domain registries, like "www.000domains.com" or "www.godaddy.com". These
companies just provide the NAME, not a place to actually PUT your website. This is the job
of your domain "host". If you are reading this document then I assume that you want the host
to be - YOU (a server on your home network)!
The domain registry usually only provides the barebones of services. For example, maybe you
already have a hosted website, but it has a terrible name like:
www.yahoo.com/users/imanidiot/complicatedurl/nobodywillrememberthis/blahblah.html
then your domain registry will often provide a service called URL forwarding. This just
means that somebody can type in your easy new domain name (like www.spencerstirling.com) and
they will be automatically forwarded to the terribly-named site above. For this to work you
will already have to have your website hosted somewhere, you just don't like the name (so
you're going to choose an easier name to point to it).
Another possibility is that your home network might have a static IP, in which case you can
just set up your website on your home server and tell your domain registry to point
www.spencerstirling.com to the address of your home server. That's REALLY easy.
Unfortunately, most people don't want to pay the extra $$$ that it takes for a static IP
(usually requires an upgrade of your DSL to a small business account).
In comes Zoneedit! You can configure your official domain registry to use the DNS servers
provided by Zoneedit (a third party company). That means that whenever anybody asks where to
find www.spencerstirling.com, your official registry will say "I don't know" and ask the
servers over at Zoneedit. The beauty is that the servers over at Zoneedit can be updated
with the latest information rather often - meaning that you can update your latest IP
address whenever it changes. This is called "Dynamic DNS". In fact, *some* official domain
registries also provide this service (but mine doesn't), so you may be able to avoid
Zoneedit altogether!
The instructions available on www.zoneedit.com for "dynamic DNS" are pretty much self-
explanatory. You will need to obtain an account with them. There they will assign you a
couple of nameservers to use. In my case they told me to use
ns3.zoneedit.com
ns17.zoneedit.com
Hence I logged on to my domain registry (www.godaddy.com) and told it to use the DNS servers
over at ZoneEdit (instead of using Godaddy's nameservers) whenever anybody asks where to
find www.spencerstirling.com.
The ONLY issue left is that you need to know how to update the ZoneEdit nameservers with
your latest IP address periodically. On their "dynamic DNS" howto they have a method using
"lynx" - this is the one that I'm using. So I wrote the following script and put it in
"/root/update_zoneedit/update_zoneedit" UPDATE April 2006: modified script slightly for
better error checking (still sucks)
#!/bin/sh
# Make sure that you have "lynx" INSTALLED!!!
# This script tries to update your Zoneedit profile whenever
# your IP address changes
GATEWAYIPADDRESS="${HOME}/report_gateway_ip_zoneedit/ipaddress"
GATEWAYIPADDRESSOLD="${HOME}/report_gateway_ip_zoneedit/ipaddress.old"
TEMP="${HOME}/report_gateway_ip_zoneedit/temp"
GATEWAYPAGE="http://www.whatismyip.com"
KEYPHRASE="Your IP"
USERNAME="zoneeditusername"
PASSWORD="password"
MYDOMAIN1="foo.com"
MYDOMAIN2="foo2.com"
MYDOMAIN3="foo3.com"
# get the ip address of the gateway
lynx -dump $GATEWAYPAGE &> $TEMP
if [ $? -ne 0 ]
then
echo "Cannot browse to $GATEWAYPAGE"
exit
fi
cat $TEMP | grep "$KEYPHRASE" > $GATEWAYIPADDRESS
# make sure the browse was successful
if [ -f $GATEWAYIPADDRESS ]
then
# assume at first that IP address has not changed
IPCHANGED="no"
# check if there is an old address to compare to
if [ -f $GATEWAYIPADDRESSOLD ]
then
# checks to see if they are different
diff $GATEWAYIPADDRESS $GATEWAYIPADDRESSOLD | grep "$KEYPHRASE" > /dev/null
if [ $? -eq 0 ]
then
# OK, we know they are different
# set the change variable appropriately
IPCHANGED="yes"
rm $GATEWAYIPADDRESSOLD
mv $GATEWAYIPADDRESS $GATEWAYIPADDRESSOLD
fi
else
# else just create the old $GATEWAYIPADDRESSOLD file
mv $GATEWAYIPADDRESS $GATEWAYIPADDRESSOLD
# set the change variable appropriately
IPCHANGED="yes"
fi
# Now send the message if the ip address has indeed been changed
if [ $IPCHANGED = "yes" ]
then
lynx -source -auth=${USERNAME}:${PASSWORD} http://dynamic.zoneedit.com/auth/dynamic.html?
host=${MYDOMAIN1} 2> /dev/null
# what to do in case of failure
if [ $? -ne 0 ]
then
echo "Error browsing to Zoneedit"
rm $GATEWAYIPADDRESSOLD
exit
fi
lynx -source -auth=${USERNAME}:${PASSWORD} http://dynamic.zoneedit.com/auth/dynamic.html?
host=${MYDOMAIN2} 2> /dev/null
# what to do in case of failure
if [ $? -ne 0 ]
then
echo "Error browsing to Zoneedit"
rm $GATEWAYIPADDRESSOLD
exit
fi
lynx -source -auth=${USERNAME}:${PASSWORD} http://dynamic.zoneedit.com/auth/dynamic.html?
host=${MYDOMAIN3} 2> /dev/null
# what to do in case of failure
if [ $? -ne 0 ]
then
echo "Error browsing to Zoneedit"
rm $GATEWAYIPADDRESSOLD
exit
fi
fi
# Problems reading/writing to the file
else
echo "Cannot access $GATEWAYIPADDRESS"
fi
I put this in my "crontab" file to be run every hour. A few comments are in order here. This
script checks the IP address hourly, but it only updates with ZoneEdit.com if the address
has CHANGED!!! This is the least we can do to preserve a free service. My only other comment
concerns the use of "http://www.whatismyip.com" hourly. This can be considered net abuse.
Although this will work, we don't want to make unnecessary demands on free services. In fact
I browse to a page on my router that gives the IP address. This keeps the traffic down.
0 comments:
Post a Comment