Por defecto named (Bind) hace una llamada en el script de arranque a la utilidad named-checkzone para verificar la validez de todas las zonas que componen el servidor antes de arrancar. En caso de detectar cualquier error el arranque se para y recibimos un mensaje de error:
# /etc/init.d/named start Starting named: Error in named configuration: zone localhost.localdomain/IN: loaded serial 0 zone localhost/IN: loaded serial 0 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0 zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 named.empty:10: unknown RR type 'AAAAA' zone 0.in-addr.arpa/IN: loading from master file named.empty failed: unknown class/type zone 0.in-addr.arpa/IN: not loaded due to errors. _default/0.in-addr.arpa/IN: unknown class/type Starting named: [FAILED]
En este caso hemos forzado un error para poder reproducirlo creando un registro inexistente (AAAAA) en la zona named.empty. En el caso de que tengamos miles de zonas y existan algunas incorrectas puede que no queramos provocar la falla de todo el sistema y que el servicio no arranque. Para ello tenemos la opción de deshabilitar este chequeo inicial añadiendo la opción correspondiente al comando de arranque del named/bind. En el caso de Red Hat y derivados la añadimos de forma ordenada en el fichero de opciones en
/etc/sysconfig/named:
DISABLE_ZONE_CHECKING=yes
Arrancamos el servicio de nuevo, ahora sin problemas:
# /etc/init.d/named start Starting named: [ OK ]
Y tranquilamente podemos revisar manualmente o con un script las zonas incorrectas:
# named-checkzone /var/named/named.empty named.empty named.empty:2: warning: /var/named/named.empty: bad name (check-names) named.empty:8: warning: /var/named/named.empty: bad name (check-names) named.empty:9: /var/named/named.empty: bad owner name (check-names) named.empty:10: unknown RR type 'AAAAA' zone /var/named/named.empty/IN: loading from master file named.empty failed: unknown class/type zone /var/named/named.empty/IN: not loaded due to errors.