Manteniéndolo en funcionamiento.
Hay una tarea de mantenimiento que tienes que realizar con named,
además de mantenerlo en funcionamiento. Esta tarea es mantener el archivo
root.cache actualizado. La forma más fácil es usar dig,
primero ejecuta dig sin argumentos, conseguirás
root.hints de acuerdo con tu propio servidor. Entonces pregunta
a alguno de los servidores raíz listados con dig
@rootserver.
Podrás observar que la salida se parece terriblemente al archivo
root.cache excepto por un par de números extras. Esos números no
ocasionan problemas. Guárdalo en un archivo (dig @e.root-servers.net . ns
>root.hints.nuevo) y sustituye el antiguo root.hints con él.
Recuerda reiniciar named después de sustituir el archivo caché.
Al Longyear me envió este script que puede ser ejecutado automáticamente
para actualizar root.cache, instala una entrada en el
crontab para ejecutarlo una vez al mes y olvídate. El script
supone que trabajas con correo y que el alias de mail hostmaster está
definido. Debes editarlo para ajustarlo a tu configuración.
#!/bin/sh
#
# Actualizacion del cache del servidor de nombres una vez al mes.
# Esto es ejecutado automaticamente mediante una entrada de cron
#
# Original de Al Longyear
# Actualizado para BIND 8 por Nicolai Langfeldt
# Varias condiciones de error notificadas por David A. Ranch
# Test ping test sugerido por Martin Foster
# named activo sugerido por Erik Bryer.
#
(
echo "To: hostmaster <hostmaster>"
echo "From: system <root>"
# ¿Está named activo? Verifica el estado de named.
case `ndc status 2>&1` in
*'no puedo conectar el canal de órdenes'*)
echo "named está inactivo. root.hints NO actualizado"
echo
exit 0
;;
esac
PATH=/sbin:/usr/sbin:/bin:/usr/bin:
export PATH
# NOTA: /var/named tiene que tener permiso de escritura sólo para los usuarios válidos del guion
# podrá ocasionar oportunidades de comprometer el sistema o ataques DOS.
cd /var/named 2>/dev/null || {
echo "Subject: No puedo ir a /var/named, error $?"
echo
echo "El motivo lo dice todo"
exit 1
}
# ¿Estamos en red? Hace ping a un servidor del tu ISP
case `ping -qnc 1 some.machine.net 2>&1` in
*'100% packet loss'*)
echo "Subject: root.hints NO actualizado. La red no está activa."
echo
echo "El motivo lo dice todo"
exit 1
;;
esac
dig @e.root-servers.net . ns >root.hints.new 2> errors
case `cat root.hints.new` in
*NOERROR*)
# funciona
:;;
*)
echo "Subject: la actualización de root.hints ha FALLADO."
echo
echo "La actualización de root.hints ha fallado"
echo "Este es el informe de errores de dig:"
echo
cat root.hints.new errors
exit 1
;;
esac
echo "Subject: El fichero root.hints se ha actualizado"
echo
echo "El fichero root.hints se ha actualizado y contiene la siguiente información:"
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
ndc restart
echo
echo "El serviodor de nombres se ha reiiniciado para asegurarnos que la actualización es completa."
echo "El anterior fichero root.hints file ahora se llama
/var/named/root.hints.old."
) 2>&1 | /usr/lib/sendmail -t
exit 0
Alguno de vosotros puede haber observado que el archivo root.hints
está también disponible mediante ftp en Internic. Por favor NO
utilice ftp para actualizar root.cache, el método anterior es mucho
más amistoso con la red.