DNS HOWTO
8. Údržba
Zajištění fungování.
Kromě udržení běhu named je tu ještě jeden úkol pro jejich údržbu. Tím je udržování aktuálnosti souboru root.hints. Nejjednodušším způsobem je používání dig. Nejdříve spusťte dig bez argumentů a dostanete root.hints podle vašeho vlastního serveru. Pak se zeptejte jednoho z vypsaných kořenových serverů použitím dig @rootserver. Všimněte si, že výstup se strašlivě podobá souboru root.hints. Uložte jej do souboru (dig @e.root-servers.net . ns >root.hints.new) a nahraďte jím starý soubor root.hints.
Po nahrazení 'cache' souboru nezapomeňte reloadnout named.
Al Longyear mi poslal skript, který může automaticky běžet a aktualizovat root.hints. Nainstalujte záznam do crontab spouštěný jednou měsíčně a zapomeňte na to. Skript předpokládá, že máte funkční mail a že mailový alias 'hostmaster' je definovaný. Musíte si ho trochu upravit, aby odpovídal vašemu nastavení.
#!/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
# Miscelanious error-conditions reported by David A. Ranch
# Ping test suggested by Martin Foster
# named up-test suggested by Erik Bryer.
#
(
echo "To: hostmaster <hostmaster>"
echo "From: system <root>"
# Is named up? Check the status of named.
case `rndc status 2>&1` in
*refused*)
echo "named is DOWN. root.hints was NOT updated"
echo
exit 0
;;
esac
PATH=/sbin:/usr/sbin:/bin:/usr/bin:
export PATH
# NOTE: /var/named must be writable only by trusted users or this script
# will cause root compromise/denial of service opportunities.
cd /var/named 2>/dev/null || {
echo "Subject: Cannot cd to /var/named, error $?"
echo
echo "The subject says it all"
exit 1
}
# Are we online? Ping a server at your ISP
case `ping -qnc 1 some.machine.net 2>&1` in
*'100% packet loss'*)
echo "Subject: root.hints NOT updated. The network is DOWN."
echo
echo "The subject says it all"
exit 1
;;
esac
dig @e.root-servers.net . ns >root.hints.new 2> errors
case `cat root.hints.new` in
*NOERROR*)
# It worked
:;;
*)
echo "Subject: The root.hints file update has FAILED."
echo
echo "The root.hints update has failed"
echo "This is the dig output reported:"
echo
cat root.hints.new errors
exit 1
;;
esac
echo "Subject: The root.hints file has been updated"
echo
echo "The root.hints 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 errors
mv root.hints root.hints.old
mv root.hints.new root.hints
rndc 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
Někteří z vás už možná zjistili, že soubor root.hints je také k dispozici přes ftp z Internic. Nepoužívejte prosím ftp pro aktualizaci root.hints, výše uvedený způsob je mnohem přívětivější k síti, i Internic-u.