DcDiag “LA” herramienta de diagnóstico para nuestros controladores de dominio de nuestra arquitectura de Active Directory

diagnostic_iconHoy vamos a hablar de una herramienta fundamental para nuestra Arquitectura de Directory Services (Active Directory). Esta herramienta de línea de comandos se incluye al instalar el Support Tools de Windows Server 2003 y en Windows Server 2008 viene instalado.

Que hacemos con DCDiag, con esta herramienta de línea de comandos podemos analizar el estado de nuestros controladores de dominio en un bosque o empresa y el informe que genera nos ayudara a solucionar los problemas.

Dcdiag ejecuta una serie de pruebas para verificar distintas áreas funcionales de nuestros DCs, en un marco, en el cual  selecciona qué controladores de dominio son probados de acuerdo con las directivas de alcance que definimos. Esta herramienta no tienen ninguna interfaz de usuario (IU).

Debemos tener en cuenta que todos los controladores de dominio de un mismo dominio son iguales entre sí y cualquier controlador de dominio puede realizar las actualizaciones de directorio.

Sin embargo, dada la forma en que las actualizaciones del directorio se replican desde un controlador de dominio a otro, es posible que pueden surgir dificultades. Por ejemplo, si los controladores de dominio necesarios no están conectados por una topología de replicación, los controladores de dominio adecuados no recibirán las actualizaciones del directorio cuando se produce la replicación.

También, para que (Domain Controller) Locator encuentre un controlador de dominio, debe tener información precisa para que poder localizar correctamente el recurso. Si un controlador de dominio se anuncia incorrectamente, el localizador no lo encontrara.

Incluso podemos chequear nuestros DNS (esto desde Windows Server 2003 SP1), hay siete pruebas nuevas relacionadas con DNS que se pueden ejecutar de forma individual o simultánea. Estas pruebas se pueden realizar en uno o en todos los controladores de dominio de un bosque de Active Directory. Una vez completadas las pruebas, DCDiag.exe presenta un resumen de los resultados con información detallada sobre cada controlador de dominio probado. Por ejemplo:

  • DCDIAG /TEST:DNS para validar el estado de DNS.
  • DCDIAG /CheckSecurityError para detectar configuraciones de seguridad que pueden ocasionar que la réplica de Active Directory tenga errores.

Por ejemplo, si queremos chequear con ésta herramienta es que el DC haya registrado correctamente en los DNS los registros necesarios para que sea reconocido y anunciado en el Active Directory como un DC válido, debemos ejecutar lo siguiente:

  • dcdiag /test:registerindns /dnsdomain:FQDN /v

www.radians.com.ar © 2012

La sintaxis de este comando es la siguiente:

dcdiag/s:DomainController [/n:NamingContext] [/u:Domain\UserName /p:{* | Password | ""}] [{/a | /e}] [{/q | /v}] [/i] [/f:LogFile] [/ferr:ErrLog] [/c [/skip:Test]] [/test:Test] [/fix] [{/h | /?}] [/ReplSource:SourceDomainController]

Parameters

  • /s:DomainController : Uses DomainController as the home server. This parameter is required. It is ignored for DcPromo and RegisterInDns tests which can only be run locally.
  • /n:NamingContext : Uses NamingContext as the naming context to test. Domains may be specified in NetBIOS, DNS or distinguished name format.
  • /u:Domain\UserName /p:{* | Password | ""} : Uses Domain\UserNameDCDiag uses the process’s or users default credentials. If alternate credentials are needed, use the following options to provide those credentials for binding with Password as the password. Use "" for an empty or null password, or the wildcard character (*) to prompt for the password.
  • /a : Tests all the servers on this site.
  • /e : Tests all the servers in the entire enterprise. Overrides /a.
  • /q : Quiet. Prints only error messages.
  • /v : Verbose. Prints extended information.
  • /i : Ignores superfluous error messages.
  • /fix : Only affects the MachineAccount test. It causes the test to fix the SPNs (Service Principal Names) on the domain controller’s Machine Account Object.
  • /f:LogFile : Redirects all output to LogFile. The /f parameter operates independently of /ferr.
  • /ferr:ErrLog : Redirects fatal error output to a separate file ErrLog. The /ferr parameter operates independently of /f.
  • /c : Comprehensive. Runs all tests except DCPromo and RegisterInDNS, including non-default tests. Optionally, can be used with /skip to skip specified tests. The following tests are not run by default: TopologyCutoffServersOutboundSecureChannels
  • { /h | /?}  :Displays a syntax screen at the command prompt.
  • /test:Test : Runs only this test. The nonskippable test Connectivity is also run. Should not be run in the same command with /skip.
    * All tests except DcPromo and RegisterInDNS must be run on computers that have been promoted to domain controller.
    * The test CheckSecurityError is available only in the version of Dcdiag that is included with Windows Support Tools in Windows Server 2003 Service Pack 1 (SP1) and must be run on a domain controller that is running Windows Server 2003 with SP1.
  • /ReplSource:SourceDomainController : Option for /test:CheckSecurityError. Tests the connection between the domain controller on which you run the command and the source domain controller. SourceDomainController is the DNS name, NetBIOS name, or distinguished name of a real or potential "from" server that is represented by a real or potential connection object.

