Znajdź nazwę kontrolera domeny Active Directory

Odpowiedzi:

147

Na dowolnym komputerze, na którym DNS jest skonfigurowany do używania serwera DNS AD, wykonaj następujące czynności:

  • Start -> Uruchom -> nslookup

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

Zastąp DOMAIN_NAME rzeczywistą nazwą domeny, np . Example.com . Przeczytaj więcej tutaj .

puste 3
źródło
W powyższej odpowiedzi wpisanie set type = all (w nslookup) pozwala zobaczyć rekordy DNS SRV. Możesz także wpisać „set type = SRV”, rekordy SRV to reklamy AD reklamujące się w sieci
Les
Uruchomiłem to i dostałem _ldap._tcp.dc._msdcs.UnKnown. Co oznacza UnKnown ?
jp2code
64

W przypadku komputera, który jest członkiem domeny, zmienna środowiskowa LOGONSERVER zawiera nazwę kontrolera domeny, który uwierzytelnił bieżącego użytkownika. To oczywiście nie będzie wszystkie kontrolery domeny w środowisku z wieloma kontrolerami domeny, ale jeśli wszystko, czego potrzebujesz, to szybki sposób na znalezienie nazwy kontrolera domeny, a następnie z poziomu powłoki poleceń:

set l <enter>

Zwróci wszystkie zmienne środowiskowe zaczynające się od „L”, w tym nazwę kontrolera domeny.

Helvick
źródło
5
+1 za prostotę. Po uzyskaniu nazwy kontrolera domeny wystarczy pingować go, aby uzyskać adres IP.
Bigbio2002
2
proste tak, ale jeśli masz połączenie VPN z siecią, którą jesteś zainteresowany, LOGONSERVER tego nie zapewni. Zaakceptowana odpowiedź da ci właściwy serwer we wszystkich przypadkach, które wymyślę.
Les
1
To nie jest idealne, ale czasami ważne jest, aby wiedzieć, jak szybko zrobić coś wystarczająco dobrego. Nie udaje się również przy logowaniu lokalnym, ale nigdy nie sprawdziłem go przez VPN, dobrze wiedzieć, dzięki.
Helvick
35

Niewymienioną, super łatwą i szybką opcją jest uruchomienie tego z wiersza poleceń:

nltest /dclist:domainname

Po prostu zamień „domainname” na swoją domenę

Możesz także uruchomić inne opcje, aby dowiedzieć się więcej:

/dcname:domainnamepobiera nazwę PDC dla domeny /dsgetdc:domainnamema flagi dla innych informacji

Wypróbuj nltest /?w odpowiedzi na monit, aby uzyskać więcej opcji! :)

Abraxas
źródło
C:\> nltest /dclist:domainname Cannot find DC to get DC list from.Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN The command completed successfully Co to znaczy?
jp2code
1
Zastąp nazwę domeny nazwą swojej domeny
Abraxas,
O. Tak myślałem, że to dla mnie znajdzie.
jp2code
Było to dla mnie bardzo przydatne, ponieważ [Bash # host -t srv _ldap._tcp.MYCOMPANY] powiedział, że nie znaleziono domeny. [CMD: \> nltest / dclist: MYCOMPANY] powiedział mi, że nazwa domeny to corp.ad.mycompany.com, a następnie mogłem użyć tych informacji, aby uruchomić inne polecenia. [Bash # host -t srv _ldap._tcp.corp.ad.mycompany.com] potem zadziałało
neokyle
21

Spowoduje to zwrócenie najbliższego kontrolera domeny w programie Powershell:

Import-Module ActiveDirectory
(Get-ADDomainController -DomainName <Domain FQDN> -Discover -NextClosestSite).HostName
Mark Henderson
źródło
17

W wierszu polecenia uruchom gpresult. Dostaniesz:

  • Ogólne informacje o stacji roboczej i domenie
  • Zarówno dla komputera, jak i użytkownika :
    • Nazwa wyróżniająca w AD i od którego DC zastosowano zasadę
    • Zastosowane obiekty zasad grupy
    • Lista grup zabezpieczeń, których członkiem jest

Oto przykładowy wynik działaniagpresult . Możesz także określić, gpresult /zaby uzyskać bardziej szczegółowe informacje.

ErikE
źródło
5
Wow, gpresult /Zdaje dużo danych. Dzięki.
friederbluemle
10

DNS i DHCP to najlepszy sposób na sprawdzenie, ponieważ w sieci mogą znajdować się maszyny Unix / Linux zarządzane przez kontroler domeny AD lub działające jako kontroler domeny.

Dodatkowo, biorąc pod uwagę, że active directory jest niczym więcej niż wersją Kerberos, LDAP, dhcp i dns Microsoftu. Lepiej byłoby zrozumieć i debugować rzeczy na niższych warstwach niż warstwa 7+. Wynika to z faktu, że system operacyjny wykona te same żądania, a podkreślająca RFC dla każdego protokołu faktycznie działa na poziomie OSI, a nie na poziomie „wstaw tutaj ulubione narzędzie”.

Można pójść o krok dalej i kwerendy DHCP dla opcji 6, 15 i 44, aby uzyskać nazwę domeny , serwer nazw domen , a wygrane / NetBIOS serwera nazw .

Następnie za pomocą usługi dns sprawdź, czy istnieją rekordy _kerberos._tcp, _kpasswd._tcp, _LDAP._TCP.dc._msdcs i _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

Dzieli się to na trzy obszary, dwa to rekordy DNS-SD obsługiwane przez protokół:

  • _kerberos._tcpi _kpasswd._tcp(także pod UNIX / Linux / OSX + niektóre sieci Windows mają _kadmin._tcp) są dla Kerberos
  • _ldap._tcpjest dla ldap (katalog openldap, opendc, sun / oracle, ms ad) _LDAP._TCP.dc._msdcsto jedyne rozszerzenie Microsoftu do ldap do mapowania kontrolera domeny.
Dwight Spencer
źródło
2

Surowy CMD

Wystarczy znaleźć nazwy DC

Zapisz jako GetDcNames.cmd:

nslookup -type=any %userdnsdomain%.

Uruchom jako: GetDcNames.cmd.

(Uwaga: końcowa kropka w „% userdnsdomain%.” Jest celowa. Powstrzymuje twój lokalny nslookup od używania jakichkolwiek ciągów ścieżki wyszukiwania DNS.)

Znajdź więcej domen DNS związanych z AD

Podniosłem szybki i brudny plik wsadowy, aby nie musiałem pamiętać nazw domen DNS i / lub musiałem wpisywać je wszystkie. (Lista może być niekompletna).

Działa z maszyn przyłączonych do domeny. Jeśli twój komputer nie jest przyłączony do domeny, musisz ręcznie ustawić USERDNSDOMAIN na to, co chcesz.

Zapisz jako 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%.

Uruchom jako TestAdDnsRecords.cmd | more. Istnieje wiele wyników tekstowych.

Źródła

StackzOfZtuff
źródło