viernes, 18 de diciembre de 2009

Corrupción del Directorio Activo en un Controlador de Dominio (Windows 2003)


Una de las situaciones más complicadas a las que nos podemos enfrentar en la administración de sistemas es la corrupción de nuestro Directorio Activo. La base de datos se corrompe y nuestro Controlador de Dominio (DC) ya no es capaz de procesar y autenticar o realizar búsquedas en el Directorio Activo (DA). Por algún desconocido y extraño motivo la replicación comienza a fallar u observamos un aumento de los errores en los logs. Otro síntoma que puede evidenciar esta corrupción puede ser que los servicios de Directorio Activo no se inician en nuestro DC.

 
CAUSAS: Este escenario puede ser causado por:
  • Un fallo de software, que puede producirse al actualizar el Schema aún teniendo configuradas las entradas del Schema.
  • Una escritura no limpia en el DA.
  • Una replicación que fue interrumpida.
  • Un cambio accidental (o malicioso) en el Schema del DA, con herramientas de bajo nivel como ADSIedit o similares.

RESOLUCIÓN: El proceso de recuperación es el siguiente:
  • Verificar que es un fallo o corrupción de la base de datos del DA, y no un problema de red o de otra índole.
  • Tendremos que valorar el rendimiento del modo de recuperación especifico, decidiendo entre el modo autoritativo o no-autoritativo.
  • Una vez que la recuperación se complete, necesitariamos verificar que el DC se replica y funciona correctamente.

     
Si el Directorio Activo en un controlador de dominio se corrompe, o se detiene la replicación desde otro DC, o ambas cosas, tendriamos que buscar el origen de estos problemas. Un buen punto de partida es chequear de nuevo que el DNS está en orden, y revertir cualquier cambio manual que se haya realizado recientemente. También deberiamos asegurarnos de que no existe ningún problema relacionado con la red, lo que quiere decir que no existen problemas con los routers (p.ej. que han sido modificadas las rutas), o que no se han producido cambios en los firewalls, o que no hay problemas de conectividad. Estas son las principales causas en la mayor parte de las ocasiones y que por tanto no se trata de una corrupción real.
Si somos capaces de descartar con seguridad estas causas relacionadas con la red, podemos utilizar herramientas como ReplMon y DCDiag, incluidas entre las herramientas de soporte de Windows 2003.
  • ReplMon es una utilidad en entorno gráfico, que muestra los errores de replicación dentro de un dominio. Muestra qué DC no se replican y por qué.
  • DCDiag escanea todos los DC determina si se han producido errores de replicación y por qué.
Una vez que comprobemos que todos los DC replican bien, deberiamos buscar en el visor de eventos los identificadores de evento específicos 467 y 1018 que se producen cuando la base de datos tiene una corrupción real o es ilegible.


 
Opciones para recuperar y detener la propagación de la corrupción del DA.
Si tenemos dañada una base de datos de Directorio Activo, y tenemos la suerte de que no se ha propagado, es decir, sólo se encuentra en un único DC, deberemos eliminar de la cadena de replicación ese DC lo antes posible. Una forma podría ser desconectar la máquina de la red, valorando el impacto que tendrá, sobre todo si estamos trabajando de forma remota. La otra opción podría ser aislar el DC mediante reglas en el firewall. De esta forma podríamos acceder a la máquina de forma remota. En el caso de que no sean posible ninguna de estas dos opciones, podemos utilizar la herramienta Repadmin para detener la replicaciones (entrates y salientes).
Las dos opciones son:
  • repadmin /options DCNAME +DISABLE_INBOUND_REPL
  • repadmin /options DCNAME +DISABLE_OUTBOUND_REPL
donde DCNAME es el nombre del DC cuya replicación queremos desactivar.
Para habilitar la replicación utilizaremos:
  • repadmin /options DCNAME -DISABLE_INBOUND_REPL
  • repadmin /options DCNAME -DISABLE_OUTBOUND_REPL
     