El parámetro CheckSecurityError se puede realizar en uno o en todos los controladores de dominio de un bosque de Active Directory, y realiza las siguientes operaciones:

  • Comprueba la disponibilidad de un Centro de distribución de claves (KDC) en los dominios de los controladores de dominio de origen y destino.
  • Comprueba que el controlador de dominio de destino puede transmitir y recibir paquetes con formato UDP suficientemente grandes (que utiliza Kerberos).
  • Comprueba que el reloj del sistema del controlador de dominio de destino no tiene una diferencia de más de 5 minutos respecto de la hora del sistema del KDC en el dominio de destino y origen, y el controlador de dominio de origen.
  • Confirma que la raíz de cada contexto de asignación de nombres del controlador de dominio de origen está configurada con el permiso necesario.
  • Confirma que las cuentas de equipo de los controladores de dominio de origen y destino no están deshabilitadas, son de confianza para la delegación y contienen todos los nombres principales de servicio requeridos.

Una vez terminada la prueba, DCDiag.exe presenta el resumen de los resultados de cada controlador de dominio probado y el diagnóstico de los errores de seguridad encontrados. La línea de comando seria: Dcdiag /test:CheckSecurityError

La lista de test que podemos hacer es bastante extensa, el único test que no puede ser evitado es el de conectividad, el resto si. La lista seria la siguiente:

  • Connectivity
  • ObjectsReplicated
  • Replications
  • frssysvol
  • NCSecDesc
  • frsevent
  • NetLogons
  • kccevent
  • Advertising
  • systemlog
  • KnowsOfRoleHolders
  • CheckSDRefDom
  • Intersite
  • VerifyReplicas
  • FSMOCheck
  • CrossRefValidation
  • RidManager
  • VerifyReferences
  • MachineAccount
  • VerifyEnterpriseReferences
  • Services
  • /skip:Test
  • OutboundSecureChannels
 

Los test que no se ejecutan por defecto son:

Topology
OutboundSecureChannels
CheckSecurityError
VerifyReplicas
CutoffServers
VerifyEnterpriseReferences
DNS
  • /DnsBasic
  • /DnsForwarders
  • /DnsDelegation
  • /DnsDymanicUpdate
  • /DnsRecordRegistration
  • /DnsResolveExtName
 
 

Y los Non-Domain Controller tests:

  • DcPromo
  • RegisterInDNS

