web-dev-qa-db-fra.com

Rechercher le nom du contrôleur de domaine Active Directory

Comment connaître le nom/l'adresse IP du contrôleur de domaine AD sur mon réseau?

131
user18682

Sur tout ordinateur sur lequel DNS est configuré pour utiliser le serveur DNS d'AD, procédez comme suit:

  • Démarrer -> Exécuter -> nslookup

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

Remplacez DOMAIN_NAME par le nom de domaine réel, par exemple example.com. En savoir plus ici .

150
blank3

Pour un ordinateur membre d'un domaine, la variable d'environnement LOGONSERVER contient le nom de DC qui a authentifié l'utilisateur actuel. Cela ne va évidemment pas être tous les DC dans un environnement multi-DC mais si tout ce que vous voulez est un moyen rapide de trouver le nom d'un contrôleur de domaine, puis à partir d'une commande Shell:

set l <enter>

Renvoie toutes les variables d'environnement commençant par "L", y compris le nom d'un contrôleur de domaine.

66
Helvick

Une option non mentionnée, super facile et rapide consiste à l'exécuter à partir d'une invite de commande:

nltest /dclist:domainname

Remplacez simplement 'domainname' par votre domaine

Vous pouvez également exécuter d'autres options pour en savoir plus:

/dcname:domainname obtient le PDC nom du domaine /dsgetdc:domainname a des indicateurs pour d'autres informations

Essayez nltest /? dans votre invite pour obtenir plus d'options! :)

40
Abraxas

Cela renverra votre contrôleur de domaine le plus proche dans Powershell:

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

À partir d'une invite de commandes, exécutez gpresult. Tu auras:

  • Informations générales sur le poste de travail et le domaine
  • Pour l'ordinateur et l'utilisateur :
    • Nom distinctif dans AD et qui DC la politique a été appliquée à partir de
    • Objets de stratégie de groupe appliqués
    • Liste des groupes de sécurité dont un membre

Voici exemple de sortie de l'exécution de gpresult . Vous pouvez également spécifier gpresult /z pour obtenir des informations plus détaillées.

17
ErikE

DNS et DHCP sont le meilleur moyen de vérifier car il peut y avoir des machines Unix/Linux sur le réseau géré par le contrôleur de domaine AD ou agissant comme contrôleur de domaine.

De plus, considérant Active Directory n'est rien de plus que la version Microsoft de Kerberos, LDAP, dhcp et dns. Il serait préférable de comprendre et de déboguer les choses sur les couches inférieures que sur la couche 7+. Cela est dû au fait que le système d'exploitation préforme ces mêmes requêtes et que le RFC soulignant pour chaque protocole fonctionne réellement au niveau OSI et non au niveau "insérer l'outil préféré ici".

On peut aller plus loin et interroger le dhcp pour les options 6, 15 et 44 pour obtenir nom de domaine , serveur de nom de domaine , et Wins/NetBIOS serveur de noms .

Ensuite, utilisez dns pour vérifier les enregistrements _kerberos._tcp, _kpasswd._tcp, _LDAP._TCP.dc._msdcs et _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

Cela se décompose en trois zones, deux sont des enregistrements DNS-SD pris en charge par le protocole:

  • _kerberos._tcp et _kpasswd._tcp (également sous UNIX/Linux/OSX + certains réseaux Windows ont _kadmin._tcp) sont pour les kerberos
  • _ldap._tcp est pour ldap (openldap, opendc, répertoire Sun/Oracle, ms ad) _LDAP._TCP.dc._msdcs est la seule extension Microsoft à LDAP pour mapper le contrôleur de domaine.
10
Dwight Spencer

CMD brut

Trouvez simplement les noms DC

Enregistrer sous GetDcNames.cmd:

nslookup -type=any %userdnsdomain%.

Courir comme: GetDcNames.cmd.

(Remarque: le point de fin dans "% userdnsdomain%." Est intentionnel. Il empêche votre nslookup local d'utiliser des chaînes de chemin de recherche DNS.)

Trouver plus de domaines DNS liés à AD

J'ai concocté un fichier batch rapide et sale, de sorte que je n'ai pas à me souvenir des noms de domaine DNS et/ou à les saisir tous. (La liste n'est peut-être pas complète.)

Fonctionne à partir de machines jointes au domaine. Si votre machine n'est pas jointe au domaine, vous devez définir manuellement USERDNSDOMAIN sur ce que vous voulez.

Enregistrer sous 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%.

Courir comme TestAdDnsRecords.cmd | more. Il y a beaucoup de sortie de texte.

Sources

2
StackzOfZtuff