Encontrar el nombre del controlador de dominio de Active Directory

Respuestas:

147

En cualquier computadora que tenga DNS configurado para usar el servidor DNS de AD, haga lo siguiente:

  • Inicio -> Ejecutar -> nslookup

    set type=all
    _ldap._tcp.dc._msdcs.DOMAIN_NAME
    

Reemplace DOMAIN_NAME con el nombre de dominio real, por ejemplo, ejemplo.com . Lee más aquí .

blank3
fuente
En la respuesta anterior, ingresar set type = all (en nslookup) le permite ver registros DNS SRV. También podría haber escrito "set type = SRV", los registros SRV son como AD se anuncia en la red
Les
Corrí esto y conseguí _ldap._tcp.dc._msdcs.UnKnown. ¿Qué significa UnKnown ?
jp2code
64

Para una computadora que es miembro de un dominio, el LOGONSERVER variable de entorno contiene el nombre del DC que autenticó al usuario actual. Obviamente, esto no será todo DC en un entorno de DC múltiple, pero si todo lo que desea es una forma rápida de encontrar el nombre de un controlador de dominio, entonces desde un shell de comandos:

set l <enter>

Devolverá todas las variables de entorno que comienzan con "L", incluido el nombre de un DC.

Helvick
fuente
55
+1 por simplicidad. Después de obtener el nombre de DC, simplemente haga ping para obtener la IP.
Bigbio2002
2
simple sí, pero si tiene una conexión VPN a la red que le interesa, LOGONSERVER no le da eso. La respuesta aceptada le dará el servidor correcto en todos los casos que se me ocurran.
Les
1
No es perfecto, pero a veces también es importante saber cómo hacer algo que sea lo suficientemente bueno lo suficientemente rápido. También falla para los inicios de sesión locales, pero nunca lo revisé a través de VPN, es bueno saberlo, gracias.
Helvick
35

Una opción no mencionada, súper fácil y rápida es ejecutar esto desde un símbolo del sistema:

nltest /dclist:domainname

Simplemente reemplace 'domainname' con su dominio

También puede ejecutar algunas otras opciones para obtener más información:

/dcname:domainnameobtiene el nombre PDC para el dominio /dsgetdc:domainnametiene banderas para otra información

¡Pruebe nltest /?en su solicitud para obtener más opciones! :)

