Como posso descobrir o nome / endereço IP do controlador de domínio do AD na minha rede?
Como posso descobrir o nome / endereço IP do controlador de domínio do AD na minha rede?
Respostas:
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 .
_ldap._tcp.dc._msdcs.UnKnown
. O que significa UnKnown ?
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.
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:domainname
obtém o nome do PDC para o domínio
/dsgetdc:domainname
possui sinalizadores para outras informações
Tente nltest /?
no seu prompt para obter mais opções! :)
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?
Isso retornará o seu controlador de domínio mais próximo no Powershell:
Import-Module ActiveDirectory
(Get-ADDomainController -DomainName <Domain FQDN> -Discover -NextClosestSite).HostName
Em um prompt de comando, execute gpresult
. Você vai ter:
Aqui está um exemplo de saída da execuçãogpresult
. Você também pode especificar gpresult /z
para obter informações mais detalhadas.
gpresult /Z
gera muitos dados. Obrigado.
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._tcp
e _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.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.)
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.