Encontre o nome do controlador de domínio do Active Directory

Respostas:

147

Em qualquer computador com DNS configurado para usar o servidor DNS do AD, faça:

  • Iniciar -> Executar -> nslookup

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

Substitua DOMAIN_NAME pelo nome de domínio real, por exemplo, example.com . Leia mais aqui .

blank3
fonte
Na resposta acima, digitar set type = all (em nslookup) permite que você veja os registros DNS SRV. Você também pode ter digitado "set type = SRV", registros SRV são como AD anuncia-se na rede
Les
Eu corri isso e consegui _ldap._tcp.dc._msdcs.UnKnown. O que significa UnKnown ?
jp2code
64

Para um computador membro de um domínio, a variável de ambiente LOGONSERVER contém o nome do controlador de domínio que autenticou o usuário atual. Obviamente, isso não será todos os controladores de domínio em um ambiente com vários controladores de domínio, mas se tudo o que você deseja é uma maneira rápida de encontrar o nome de um controlador de domínio, em um shell de comando:

set l <enter>

Retornará todas as variáveis ​​de ambiente que começam com "L", incluindo o nome de um controlador de domínio.

Helvick
fonte
5
+1 por simplicidade. Depois de obter o nome do controlador de domínio, faça ping apenas para obter o IP.
Bigbio2002
2
simples sim, mas se você tiver uma conexão VPN à rede em que está interessado, o LOGONSERVER não fornecerá isso. A resposta aceita fornecerá o servidor certo em todos os casos em que posso pensar.
Les
11
Não é perfeito, mas às vezes é importante também saber fazer algo que é bom o suficiente rapidamente. Também falha nos logons locais, mas nunca verifiquei pela VPN, é bom saber, obrigado.
Helvick
35

Uma opção não mencionada, super fácil e rápida é executar isso em um prompt de comando:

nltest /dclist:domainname

Apenas substitua 'domainname' pelo seu domínio

Você também pode executar algumas outras opções para descobrir mais:

/dcname:domainnameobtém o nome do PDC para o domínio /dsgetdc:domainnamepossui sinalizadores para outras informações

Tente nltest /?no seu prompt para obter mais opções! :)

Abraxas
fonte
C:\> nltest /dclist:domainname Cannot find DC to get DC list from.Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN The command completed successfully O que isso significa?
Jp2code
11
Substitua domainname pelo nome do seu domínio
Abraxas 12/10
Oh. Foi o que achei que isso iria encontrar para mim.
Jp2code
Isso foi super útil para mim porque [Bash # host -t srv _ldap._tcp.MYCOMPANY] disse que o domínio não foi encontrado. [CMD: \> nltest / dclist: MYCOMPANY] me disse que o nome de domínio era corp.ad.mycompany.com e, em seguida, pude usar essas informações para fazer os outros comandos funcionarem. [Bash # host -t srv _ldap._tcp.corp.ad.mycompany.com] então funcionou
neokyle
21

Isso retornará o seu controlador de domínio mais próximo no Powershell:

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

Em um prompt de comando, execute gpresult. Você vai ter:

  • Informações gerais sobre estação de trabalho e domínio
  • Para o computador e o usuário :
    • Nome distinto no AD e de qual CD a política foi aplicada
    • Objetos de Diretiva de Grupo Aplicados
    • Lista de grupos de segurança dos quais um membro

Aqui está um exemplo de saída da execuçãogpresult . Você também pode especificar gpresult /zpara obter informações mais detalhadas.

ErikE
fonte
5
Uau, gpresult /Zgera muitos dados. Obrigado.
Friederbluemle
10

DNS e DHCP são a melhor maneira de verificar, pois pode haver máquinas Unix / Linux na rede gerenciadas pelo controlador de domínio do AD ou atuando como o controlador de domínio.

Além disso, considerar o diretório ativo nada mais é do que a versão da Microsoft de Kerberos, LDAP, dhcp e dns. Seria melhor entender e depurar as coisas nas camadas inferiores do que a camada 7 ou superior. Isso ocorre porque o sistema operacional executaria essas mesmas solicitações e a RFC subjacente para cada protocolo realmente opera em um nível OSI e não no nível "inserir ferramenta favorita aqui".

Pode-se dar um passo adiante e consultar o dhcp para opções de 6, 15 e 44 para obter o nome de domínio , servidor de nomes de domínio e servidor de nomes WINS / NetBIOS .

Em seguida, use o dns para verificar os registros SRV _kerberos._tcp, _kpasswd._tcp, _LDAP._TCP.dc._msdcs e _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

Isso divide-se em três áreas, duas são protocolos DNS-SD suportados por protocolo:

  • _kerberos._tcpe _kpasswd._tcp(também no UNIX / Linux / OSX + que algumas redes Windows possuem _kadmin._tcp) são para kerberos
  • _ldap._tcpé para ldap (openldap, opendc, diretório sun / oracle, ms ad) _LDAP._TCP.dc._msdcsé a única extensão da Microsoft para ldap para mapear o controlador de domínio.
Dwight Spencer
fonte
2

CMD bruto

Basta encontrar nomes de DC

Salvar como GetDcNames.cmd:

nslookup -type=any %userdnsdomain%.

Executar como: GetDcNames.cmd.

(Nota: o ponto final em "% userdnsdomain%." É intencional. Ele impede que o seu nslookup local use qualquer sequência de caminho de pesquisa DNS.)

Encontre mais domínios DNS relacionados ao AD

Criei um arquivo em lotes rápido e sujo, para não precisar lembrar os nomes de domínio DNS e / ou digitar todos eles. (A lista pode não estar completa.)

Funciona a partir de máquinas ingressadas no domínio. Se sua máquina não ingressou no domínio, você deve definir manualmente USERDNSDOMAIN para o que deseja.

Salvar 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%.

Executar como TestAdDnsRecords.cmd | more. Há muita saída de texto.

Fontes

StackzOfZtuff
fonte