Comment connaître le nom/l'adresse IP du contrôleur de domaine AD sur mon réseau?
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 .
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.
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! :)
Cela renverra votre contrôleur de domaine le plus proche dans Powershell:
Import-Module ActiveDirectory
(Get-ADDomainController -DomainName <Domain FQDN> -Discover -NextClosestSite).HostName
À partir d'une invite de commandes, exécutez gpresult
. Tu auras:
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.
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.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.)
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.