Página siguiente Página anterior Índice general

8. Mantenimiento

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.


Página siguiente Página anterior Índice general