Trova il nome del controller di dominio Active Directory


Risposte:


147

Su qualsiasi computer che abbia il DNS configurato per utilizzare il server DNS di AD fare:

  • Avvia -> Esegui -> nslookup

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

Sostituisci DOMAIN_NAME con il nome di dominio effettivo, ad esempio esempio.com . Leggi di più qui .


Nella risposta sopra, inserendo set type = all (in nslookup) puoi vedere i record DNS SRV. Potresti anche aver digitato "set type = SRV", i record SRV sono il modo in cui AD si pubblicizza sulla rete
Les

Ho corso questo e ottenuto _ldap._tcp.dc._msdcs.UnKnown. Che cosa significa sconosciuto ?
jp2code,

64

Per un computer membro di un dominio, la variabile di ambiente LOGONSERVER contiene il nome del controller di dominio che ha autenticato l'utente corrente. Questo ovviamente non sarà per tutti i controller di dominio in un ambiente multi-controller, ma se tutto ciò che desideri è un modo rapido per trovare il nome di un controller di dominio, quindi da una shell dei comandi:

set l <enter>

Restituirà tutte le variabili di ambiente che iniziano con "L" incluso il nome di un controller di dominio.


5
+1 per semplicità. Dopo aver ottenuto il nome del controller di dominio, esegui il ping per ottenere l'IP.
Bigbio2002

2
semplice sì, ma se hai una connessione VPN alla rete che ti interessa, LOGONSERVER non te lo dà. La risposta accettata ti darà il server giusto in tutti i casi che mi vengono in mente.
Les,

1
Non è perfetto, ma a volte è anche importante sapere come fare qualcosa che è abbastanza buono in fretta. Inoltre non riesce per gli accessi locali ma non l'ho mai verificato tramite VPN, buono a sapersi, grazie.
Helvick,

35

Un'opzione non menzionata, super facile e rapida è quella di eseguire questo da un prompt dei comandi:

nltest /dclist:domainname

Sostituisci semplicemente "domainname" con il tuo dominio

Puoi anche eseguire alcune altre opzioni per saperne di più:

/dcname:domainnameottiene il nome PDC per il dominio /dsgetdc:domainnameha flag per altre informazioni

Prova nltest /?nel tuo prompt per ottenere più opzioni! :)


C:\> nltest /dclist:domainname Cannot find DC to get DC list from.Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN The command completed successfully Cosa significa?
jp2code,

1
Sostituisci domainname con il nome del tuo dominio
Abraxas,

Oh. Questo è quello che pensavo che questo avrebbe trovato per me.
jp2code,

Questo è stato molto utile per me perché [Bash # host -t srv _ldap._tcp.MYCOMPANY] ha dichiarato che il dominio non è stato trovato. [CMD: \> nltest / dclist: MYCOMPANY] mi ha detto che il nome di dominio era corp.ad.mycompany.com e quindi sono stato in grado di utilizzare tali informazioni per far funzionare gli altri comandi. [Bash # host -t srv _ldap._tcp.corp.ad.mycompany.com] quindi ha funzionato
neokyle

21

Ciò restituirà il controller di dominio più vicino in Powershell:

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

17

Da un prompt dei comandi, eseguire gpresult. Otterrete:

  • Informazioni generali sulla workstation e sul dominio
  • Sia per il computer che per l' utente :
    • Nome distinto in AD e da quale DC è stata applicata la politica
    • Oggetti Criteri di gruppo applicati
    • Elenco dei gruppi di sicurezza di cui un membro

Ecco un esempio di output di corsagpresult . È inoltre possibile specificare gpresult /zper ottenere informazioni più dettagliate.


5
Wow, gpresult /Zgenera MOLTI dati. Grazie.
friederbluemle,

10

DNS e DHCP sono il modo migliore per verificare poiché nella rete possono essere presenti macchine Unix / Linux gestite dal controller di dominio AD o che fungono da controller di dominio.

Inoltre, considerando active directory non è altro che la versione Microsoft di Kerberos, LDAP, dhcp e dns. Sarebbe meglio comprendere ed eseguire il debug delle cose ai livelli inferiori rispetto al livello 7+. Questo perché il sistema operativo preformerebbe queste stesse richieste e la RFC sottolineata per ciascun protocollo funziona effettivamente a livello di OSI e non a livello di "inserire lo strumento preferito qui".

Si può fare un passo ulteriore e interrogare il DHCP per le opzioni di 6, 15, e 44 per ottenere il nome di dominio , server dei nomi di dominio e server dei nomi WINS / NetBIOS .

Quindi utilizzare dns per verificare i record SRV _kerberos._tcp, _kpasswd._tcp, _LDAP._TCP.dc._msdcs e _ldap._tcp:

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

Questo si suddivide in tre aree, due sono record DNS-SD supportati dal protocollo:

  • _kerberos._tcpe _kpasswd._tcp(anche in UNIX / Linux / OSX + alcune reti Windows hanno _kadmin._tcp) sono per Kerberos
  • _ldap._tcpè per ldap (openldap, opendc, directory sun / oracle, ms ad) _LDAP._TCP.dc._msdcsè l'unica estensione Microsoft a ldap per mappare il controller di dominio.

2

CMD grezzo

Trova i nomi DC

Salva come GetDcNames.cmd:

nslookup -type=any %userdnsdomain%.

Esegui come: GetDcNames.cmd.

(Nota: il punto finale in "% userdnsdomain%." È apposta. Impedisce a nslookup locale di utilizzare qualsiasi stringa del percorso di ricerca DNS.)

Trova altri domini DNS relativi all'AD

Ho creato un file batch rapido e sporco, in modo da non dover ricordare i nomi di dominio DNS e / o digitarli tutti. (L'elenco potrebbe non essere completo.)

Funziona da macchine unite al dominio. Se il tuo computer non ha un dominio, devi impostare manualmente USERDNSDOMAIN su quello che desideri.

Salva come 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%.

Esegui come TestAdDnsRecords.cmd | more. C'è molto output di testo.

fonti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.