Algunos ejemplos para verificar nuestros DNS podrían ser:

  • Para ejecutar todas las pruebas de DNS en un único controlador de dominio en modo no detallado: Dcdiag /test:DNS /s:nombreDeControladorDeDominioDeDestino
    /f:nombreDeArchivoDeRegistro
  • Para ejecutar todas las pruebas de DNS en un único controlador de dominio en modo detallado: Dcdiag /test:DNS /s:nombreDeControladorDeDominioDeDestino 
    /v /f:nombreDeArchivoDeRegistro
  • Para ejecutar todas las pruebas de DNS en todo el bosque en modo no detallado:
    Dcdiag /test:DNS /e /f:nombreDeArchivoDeRegistro
  • Para ejecutar todas las pruebas de DNS en todo el bosque en modo detallado:
    Dcdiag /test:DNS /v /e /f:nombreDeArchivoDeRegistro
  • Para ejecutar la prueba básica de DNS en un único controlador de dominio:
    Dcdiag /test:DNS /DnsBasic /s:nombreDeControladorDeDominioDeDestino
    /f:nombreDeArchivoDeRegistro
  • Para ejecutar la prueba de reenviadores de DNS en un único controlador de dominio:
    Dcdiag /test:DNS /DnsForwarders /s:nombreDeControladorDeDominioDeDestino
    /f:nombreDeArchivoDeRegistro
  • Para ejecutar la prueba de delegación de DNS en un único controlador de dominio:
    Dcdiag /test:DNS /DnsDelegation /s:nombreDeControladorDeDominioDeDestino
    /f:nombreDeArchivoDeRegistro
  • Para ejecutar la prueba de actualización dinámica de DNS en un único controlador de dominio:
    Dcdiag /test:DNS /DnsDynamicUpdate /s:nombreDeControladorDeDominioDeDestino
    /f:nombreDeArchivoDeRegistro
  • Para ejecutar la prueba de inscripción de registros de DNS en un único controlador de dominio: Dcdiag /test:DNS /DnsRecordRegistration /s:nombreDeControladorDeDominioDeDestino
    /f:nombreDeArchivoDeRegistro
  • Para resolver un nombre de Internet o intranet de ejemplo:
    Dcdiag /test:DNS /DnsResolveExtName /DnsInternetName:nombreDeInternet /f: nombreDeArchivoDeRegistro

Si ejecutamos esta herramienta en un DC normal, deberíamos tener la siguiente salida: dcdiag /s:SRVDC1 \administrator password

Domain Controller Diagnosis
Performing initial setup:
   Done gathering initial info.
Doing initial required tests
   Testing server: Default-First-Site-Name\SRVDC1
      Starting test: Connectivity
         ……………………. SRVDC1 passed test Connectivity
Doing primary tests
   Testing server: Default-First-Site-Name\SRVDC1
      Starting test: Replications
         ……………………. SRVDC1 passed test Replications
      Starting test: NCSecDesc
         ……………………. SRVDC1 passed test NCSecDesc
      Starting test: NetLogons
         ……………………. SRVDC1 passed test NetLogons
      Starting test: Advertising
         ……………………. SRVDC1 passed test Advertising
      Starting test: KnowsOfRoleHolders
         ……………………. SRVDC1 passed test KnowsOfRoleHolders
      Starting test: RidManager
         ……………………. SRVDC1 passed test RidManager
      Starting test: MachineAccount
         ……………………. SRVDC1 passed test MachineAccount
      Starting test: Services
         ……………………. SRVDC1 passed test Services
      Starting test: ObjectsReplicated
         ……………………. SRVDC1 passed test ObjectsReplicated
      Starting test: frssysvol
         ……………………. SRVDC1 passed test frssysvol
      Starting test: kccevent
         ……………………. SRVDC1 passed test kccevent
      Starting test: systemlog
         An Error Event occured.  EventID: 0xC25A001D
            Time Generated: 2/10/2012   01:28:25
            Event String: The time provider NtpClient is configured to
         An Error Event occured.  EventID: 0xC25A001D
            Time Generated: 2/10/2012   01:40:30
            Event String: The time provider NtpClient is configured to
         An Error Event occured.  EventID: 0xC25A001D
            Time Generated: 2/10/2012   01:43:30
            Event String: The time provider NtpClient is configured to
         An Error Event occured.  EventID: 0xC25A001D
            Time Generated: 2/10/2012   01:58:46
            Event String: The time provider NtpClient is configured to
         An Error Event occured.  EventID: 0xC25A001D
            Time Generated: 2/10/2012   02:02:11
            Event String: The time provider NtpClient is configured to
         An Error Event occured.  EventID: 0xC25A001D
            Time Generated: 2/10/2012   02:05:11
            Event String: The time provider NtpClient is configured to
         An Error Event occured.  EventID: 0xC25A001D
            Time Generated: 2/10/2012   02:10:51
            Event String: The time provider NtpClient is configured to
         ……………………. SRVDC1 failed test systemlog
   Running partition tests on : Schema
      Starting test: DeadCRTest
         ……………………. Schema passed test DeadCRTest
      Starting test: CheckSDRefDom
         ……………………. Schema passed test CheckSDRefDom
   Running partition tests on : Configuration
      Starting test: DeadCRTest
         ……………………. Configuration passed test DeadCRTest
      Starting test: CheckSDRefDom
         ……………………. Configuration passed test CheckSDRefDom
   Running partition tests on : RADIANS-DOM
      Starting test: DeadCRTest
         ……………………. RADIANS-DOM passed test DeadCRTest
      Starting test: CheckSDRefDom
         ……………………. RADIANS-DOM passed test CheckSDRefDom
   Running enterprise tests on : RADIANS-DOM.radians.com.ar
      Starting test: Intersite
         ……………………. RADIANS-DOM.radians.com.ar passed test Intersite
      Starting test: FsmoCheck
         ……………………. RADIANS-DOM.radians.com.ar passed test FsmoCheck

