Odnalezienie kontrolera domeny to jedna z kluczowych usług, aby móc skorzystać z usług w Active Directory. Stacji klienckiej do odnalezienia kontrolera domeny służy algorytm zwany DC Locator.
Active Directory posiada zawsze 2 nazwy:
- DNS-ową – FQDN (fully qualified domain name), tzw. długa nazwa
- NetBIOS-ową – tzw. krótka nazwa, która nie musi być taka sama jak początek nazwy FQDN domeny
Dlatego też DC Locator może działać w tych dwóch trybach:
- Wyszukiwanie za pomocą DNSu
- Wyszukiwanie z użyciem NetBIOS
DC Locator oparty o DNS:
Począwszy od Windowsa 2000 jest to preferowana metoda wykrywania kontrolera domeny opierając się właśnie o zapytania DNS-owe. Zatem ja to wygląda, pierwsze zapytanie o rekord SRV odbywa się do serwera DNS skonfigurowanego na karcie sieciowej na adres _ldap._tcp.dc._msdcs.FQDN_Domeny, czyli w moim przypadku _ldap._tcp.dc._msdcs.krbtgt.pl, dokładnie o ten rekord na poniższym zrzucie.
W odpowiedzi otrzymujemy wszystkie rekordy zarejestrowanym kontrolerów domeny w domenie, które spełniają wskazany warunek – usługa _ldap.
Co potwierdza poniższa odpowiedź na zapytanie.
Komputer gdy już zna listę serwerów obsługujących usługę LDAP, wybiera z tej listy w pierwszej kolejności te o najniższym priorytecie. Jeśli więcej niż jeden posiada ten sam priorytet, serwer jest wybierany losowo (zgodnie z algorytmem z RFC2782). Klient wysyła pakiet do kontrolera, oczekując na odpowiedź z danymi usługi, jeśli nie otrzyma odpowiedzi odpytuje następny serwer, do czasu uzyskania poprawnej odpowiedzi lub gdy odpyta już wszystkie kontrolery. W mojej testowej sieci jest tylko jeden kontroler domeny, zatem to jego zapytajmy o adres IP, czyli kolejnym krokiem jest zapytanie o rekord A.
W odpowiedzi otrzymujemy adres IP naszego kontrolera domeny, do którego teraz stacja robocza robi zapytanie z użyciem protokołu MS-CLDAP (tzw. LDAP „Ping” lub LDAP bezpołączeniowy, gdyż wykorzystuje protokół UDP). W treści zapytania jest użyty filtr z danymi hosta tworzącego zapytanie oraz domeny, w której się znajduje. Celem tego pakietu jest odnalezienie atrybutu „NetLogon”. Funkcja NetLogon wyszukuje adres IP klienta oraz mapuje go do odpowiedniej lokalizacji względem podsieci będącej najbliżej klienta, w której on się znajduje.
W odpowiedzi kontroler przekazuje wartość atrybutu NetLogon, w którym znajduje się m.in. nazwa domeny, nazwa kontrolera domeny odpowiadającego na zapytanie, oraz nazwa Site, w którym klient się znajduje oraz flaga DSClosestFlag. Przyjmuje 2 wartości 0 albo 1 i oznacza czy dany Site jest „najbliżej” klienta.
Po zamianie wartości szesnastkowej na ciąg znaków otrzymujemy:
DC Locator oparty o NetBIOS:
Wyszukiwanie kontrolera domeny w oparciu o NetBIOS było szerzej stosowane przed wydaniem Windows-a 2000. Wraz z premierą tego systemu preferencje w wyszukiwaniu kontrolera domeny zostały zmienione na metodę DNS-ową. NetBIOS pozostał fallbackiem w przypadku, gdy DNS jest nieosiągalny. Aby odnaleźć kontroler, klient wysyła broadcastem zapytanie do serwera WINS (Windows Internet Name Service) o lokalizację kontrolera domeny. Po otrzymaniu odpowiedzi, klient wysyła Mailslot ping (nieszyfrowana komunikacja) do kontrolera oczekując na odpowiedź.