Üye olduğum birkaç IT grubunda bu konuya dönük soru ve sorunlar yaşandığına dair istekler geldiği için bu makaleyi yazmak istedim. Kullanıcıların yaşadığı sorun şu idi; ortamda birden fazla domain controller ( DC ) var ve kullanıcılar yanlış DC’lerden logon oluyordu. DC’ler arası senkronizasyon bozulmuştu. Bir istemci domain’e nasıl katılır, nasıl logon olur bunun teoriğini bilmeden pratikte bir çözüm üretilemeyeceğini düşünüyorum. Gelin bu mekanizmayı beraber inceleyelim.
Client makinede, locator; Local Netlogon hizmetine RPC (Remote Procedure Call) olarak başlatılır. Locator, DSGetDcName API çağrısını Netlogon hizmeti tarafından gerçekleştirir.
DNS Adı Kullanımı:
Netlogon, IP/DNS uyumlu locator’ı kullanarak DNS’i sorgular.
DsGetDcName, domain srv kayıtlarını belirten uygun dizeye ekledikten sonra SRV ve A kayıtlarını DNS’ten okumak için DnsQuery çağrısını kullanır.
Windows tabanlı bir domain’de oturum açan bir workstation, SRV kayıtları için DNS’i sorgular: _service._protocol.DnsDomainName
Active Directory sunucuları, TCP üzerinden LDAP hizmeti sunar. Böylece client’lar DNS’i sorgulayarak bir LDAP sunucusu bulur: _ldap._tcp.DnsDomainName
NetBIOS Adı Kullanımı:
Netlogon, Microsoft Windows NT 4.0-compatible Locator’ı kullanarak DC bulma işlemini gerçekleştirir.
Windows NT 4.0 ve önceki sürümlerde Discovery, birincil veya güvenilir bir domain’de kimlik doğrulaması için DC bulma işlemidir.
Netlogon hizmeti, adı kaydeden makineye bir datagram gönderir. DNS domain adları için datagram, bir LDAP UDP araması için kullanılır.
UDP, TCP/IP protokol paketinin bir parçası olarak bağlantısız datagram aktarım protokolüdür. TCP ise bağlantı yönelimli bir aktarım protokolüdür.
Kullanılabilir her DC şu anda çalışır durumda olduğunu belirtmek için datagrama yanıt verir ve bilgileri DsGetDcName’e döndürür.
Netlogon hizmeti, domain controller bilgilerini önbelleğe alır. Bu önbelleğe alma işlemi, sonraki discovery sürecinin tekrarlanmasına gerek kalmamasını sağlar. Bu bilgilerin önbelleğe alınması, aynı domain controller’ın tutarlı bir şekilde kullanılmasını ve Active Directory’nin tutarlı görünümünü teşvik eder.
Bir client oturum açtığında veya ağa katıldığında bir domain controller bulabilmelidir. Client, tercihen kendi alt ağındaki domain controller’ı bulmak için DNS’e bir DNS lookup sorgusu gönderir. Böylece client’lar, formun bir kaydı için DNS’i sorgulayarak bir domain controller bulur: _LDAP._TCP.dc._msdcs.domainname
İstemci, DC bulduktan sonra Active Directory’e erişim elde etmek için LDAP kullanarak iletişim kurar. Bu görüşmenin parçası olarak, DC, istemci makinenin IP subnet’ine bağlı istemcinin hangi sitede olduğu belirlenir.
İstemci bir DC bulduktan sonra, DC girişi cache’e alınır. DC en uygun sitede değilse, istemci 15 dakika sonra cache’i temizler. Ardından, istemci ile aynı sitede en uygun DC bulmaya çalışır.
İstemci, DC’a bir iletişim yolu oluşturduktan sonra, oturum açma ve kimlik doğrulama kimlik bilgilerini oluşturabilir. Gerekirse Windows tabanlı bilgisayarlar için güvenli bir kanal kurabilir. İstemci daha sonra normal sorgular yapmaya ve dizine karşı bilgi aramaya hazırdır.
İstemci, oturum açmak için DC’a bir LDAP bağlantısı kurar. Oturum açma işlemi, Security Accounts Manager’i kullanır. İletişim yolu, LDAP arabirimini kullanır ve istemcinin kimliği bir DC tarafından doğrulanır. Böylece istemci hesabı doğrulanır ve Security Accounts Manager aracılığıyla dizin hizmeti aracısına, ardından veritabanı katmanına ve son olarak Extensible Storage Engine (ESE) veritabanına geçirilir.
Sorun bulma ve çözme:
İstemci hangi DC’dan logon olmuş ? : nltest /dsgetdc:domainname
ya da echo %logonserver%
Eğer yanlış DC’den logon olmuşsak bakmamız gereken şey DNS sunucunun doğru olup olmadığıdır.
DNS sunucu doğru ise DNS sunucudan doğru SRV ve A kayıtlarının varlığı kontrol edilmelidir. Ve DNS Scavenging servisi çalıştırılmalıdır. DNS Scavenging servisi eski kayıtların silinmesini sağlar.
DNS Scavenging çalıştırmak için : dnscmd /startscavenging
DC’ler arasındaki peplikasyonu sorgulamak için : Repadmin /showrepl
Repadmin komut seti için detaylı bilgi : Tıklayınız
DC servislerinin sağlığını kontrol etmek için ihtiyacımız olan komut seti ise dcdiag
‘dir
Örnek kullanım şu şekildedir : dcdiag /s:DC1 /a
dcdiag komut seti için detaylı bilgi : Tıklayınız
Kolaylıklar dilerim