Suchen Sie den Namen des Active Directory-Domänencontrollers

Antworten:

147

Auf jedem Computer, auf dem DNS für die Verwendung des DNS-Servers von AD konfiguriert ist, gehen Sie wie folgt vor:

  • Start -> Ausführen -> nslookup

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

Ersetzen Sie DOMAIN_NAME durch den tatsächlichen Domainnamen, z . B. example.com . Lesen Sie hier mehr .

blank3
quelle
In der obigen Antwort können Sie durch Eingabe von set type = all (in nslookup) DNS-SRV-Einträge anzeigen. Sie hätten auch "set type = SRV" eingeben können. SRV-Datensätze zeigen an, wie sich AD im Netzwerk bewirbt
Les
Ich lief das und bekam _ldap._tcp.dc._msdcs.UnKnown. Was bedeutet Unbekannt ?
jp2code
64

Für einen Computer, der Mitglied einer Domäne ist, enthält die Umgebungsvariable LOGONSERVER den Namen des Domänencontrollers, der den aktuellen Benutzer authentifiziert hat. Dies sind natürlich nicht alle Domänencontroller in einer Umgebung mit mehreren Domänencontrollern. Wenn Sie jedoch nur schnell den Namen eines Domänencontrollers ermitteln möchten, verwenden Sie eine Befehlsshell:

set l <enter>

Gibt alle Umgebungsvariablen zurück, die mit "L" beginnen, einschließlich des Namens eines DC.

Helvick
quelle
5
+1 zur Vereinfachung. Nachdem Sie den Namen des DC erhalten haben, pingen Sie ihn einfach an, um die IP zu erhalten.
Bigbio2002
2
Ja, einfach, aber wenn Sie eine VPN-Verbindung zu dem Netzwerk haben, an dem Sie interessiert sind, gibt Ihnen LOGONSERVER das nicht. Die akzeptierte Antwort gibt Ihnen in allen Fällen, die mir einfallen, den richtigen Server.
Les
1
Es ist nicht perfekt, aber manchmal ist es auch wichtig zu wissen, wie man etwas macht, das schnell genug gut ist. Es schlägt auch bei lokalen Anmeldungen fehl, aber ich habe es nie über VPN überprüft. Gut zu wissen, danke.
Helvick
35

Eine nicht erwähnte, supereinfache und schnelle Option besteht darin, dies an einer Eingabeaufforderung auszuführen:

nltest /dclist:domainname

Ersetzen Sie einfach "Domainname" durch Ihre Domain

Sie können auch einige andere Optionen ausführen, um mehr zu erfahren:

/dcname:domainnameRuft den PDC-Namen für die Domäne ab. /dsgetdc:domainnameHat Flags für andere Informationen

Versuchen Sie nltest /?in Ihrer Aufforderung, weitere Optionen zu erhalten! :)

Abraxas
quelle
C:\> nltest /dclist:domainname Cannot find DC to get DC list from.Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN The command completed successfully Was bedeutet das?
jp2code
1
Ersetzen Sie den Domainnamen durch den Namen Ihrer Domain
Abraxas
Oh. Ich dachte, das würde ich finden.
jp2code
Dies war sehr nützlich für mich, da [Bash # host -t srv _ldap._tcp.MYCOMPANY] die Domain nicht gefunden hat. [CMD: \> nltest / dclist: MYCOMPANY] hat mir mitgeteilt, dass der Domainname corp.ad.mycompany.com lautet, und ich konnte diese Informationen verwenden, damit die anderen Befehle funktionieren. [Bash # host -t srv _ldap._tcp.corp.ad.mycompany.com] funktionierte dann
neokyle
21

Dies gibt den nächstgelegenen Domänencontroller in Powershell zurück:

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

Führen Sie an einer Eingabeaufforderung Folgendes aus gpresult. Sie erhalten:

  • Allgemeine Informationen zu Arbeitsstationen und Domänen
  • Für den Computer und den Benutzer :
    • Distinguished Name in AD und von welchem ​​DC die Richtlinie angewendet wurde
    • Angewandte Gruppenrichtlinienobjekte
    • Liste der Sicherheitsgruppen, denen ein Mitglied angehört

Hier ist ein Beispiel für die Ausgabe von runninggpresult . Sie können auch angeben gpresult /z, um detailliertere Informationen zu erhalten.

ErikE
quelle
5
Wow, gpresult /Zgibt eine Menge Daten aus. Vielen Dank.
Friederblümle
10

DNS und DHCP sind die beste Methode zur Überprüfung, da im Netzwerk Unix / Linux-Computer vorhanden sein können, die vom AD-Domänencontroller verwaltet werden oder als Domänencontroller fungieren.

Darüber hinaus ist Active Directory nichts anderes als die Microsoft-Version von Kerberos, LDAP, DHCP und DNS. Es wäre besser, Dinge in niedrigeren Schichten als in Schicht 7+ zu verstehen und zu debuggen. Dies liegt daran, dass das Betriebssystem dieselben Anforderungen ausführt und der unterstreichende RFC für jedes Protokoll tatsächlich auf einer OSI-Ebene ausgeführt wird, nicht auf der Ebene "Favoritentool hier einfügen".

Sie können einen Schritt weiter gehen und den DHCP-Server nach den Optionen 6, 15 und 44 abfragen, um den Domänennamen , den Domänennamenserver und den Wins / NetBIOS-Namenserver abzurufen .

Verwenden Sie dann DNS, um nach den SRV-Einträgen _kerberos._tcp, _kpasswd._tcp, _LDAP._TCP.dc._msdcs und _ldap._tcp zu suchen:

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

Dies gliedert sich in drei Bereiche, von denen zwei protokollgestützte DNS-SD-Einträge sind:

  • _kerberos._tcpund _kpasswd._tcp(auch unter UNIX / Linux / OSX + haben einige Windows-Netzwerke _kadmin._tcp) sind für Kerberos
  • _ldap._tcpist für ldap (openldap, opendc, sun / oracle verzeichnis, ms ad) _LDAP._TCP.dc._msdcsdie einzige Erweiterung von Microsoft für ldap, um den Domänencontroller zuzuordnen.
Dwight Spencer
quelle
2

Rohes CMD

Suchen Sie einfach nach DC-Namen

Speichern als GetDcNames.cmd:

nslookup -type=any %userdnsdomain%.

Führen Sie so: GetDcNames.cmd.

(Hinweis: Der abschließende Punkt in "% userdnsdomain%." Ist absichtlich. Er hindert Ihr lokales nslookup daran, DNS-Suchpfadzeichenfolgen zu verwenden.)

Hier finden Sie weitere AD-bezogene DNS-Domains

Ich habe eine schnelle und schmutzige Batch-Datei erstellt, damit ich mich nicht an die DNS-Domänennamen erinnern und / oder sie alle eingeben muss. (Die Liste ist möglicherweise nicht vollständig.)

Funktioniert von Maschinen mit Domänenbeitritt. Wenn Ihr Computer nicht der Domäne angehört, müssen Sie USERDNSDOMAIN manuell auf den gewünschten Wert einstellen.

Speichern als 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%.

Führen Sie so TestAdDnsRecords.cmd | more. Es wird viel Text ausgegeben.

Quellen

StackzOfZtuff
quelle