Jak mogę znaleźć nazwę / adres IP kontrolera domeny AD w mojej sieci?
Jak mogę znaleźć nazwę / adres IP kontrolera domeny AD w mojej sieci?
Odpowiedzi:
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 .
_ldap._tcp.dc._msdcs.UnKnown
. Co oznacza UnKnown ?
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.
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:domainname
pobiera nazwę PDC dla domeny
/dsgetdc:domainname
ma flagi dla innych informacji
Wypróbuj nltest /?
w odpowiedzi na monit, aby uzyskać więcej opcji! :)
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?
Spowoduje to zwrócenie najbliższego kontrolera domeny w programie Powershell:
Import-Module ActiveDirectory
(Get-ADDomainController -DomainName <Domain FQDN> -Discover -NextClosestSite).HostName
W wierszu polecenia uruchom gpresult
. Dostaniesz:
Oto przykładowy wynik działaniagpresult
. Możesz także określić, gpresult /z
aby uzyskać bardziej szczegółowe informacje.
gpresult /Z
daje dużo danych. Dzięki.
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._tcp
i _kpasswd._tcp
(także pod UNIX / Linux / OSX + niektóre sieci Windows mają _kadmin._tcp
) są dla Kerberos_ldap._tcp
jest dla ldap (katalog openldap, opendc, sun / oracle, ms ad)
_LDAP._TCP.dc._msdcs
to jedyne rozszerzenie Microsoftu do ldap do mapowania kontrolera domeny.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.)
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.