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.hints
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
*'refused'*)
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
rndc reload
echo
echo "El servidor 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.