Tenemos que tener en cuenta que cuando se deshabilita la replicación de salida, los eventos 1115 aparecerán en el visor de eventos, así como los errores con id. 1113 cuando se deshabilita la replicación de entrada. Cuando volvamos a habilitarlos, encontraremos sucesos informativos en el visor de eventos con id. 1116 (salida) y 1114 (entrada).
La forma más rápida de recuperar una base de datos dañada de Directorio Activo consiste en forzar la degradación del DC a un servidor miembro, y promover uno de los existentes. Podemos utilizar DCDiag para comprobar que todo está correcto. No deberiamos replicar desde otro DC si no podemos verificar que ese DC está operativo. Así mismo deberiamos asegurarnos de que no contiene ninguna BB.DD. Jet o errores de FRS como 1173 (error interno de la base de datos Jet).
Deberemos realizar una limpieza de los metadatos si realizamos una degradación forzada del DC. Si utilizamos Dcpromo se replicará el cambio al resto de DCs, por lo que de esta forma estariamos difundiendo la base de datos corrupta. Deberemos ejecutar dcpromo /forceremoval y realizar una limpieza de metadatos. Para ello podemos hacer uso de la herramienta Ntdsutil (más información en http://technet.microsoft.com/es-es/library/cc758526(WS.10).aspx).


Restauración no-autoritativa y autoritativa
    Para acelerar la replicación de datos del Directorio Activo deberemos realizar una restauración no-autoritativa de la base de datos de DA. Esto quiere decir que se va a restaurar la base de datos pero no se fuerza a aceptar como maestro de la replicación a este servidor por lo que no se actualizan todos los objetos en todos los DC de nuestro dominio. Después de finalizar la restauración, reiniciaremos el DC, y el proceso de replicación será mucho más rápido porque sólo los objetos que han cambiado se replicarán.
Esto se hace porque los datos de esta restauración pueden estar desfasados, y serán sincronizados con la información de otros controladores que existan en el dominio. Es decir, los datos de controladores que estén activos se propagarán a este nuevo sistema restaurado.

 


Opción A: Restaurar el DA desde una copia de seguridad.
    Con el fin de restaurar una BBDD del DA en un controlador de dominio, deberemos utilizar la opción "Restaurar Servicios de Directorio". Para ello, reiniciaremos el DC y en el arranque (justo antes de empezar la carga del SS.OO) pulsaremos la tecla F8. En ese momento se nos presentará un menú con las siguientes opciones:

  • Safe Mode
  • Safe Mode with Networking
  • Safe Mode with Command Prompt
  • Enable Boot Logging
  • Enable VGA Mode
  • Last Known Good Configuration
  • Directory Services Restore Mode (Windows NT domain controllers only)
  • Debugging Mode
  • Modo seguro
  • Modo seguro con funciones de red
  • Modo seguro con símbolo del sistema
  • Habilitar el registro de arranque
  • Habilitar modo video a resolución baja (640x480)
  • Última configuración buena conocida
  • Modo de restauración de servicios de directorio (sólo controladores de dominio Windows NT).
  • Modo de depuración

Seleccionaremos el modo de restauración de servicios de Directorio, y al pulsar Enter, entraremos el modo de restauración. Nuestro DC arrancará pero no así los servicios relacionados con el DA. Una vez arrancado el sistema, restauraremos el system state del DA desde una copia de seguridad reciente (espero que las hagáis de forma periódica) y reiniciaremos la máquina. Después del reinicio, tendremos los servicios de DA con un ligero desfase con respecto a nuestra base de datos. Esperaremos a que la replicación surta efecto y nuestro DA estará actualizado.

 
  • Sin acceso físico a la máquina
    Si no tuviésemos acceso físico a la máquina, podemos lograr el mismo efecto modificando el archivo boot.ini, oculto en la unidad C: y protegido contra la escritura.
Si no quisiéramos modificar las propiedades de este archivo, tenemos también la opción de ir a "Propiedades del sistema" (Mi PC, botón derecho), y en la Pestaña "Opciones Avanzadas", en la sección "Inicio y recuperación", pulsamos en "Configuración", y después en "Editar" para editar el archivo de opciones de inicio (boot.ini).

 
  • Restauración a partir de una copia de seguridad
    Una vez en el modo de restauración del restauración de directorio (DRM) podemos utilizar las copias de seguridad realizadas mediante Windows o mediante software de terceros. Mediante las copias de seguridad de Windows podemos respaldar y restaurar el system state del servidor. Esto nos permitirá volver a un sistema completo de trabajo.
    Sin embargo, si no necesitasemos recuperar el estado del sistema al completo, podemos elegir sólo restaurar el DA, con lo que restaurariamos la base de datos del DA. Podemos restaurar el DA o el system state en una ubicación diferente, o sobreescribir los archivos originales, dependiendo si queremos realizar una restauración autoritativa o no-autoritativa.

 

 
Opción B: Replicación.
    En el caso de no disponer de un backup reciente para restaurar nuestro DA, o necesitamos actuar muy rápidamente, podemos probar primero a forzar la restauración del DA utilizando dcpromo /forceremoval .
De esta forma, degradando prevenimos la replicación al resto de los servidores asociados de replicación. Si tenemos algún rol importante de FSMO en el servidor que vamos a degradar se nos mostrará una advertencia. Deberíamos asegurarnos de que después de la degradación, algún otro servidor asuma esa/s funcion/es FSMO.
Tras el mensaje de advertencia, el asistente de Directorio Activo procederá a eliminarlo sin actualizar el bosque. Esto significa que no se replicarán los datos o cambios. Una vez degradado, reiniciaremos el servidor y promovemos de nuevo el servidor como DC con el mismo nombre. Durante la promoción, se replicará el DA. Tenemos que tener en cuenta el tamaño de la BB.DD. del DA pues una réplica a un DA "vacío" puede llevarnos mucho tiempo e incluso crear problemas de congestión de la red. El tamaño de la BB.DD. de DA puede tener un tamaño desde 1Gb a varios, por lo que en determinados casos deberemos tener en cuenta si nos interesa valorar otras opciones.

 

 
Opción C: Reconstruir el DC desde el medio (IFM).
    Desde Windows 2000 SP3 existe una opción disponible con dcpromo denominada "IFM" (Install From Media). Básicamente facilita (entre otras cosas) el promover un DC usando un backup de otro DC. Se trata de una opción mucho más rápida si la conexión de red no es lo suficientemente rápida o podemos ocasionar problemas de congestión en la red.
La herramienta se encuentra disponible al ejecutar dcpromo /adv. Lo que se tiene que hacer, básicamente, es llevar a cabo un backup del System State de un DC activo, restaurarlo en el futuro DC, y utilizar el comando dcpromo /adv, indicando como fuente un medio local, y no de red. Aún mejor es el aprovechamiento de esta utilidad para llevar a cabo un backup y restore de un DC que a la vez sea Catálogo Global.
Es importante aclarar que esta funcionalidad no reemplaza la replicación por red, ya que lo que se está haciendo es utilizar un backup de un DC existente, para evitar así que la primera replicación completa ocurra a través de la red, reduciendo tiempo y utilización de recursos.
Existen una serie de limitaciones como que IFM sólo puede ser utilizado entre DC del mismo dominio y que el backup del system state sólo puede utilizarse en el periodo de vida tombstone (por defecto, 60 días o 90 a partir del SP1) para evitar inconsistencias como la reactivación de objetos borrados.
Podemos encontrar más información en el artículo: http://support.microsoft.com/kb/311078