Rechercher le nom du contrôleur de domaine Active Directory

Réponses:

147

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 actuel, par exemple exemple.com . Lire la suite ici .

blanc3
la source
Dans la réponse ci-dessus, entrer set type = all (dans nslookup) vous permet de voir les enregistrements DNS SRV. Vous pourriez également avoir tapé "set type = SRV". Les enregistrements SRV sont la façon dont AD s’annonce sur le réseau
Les
J'ai couru ça et j'ai _ldap._tcp.dc._msdcs.UnKnown. Que signifie UnKnown ?
jp2code
64

Pour un ordinateur membre d'un domaine, la variable d'environnement LOGONSERVER contient le nom du contrôleur de domaine qui a authentifié l'utilisateur actuel. Cela ne va évidemment pas concerner tous les contrôleurs de domaine dans un environnement multi-contrôleurs, mais si tout ce que vous voulez est un moyen rapide de trouver le nom d'un contrôleur de domaine, utilisez un interpréteur de commande:

set l <enter>

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

Helvick
la source
5
+1 pour la simplicité. Après avoir obtenu le nom du contrôleur de domaine, envoyez-lui une requête ping pour obtenir l'adresse IP.
Bigbio2002
2
oui, mais si vous avez une connexion VPN au réseau qui vous intéresse, LOGONSERVER ne vous le donnera pas. La réponse acceptée vous donnera le bon serveur dans tous les cas auxquels je peux penser.
Les
1
Ce n'est pas parfait, mais il est parfois important de savoir comment faire quelque chose d'assez bien assez rapidement. Il échoue également pour les connexions locales mais je ne l'ai jamais vérifié via VPN, c'est bon à savoir, merci.
Helvick
35

Une option peu mentionnée, très facile et rapide consiste à exécuter cette opération à partir d'une invite de commande:

nltest /dclist:domainname

Il suffit de remplacer 'domainname' par votre domaine

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

/dcname:domainnameobtient le nom du PDC pour le domaine /dsgetdc:domainnamea des drapeaux pour d'autres informations

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

Abraxas
la source
C:\> nltest /dclist:domainname Cannot find DC to get DC list from.Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN The command completed successfully Qu'est-ce que ça veut dire?
jp2code
1
Remplacez le nom de domaine par le nom de votre domaine
Abraxas
Oh. C'est ce que je pensais que cela allait me trouver.
jp2code
C'était super utile pour moi parce que [Bash # host -t srv _ldap._tcp.MYCOMPANY] a dit domaine introuvable. [CMD: \> nltest / dclist: MYCOMPANY] m'a dit que le nom de domaine était corp.ad.mycompany.com, puis j'ai pu utiliser cette information pour faire fonctionner les autres commandes. [Bash # host -t srv _ldap._tcp.corp.ad.mycompany.com] a ensuite travaillé
neokyle le
21

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

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

À partir d'une invite de commande, 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 à quel pays la politique a été appliquée à partir de
    • Objets de stratégie de groupe appliqués
    • Liste des groupes de sécurité membres de

Voici un exemple de sortie de runninggpresult . Vous pouvez également spécifier gpresult /zpour obtenir des informations plus détaillées.

ErikE
la source
5
Wow, gpresult /Zsort beaucoup de données. Merci.
friederbluemle
10

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ées par le contrôleur de domaine AD ou agissant en tant que contrôleur de domaine.

De plus, considérer Active Directory n’est rien d’autre que la version de Kerberos, LDAP, DHCP et DNS de Microsoft. Il serait préférable de comprendre et de déboguer les choses des couches inférieures que de la couche 7+. Cela est dû au fait que le système d’exploitation répondrait à ces mêmes demandes et que le RFC souligné de chaque protocole fonctionne en fait au niveau OSI et non au niveau "insérer l’outil favori ici".

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

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

Cela se décompose en trois zones, dont deux sont des enregistrements DNS-SD supportés par protocole:

  • _kerberos._tcpet _kpasswd._tcp(également sous UNIX / Linux / OSX + certains réseaux Windows a _kadmin._tcp) sont pour Kerberos
  • _ldap._tcpest pour ldap (openldap, opendc, répertoire sun / oracle, ms ad) _LDAP._TCP.dc._msdcsest la seule extension Microsoft à ldap pour mapper le contrôleur de domaine.
Dwight Spencer
la source
2

CMD brut

Il suffit de trouver les noms DC

Enregistrer sous GetDcNames.cmd:

nslookup -type=any %userdnsdomain%.

Exécuter en tant que: GetDcNames.cmd.

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

Trouvez d'autres domaines DNS liés à AD

J'ai préparé un fichier de commandes rapide et sale, de sorte que je n'ai pas à me souvenir des noms de domaine DNS et / ou à tous les taper. (La liste peut ne pas être complète.)

Fonctionne depuis des machines jointes à un domaine. Si votre ordinateur n'est pas associé à un domaine, vous devez définir manuellement USERDNSDOMAIN sur votre choix.

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 en tant que TestAdDnsRecords.cmd | more. Il y a beaucoup de sortie de texte.

Sources

StackzOfZtuff
la source