Abraxas
fuente
C:\> nltest /dclist:domainname Cannot find DC to get DC list from.Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN The command completed successfully Qué significa eso?
jp2code
1
Reemplace domainname con el nombre de su dominio
Abraxas
Oh. Eso es lo que pensé que esto iba a encontrar para mí.
jp2code
Esto fue muy útil para mí porque [Bash # host -t srv _ldap._tcp.MYCOMPANY] dijo que no se encontró el dominio. [CMD: \> nltest / dclist: MYCOMPANY] me dijo que el nombre de dominio era corp.ad.mycompany.com, y luego pude usar esa información para que los otros comandos funcionen. [Bash # host -t srv _ldap._tcp.corp.ad.mycompany.com] luego funcionó
neokyle
21

Esto devolverá su controlador de dominio más cercano en Powershell:

Import-Module ActiveDirectory
(Get-ADDomainController -DomainName <Domain FQDN> -Discover -NextClosestSite).HostName
Mark Henderson
fuente
17

Desde un símbolo del sistema, ejecute gpresult. Conseguirás:

  • Información general sobre estaciones de trabajo y dominios
  • Tanto para la computadora como para el usuario :
    • Nombre distinguido en AD y desde qué DC se aplicó la política
    • Objetos de directiva de grupo aplicados
    • Lista de grupos de seguridad de los que es miembro

Aquí hay un ejemplo de salida de ejecucióngpresult . También puede especificar gpresult /zpara obtener información más detallada.

ErikE
fuente
55
Wow, gpresult /Zgenera MUCHOS datos. Gracias.
friederbluemle
10

DNS y DHCP son la mejor manera de verificar, ya que puede haber máquinas Unix / Linux en la red administradas por el controlador de dominio AD o actuando como controlador de dominio.

Además, considerar el directorio activo no es más que la versión de Kerberos, LDAP, dhcp y dns de Microsoft. Sería mejor entender y depurar las cosas en capas inferiores que la capa 7+. Esto se debe a que el sistema operativo realizaría estas mismas solicitudes y el RFC subyacente para cada protocolo en realidad opera en un nivel OSI, no en el nivel "insertar herramienta favorita aquí".

Uno puede ir un paso más allá y consultar el DHCP para opciones 6, 15, y 44 para obtener el nombre de dominio , servidor de nombres de dominio y servidor de nombres WINS / NetBIOS .

Luego, use dns para verificar los registros _kerberos._tcp, _kpasswd._tcp, _LDAP._TCP.dc._msdcs y _ldap._tcp SRV:

nslookup -type=srv _kerberos._tcp.EXMAPLE.COM
nslookup -type=srv _kpasswd._tcp.EXAMPLE.COM
nslookup -type=srv _ldap._tcp.EXAMPLE.COM
nslookup -type=srv _ldap._tcp.dc._msdcs.EXAMPLE.COM

.EXAMPLE.COM ::= value returned from dhcp option-1

Esto se divide en tres áreas, dos son registros DNS-SD compatibles con el protocolo:

  • _kerberos._tcpy _kpasswd._tcp(también bajo UNIX / Linux / OSX + algunas redes Windows tiene _kadmin._tcp) son para kerberos
  • _ldap._tcpes para ldap (openldap, opendc, directorio sun / oracle, ms ad) _LDAP._TCP.dc._msdcses la única extensión de Microsoft para ldap para asignar el controlador de dominio.
Dwight Spencer
fuente
2

CMD crudo

Solo busca los nombres de DC

Guardar como GetDcNames.cmd:

nslookup -type=any %userdnsdomain%.

Ejecutar como: GetDcNames.cmd.

(Nota: El punto final en "% userdnsdomain%." Es a propósito. Impide que su nslookup local use cualquier cadena de ruta de búsqueda DNS).

Encuentra más dominios DNS relacionados con AD

Creé un archivo por lotes rápido y sucio, para no tener que recordar los nombres de dominio DNS y / o tener que escribirlos todos. (La lista puede no estar completa).

Funciona desde máquinas unidas al dominio. Si su máquina no está unida al dominio, debe configurar manualmente USERDNSDOMAIN a lo que desea.

Guardar como TestAdDnsRecords.cmd:

@setlocal
@REM Test AD DNS domains for presence.
@REM For details see: http://serverfault.com/a/811622/253701

nslookup -type=srv _kerberos._tcp.%userdnsdomain%.
nslookup -type=srv _kerberos._udp.%userdnsdomain%.
@echo .

nslookup -type=srv _kpasswd._tcp.%userdnsdomain%.
nslookup -type=srv _kpasswd._udp.%userdnsdomain%.
@echo .

nslookup -type=srv _ldap._tcp.%userdnsdomain%.
@echo .

nslookup -type=srv _ldap._tcp.dc._msdcs.%userdnsdomain%.
@echo .

nslookup -type=srv _ldap._tcp.pdc._msdcs.%userdnsdomain%.
@echo .

@REM Those next few lines here are forest specific:
@REM Change the next line your current domain is not also the forest root.
@SET "DNSFORESTNAME=%USERDNSDOMAIN%"

nslookup -type=srv _ldap._tcp.gc._msdcs.%DNSFORESTNAME%.
@echo .

nslookup -type=srv _gc._tcp.%DNSFORESTNAME%.

Corre como TestAdDnsRecords.cmd | more. Hay mucha salida de texto.

Fuentes

StackzOfZtuff
fuente