Algún error de los roles FSMO podría ser:

      Starting test: FsmoCheck
         Warning: DcGetDcName(GC_SERVER_REQUIRED) call failed, error 1717
         A Global Catalog Server could not be located – All GC’s are down.
         Warning: DcGetDcName(PDC_REQUIRED) call failed, error 1717
         A Primary Domain Controller could not be located.
         The server holding the PDC role is down.
         Warning: DcGetDcName(TIME_SERVER) call failed, error 1717
         A Time Server could not be located.
         The server holding the PDC role is down.
         Warning: DcGetDcName(GOOD_TIME_SERVER_PREFERRED) call failed, error 1717
         A Good Time Server could not be located.
         Warning: DcGetDcName(KDC_REQUIRED) call failed, error 1717
         A KDC could not be located – All the KDCs are down.
         ……………………. RADIANS-DOM.radians.com.ar failed test FsmoCheck

También tenemos disponibles algunos fixes, como ser (si es que no tenemos el SP1 en Windows Server 2008):

En definitiva, esta herramienta es sumamente importante para los diagnósticos, y fundamentalmente para los administradores de DNS y para los administradores de controladores de dominio. Incluye funciones de réplica para identificar configuraciones de seguridad que pueden hacer que la réplica de Active Directory tenga errores.  Y no debemos dejarla de lado, ya que cuando realmente tengamos un problema grave, esta herramienta será nuestro principal aliado para arreglarlo.

Espero que les sea de interés y utilidad. Saludos, Roberto Di Lello.

Mas Información:

Roberto Di Lello

Acerca del autor: Roberto Di Lello

Hola, soy Roberto Di Lello trabajo como Consultor Senior en Infraestructura, especializado en Tecnologias Microsoft con mas de 25 años en la industria. He sido galardonado como MS-MVP en Active Directory-Enterprise Mobility por 10 años, y actualmente soy MVP Windows Insider, ademas de poseer otras certificaciones de Microsoft. He trabajado en distintos projectos que involucran Migraciones, Implementaciones, y soporte de Active Directory y Microsoft Exchange, y en los ultimos años me he desempeñado armando equipos de trabajo para diferentes paises y areas de sistemas, he planificado a distintas migraciones a datacenters (ambiente cloud y mixtos). He tenido la oportunidad de participar como miembro del staff de Microsoft en eventos internacionales como ser TechEd NorteAmerica y MS Ignite (NA) al ser Trainer Certificado por Microsoft (MCT).

You May Also Like

