Keeping it working.
There is one maintenance task you have to do on nameds, other than
keeping them running. That's keeping the root.hints file
updated. The easiest way is using dig, first run dig with no
arguments, you will get the root.hints according to your own
server. Then ask one of the listed root servers with dig
@rootserver. You will note that the output looks terribly like a
root.hints file. Save it to a file (dig @e.root-servers.net . ns
>root.hints.new) and replace the old root.hints with it.
Remember to restart named after replacing the cache file.
Al Longyear sent me this script, that can be run automatically to
update root.hints, install a crontab entry to run it once a month
and forget it. The script assumes you have mail working and that the
mail-alias `hostmaster' is defined. You must hack it to suit your
setup.
#!/bin/sh
#
# Update the nameserver cache information file once per month.
# This is run automatically by a cron entry.
#
# Original by Al Longyear
# Updated for bind 8 by Nicolai Langfeldt
# SERVFAIL problem discovered by David A. Ranch
#
(
echo "To: hostmaster <hostmaster>"
echo "From: system <root>"
echo "Subject: Automatic update of the named.conf file"
echo
export PATH=/sbin:/usr/sbin:/bin:/usr/bin:
cd /var/named
dig @rs.internic.net . ns >root.hints.new
case `cat root.hints.new` in
*SERVFAIL*)
echo "The named.conf file update has FAILED."
echo "This is the error that DIG reported:"
echo
cat root.hints.new
exit 0
esac
echo "The named.conf file has been updated to contain the following
information:"
echo
cat root.hints.new
chown root.root root.hints.new
chmod 444 root.hints.new
rm -f root.hints.old
mv root.hints root.hints.old
mv root.hints.new root.hints
ndc restart
echo
echo "The nameserver has been restarted to ensure that the update is complete."
echo "The previous root.hints file is now called
/var/named/root.hints.old."
) 2>&1 | /usr/lib/sendmail -t
exit 0
Some of you might have picked up that the root.hints file is also available by ftp from Internic. Please don't use ftp to update root.hints, the above method is much more friendly to the net.