9 Comments

  1. Hola, he corrido dcidga contra un par de DCs del mismo dominio, ubicados en el mismo site y en uno de ellos (DC2) obtengo un “failed test kccevent” no ocurre lo mismo en DC1 que es el FSMO master Role, como puedo “corregir” ese erroe en DC2. He buscado info pero no logro dar con la solucion o por lo menos saber si puedo omitir el mensaje de error, las replicas entre DCs no presentan problemas,

    saludos

    Serba

  2. Serba, disculpa mi demora en contestar pero estoy poniendome al dia con todos los mails y consultas via Web que tengo pendientes.

    Esto esta relacionado con la replicación, es la prueba de kccevent. Esta prueba se utiliza para asegurarse de que el Knowledge Consistency Checker (KCC) está funcionando, y que está terminando, sin producir ningún error. Podes ejecutar el test con el comando: DCDIAG /Test:KCCEvent

    Fijate si tenes algun evento asociado en el eventviewer; y realiza un chequeo de la replicacion con el repadmin.

    Aprovecho la oportunidad para agradecerte por participar del blog y ayudar a que siga creciendo! Te pido que difundas la direccion del mismo asi podeos llegar a mas gente. Te cuento que hay mucho material en el. Te invito a que veas los labs, videos, tutoriales, notas. Si querés buscar un tema o necesitas ayuda, tenés la solapa AYUDA donde explico un poco como hacerlo, sino también tenés el buscador de google.

    Saludos y gracias!

  3. Tengo bajo Windows 2003 PDC y varios SDC, en sitios y servicios la replicacion manual no da errores, pero si el PDC esta fuera de linea desde los SDC no puedo iniciar sesion, y si logro inicar sesion al abrir el AD me da error que no se puede conectar con el PDC lo cual no me sirve dado que quiero tener redundancia pero algo no esta bien. De que manera puedo resolverlo? Gracias.

  4. Julian Talin, muchas gracias por participar. Disculpa mi demora en contestar pero tuve serios problemas con los mails que recibo del blog y recien los pude recuperar.

    Respecto a tu pregunta; tenes algun evento asociado? a que te referis por SDC??? por otro lado como tenes configurado los sites links y las redes? No hay replciaciones Offline de los DCs. Los DCs de las branch offices debe estar conectados de alguna forma a los DCs en la oficina central. Para garantizar la alta disponibilidad de los servicios de AD/DNS cuando la conexion WAN esta caida, podrias:
    * Configurar el DC de la branch office como DNS/GC
    * Instalar un RODC/DNS con el password caching habilitado
    Luego deberias dejar que repliquen sin inconvenientes y si los problemas de conectividad persisten por un tiempo, no deberias tenes problemas. Igualmente te paso informacion adicional que puede ayudarte.
    * How Active Directory Replication Topology Works http://technet.microsoft.com/en-us/library/cc755994%28WS.10%29.aspx#w2k3tr_repto_how_bwzg

    Aprovecho la oportunidad para agradecerte por participar del blog y ayudar a que siga creciendo; y te pido que nos ayudes a difundirlo con tus amigos y contactos! Te cuento que hay mucho material en el. Te invito a que veas los labs, videos, tutoriales, notas. Si querés buscar un tema o necesitas ayuda, tenés la solapa AYUDA donde explico un poco como hacerlo, sino también tenés el buscador de google. Saludos!

  5. Hola; primero felicitarte por tu blog.. es excelente la ayuda que nos brindas.
    Te cuento que tengo dos controladores de dominio en Windows Server 2008 R2, y deseo degradar uno por estar en un equipo muy antiguo. y me sale el error:
    Iniciando prueba: CheckSecurityError
    Se solicitó una comprobación de errores de seguridad manual para el DC de origen SRVDC02. Diagnosticando…
    Error: NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS no tiene Replicating Directory Changes In Filtered Set derechos de acceso para el contexto de nomenclatura:
    CN=Schema,CN=Configuration,DC=multitop,DC=local
    Error: NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS no tiene Replicating Directory Changes In Filtered Set derechos de acceso para el contexto de nomenclatura:
    CN=Configuration,DC=multitop,DC=local
    Error: NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS no tiene Replicating Directory Changes In Filtered Set
    derechos de acceso para el contexto de nomenclatura:
    DC=multitop,DC=local
    ……………………. SRVDC02 no superó la prueba
    CheckSecurityError

    Saludos y Gracis!!!!,

  6. Kid Rivera Valera, disculpa mi demora en contestar pero estuve con algunos temas de salud, y estoy medio complicado con los tiempos y voy respondiendo de a poco a medida que puedo. Cuando tengas asi algo muy urgente escribime tambien por twitter. Justo se junto que tambien que cambie de trabajo y estoy con estos cambios y adaptaciones de los tiempos.

    Respecto a tu pregunta, te paso unas notas para que lo verifques:
    * Known Issues for Installing and Removing AD DS http://technet.microsoft.com/en-us/library/cc754463.aspx
    * Dcdiag fails for NCSecDesc test on Windows 2008 Domain Controllers http://support.microsoft.com/kb/967482

    Auqneu basicamente si estas pensando en despromoverlo, lo que puedes hacer es verificar que esten todos los roles fsmo en otro equipo y forzar la despromocion y luego verificar el estado de la metadata (en el blog esta el video de como hacerlo).

    Aprovecho la oportunidad para agradecerte por participar del blog y ayudar a que siga creciendo! Te pido que difundas la direccion del sitio y mi twitter @RaDiansBlog, asi sumamos mas gente. Te cuento que hay mucho material en el. Te invito a que veas los labs, videos, tutoriales, notas. Si querés buscar un tema o necesitas ayuda, tenés la solapa AYUDA donde explico un poco como hacerlo, sino también tenés el buscador de google.

    Saludos y gracias!

  7. Hola , este blog es excelente , muchas gracias por tenerlo , tengo un problema de replica , tratare de explicartelo lo mas entendible que pueda y es el siguiente :

    nosotros tenemos 2 DC , el principal (DC1 ) y su replica DC2 ( por asi decirlo) en caso de que se caiga el principal y tenemos otros 2 , un dominio hijo ( o subdominio ) el principal o DC3 y su ( replica que seria el DC4 ) , pero he visto que el DC3 (hijo) me salen errores de replicación 2042 y 2092 , pero en sites and services veo los 3 DC restantes DC1 , DC2 y DC4, le doy replicar al DC1 y DC2 y aparentemente si replica , digo aparentemente porque no me manda error ahi , pero en el visor de eventos me pone los errores 2042 y 2092 , pero si le doy replicar al otro DC hijo ( DC4 ) ahi si me manda error de que no puede replicar , por el contrario , entro al DC4 (hijo) y ahi solo veo 2 DC , el DC1 y DC3 (hijo principal) , pero no veo al DC2 le doy replicar y ahi si me acepta las replicas a esos 2 DC. ( o sea al DC3 ) pero del DC3 al DC4 no acepta la replica , aunque tambien en este DC4 en el visor de eventos manda el error 2042 de replicación ,
    le he corrido los test de prueba al DC3 ( hijo ) y me manda el siguiente error en 2 test , en el dcdiag /test:kccevent : DC failed test kccevent

    y en el test:dns al principio me dice que paso el testdns : DC passed test DNS , pero al final del reporte o prueba me sale lo siguiente : DC pass warn fail n/a warn pass n/a………. dominio failed test DNS.

    he corrido tambien el dcdiag solo y el unico error que me marca es de replicación hacia el otro DC (hijo) y error en systemlog.

    tambien le he corrido test al DC4 y ahi si paso todos excepto en el dcdiag ma mando error en systemlog.

    pues es un poco larga la historia , pero antes de hacer algo y por lo que he investigado ( tal vez tendria que despromover y volver a levantar el DC3 ) pero quisiera tu opinion y ver o saber si hay alguna otro solución

    muchas gracias y saludos.

    muchas gracias y saludos.

  8. Juan M26, disculpa mi demora en contestar pero estuve muy complicado con varios temas de trabajo, con el cambio de empresa he estado muy tapado de trabajo, pero voy respondiendo de a poco a medida que puedo y voy a responder todas las consultas.

    Respecto a tu pregunta, te he escrito a tu mail, pero no se si te llega. En tu caso hay que ver como replica, y quien con que. Si en general el DC esta bien no deberias tener que reinstalarlo. Verifica como esta la replicacion configurada, es decir, quien con quien replica. Una vez verificado esto deberiamos ver puntualmente como esta la replicacion con el repadmin; y luego en todo caso verificar los dcs con el dcdiag.

    Espero que esto conteste tu pregunta, cualquier cosa volve a escribirme. Aprovecho la oportunidad para agradecerte por participar del blog y ayudar a que siga creciendo! Te pido que difundas la direccion del sitio y mi twitter @RaDiansBlog, asi sumamos mas gente. Te invito a que veas los labs, videos, tutoriales, notas. Si querés buscar un tema o necesitas ayuda, tenés la solapa AYUDA donde explico un poco como hacerlo, sino también tenés el buscador de google.

    En 2014 debido a nuevas disposiciones de la ley Argentina debo afrontar distintos gastos para mantener el blog en funcionamiento. Si te parecio util la informacion del blog hace click en el boton “DONATE”

    Seguimos en contacto! Saludos y gracias!

Comments are closed.