Active Directory DNS Üzerinde Güncel veya Geçerli Olmayan Kayıtların Temizlenmesi – DNS Aging and Scavenging

DNS hizmetinin gerek active directory gerekse internet gibi günümüzün vazgeçilmez teknolojilerinin en temel yapı taşı olduğunu çok iyi biliyoruz. Bu nedenle DNS konusuna olan hâkimiyetiniz aslında diğer ürünlerin verdikleri hizmetlerin kesintisiz ve kaliteli bir şekilde sunulmasını sağlamaktadır.

Bende bu makalemde DNS konusu üzerine özellikle şirket ortamlarında sık görülen bir sorunun çözümü noktasında bilgi paylaşımında bulunacağım.

DNS kayıtları ve bu kayıtların güncelliği son derece önemlidir. Normal şartlar altında domain ortamında siz DNS üzerinde elle istediğiniz gibi kayıtlar açabilirsiniz. Elle açtığınız bu kayıtlar statik olarak isimlendirilir ve siz silmediğiniz sürece DNS üzerinde kalıcı olarak saklanır. Bunlar daha çok MX kayıtları, SPF kayıtları veya var olan bir makine için farklı olarak erişmek için kullandığımız Alias veya A kayıtları olacaktır.

Diğer dinamik olarak gördüğünüz kayıtlar ise sistem tarafından veya istemci bilgisayarların kendileri tarafından oluşturulmaktadır.

Kendileri tarafından oluşturulmaktadır derken, varsayılan olarak kurulan bir active directory integrated dns zone üzerinde Dynamic update açık gelir.

Yukarıdaki ayarlara göre yetkili bilgisayarlar kendi dns kayıtlarını zone içerisine ekleyebilir.

İstemci bilgisayar tarafındaki bu kayıt ister kendi başına isterse DHCP üzerinden yapıla bilir. Normal şartlarda Windows işletim sistemi olan bilgisayarlarda bu süreç son derece basit ilerlerken Windows olmayan ancak DHCP üzerinden ip alan diğer sistemler içinde A kayıtlarını DHCP nin oluşturmasına imkan sağlayabiliriz.

Yani aşağıdaki şekilde olduğu gibi DHCP bizim için PTR kaydı oluşturabileceği gibi

Yine aşağıdaki şekilde görüldüğü gibi hem PTR hemde A kaydı oluşturabilir.

Bu aşamada DHCP bölümü için aşağıdaki makalenin yararlı olacağını düşünüyorum.

https://www.hakanuzuner.com/dns-dynamic-update-credentials/

Tabiki bunun artıları ve eksileri mevcut. Bunun makalenin ilerleyen bölümlerinde değerlendireceğim.

Bu işlem için işletim sisteminde varsayılan ayar olarak gelen TCP/IP gelişmiş ayarlarındaki “Register this connection’s address in DNS” kutucuğu işaretli olmalıdır.

Windows İşletim sistemi için bu süreçten DNS Client ve Server servisleri sorumludur. DNS Client servisi TCP/IP sekmesindeki DNS ip adresine giderek makine FQDN ismine karşılık ip adresini kayıt ettirir. DNS Client servisi bu şekilde dizayn edilmiş olmasına karşın bazı özel durumlarda vardır. Örneğin Remote Access Service (RAS) veya virtual private network (VPN) bağlantısında Windows XP varsayılan olarak DNS register işlemini gerçekleştirmez.

Peki dinamik update hangi durumlarda devreye girer?

IP değişikliklerinde

IP alma ve bırakma işlemlerinde ( ipconfig /renew veya ipconfig /Release )

Elle ipconfig /registerdns komutunun çalıştırılması durumunda

Bilgisayar açılırken

Bir makine domain’ e alınırken

Yukarıdaki durumlarda otomatik olarak A kaydı açılır veya güncellenir.

Bizim ise asıl konumuz aslında bu süreci incelemekten çok bu sürecin sonucu olarak oluşan A kayıtlarından gereksiz olanları silmek.

Bildiğiniz gibi varsayılan olarak DNS bu kayıtları silmez. Büyük bir şirket organizasyonunda gereksiz kayıtlar hatta yanlış kayıtlar ciddi sorunlara neden olabilir.

Bu sorunlar aslında daha çok istemci bilgisayarlarında görülmektedir. Çünkü sunucu sistemlerinin kurulum veya domain ortamından uzaklaştırılması genellikle prosedürlere uygun yapılır. Örneğin bir sunucu artık hizmet vermeyecek ise öncelikle workgroup’ a alınır ki bu çok önemli bir aksiyondur. İstemci bilgisayarlarında ise genellikle kullanıcı destek personeli makinede bir sorun olduğunda üzerine direkt imaj yükler, yani eski makine adı dns üzerinde kayıtlı iken yeni bir makineyi ama aynı isimle ortama sokar ki bu da sorunların başlangıcıdır.

Yeni makine eski dns kaydının sahibi değildir, bu nedenle bu kaydı güncelleyemez. Ancak siz baktığınız zaman dns üzerinde bu makine için bir kayıt görürsünüz fakat ip adresi aslında başka bir makineye aittir.

Örnek vermek gerekir ise;

MuhasebePC01 isimli bir makine domain’ e alındığında ip adresi 192.168.100.101 olsun, bu durumda bu isim ile ilgili bir A kaydı aşağıdaki gibi DNS üzerinde oluşur.

Belirli bir süre sonra makine ismi değişiyor ve yine DNS bu değişikliği otomatik olarak güncelliyor.

Hemen bu değişikliğin ardından DNS’ i de kontrol edelim.

Şimdide makinenin ip adresini değiştirelim

DNS deki durumu kontrol edelim

Gördüğünüz gibi DNS dinamik update sayesinde bu tür her türlü değişikliği almaktadır.

Gelelim senaryomuzun son noktasına. Bu makine yani MuhasebePC02 de bir sorun oluştu ve bu nedenle imaj atılacak. Aslında doğru olan ilk olarak bunu workgroup’ a almak ve sonra imaj atıp tekrar domain’ e almaktır. Ancak siz bu makineyi workgroup a almadan imaj atarsanız sorun aşağıdaki gibi oluşmaya başlıyor.

İlk olarak bu DNS kaydının güvenlik listesini kontrol edelim,

MUHASEBEPC02$ isimli makine tam yetkiye sahip. Şimdi bu makine SID numarasını kontrol edelim

Şimdi bu makineyi domain den çıkarmadan direkt üzerine yeni imaj atalım

Makinemize isim olarak aynı ismi veriyoruz MuhasebePC02 ve domain’ a farklı bir ip adresi ile alıyoruz.

192.168.100.105

Şimdi DNS deki durumu bir kontrol edelim.

Evet, burada iki durum söz konusudur.  Eğer siz tüm işlemleri Domain Admin grubu üyesi kullanıcılardan biri yaparsanız yukarıdaki sorunu yaşamazsınız. Yani yeni makine yeni ip adresi ile domain içerisinde olacaktır. Bunun en temel sebebi zone dahil içerisindeki tüm kayıtlarda Domain Admin grubu üyeleri tam yetkili olduğu için yeni makine kurmuş olsanız bile bu kayıt değişikliği gerçekleşecektir. Aslında sorunda burada başlıyor. Genellikle kobi ve küçük işletmelerde bir veya birkaç admin olduğu için kendileri zaten domain admin grubu üyesidir. Ancak büyük kurumlarda bu tarz işlemleri yapan kullanıcı destek servis çalışanları domain admin grubu üyesi değildir, delegasyon ile ise zone üzerinde tam yetki vermek riskli olabilir. Çünkü günün sonunda DNS üzerinde çok kritik servisleri sunan makinelerin A kayıtları, CNAME veya diğer kritik kayıtlar bulunmaktadır. Özetle delegasyon ile bir makineyi domain e almak için gpo üzerinden yetki verilmesi aslında dns tarafında bir yetkiye neden olmaz, bundan dolayı da bu gibi durumlarda olan şudur;

Makine isimleri aynı kalsa bile ip adresleri güncel değildir. Bu durumda uzak erişim programları, SCCM gibi merkezi dağıtım araçları, monitoring araçları, GPO vs yani DNS ip adresinizin yanlış olması demek sorun demektir.

Gelelim bunu nasıl düzelteceğimize.

Öncelikle bu sorunun çözümü için

1 – Kullanıcı destek servisi mutlaka makineleri domain den çıkarıp yeni kurulumları ondan sonra yapmalıdır.

2 – Veya kullanıcı destek servisi hesaplarına da DNS zone ları için yetki verilmelidir.

Peki, DNS in güncel olmaması sadece böyle bir durumda mı meydana gelir. Tabiki değil, pek çok farklı senaryo üretmek mümkün. Örneğin siz DHCP servisini dağıttığı ip adresleri için DNS tarafında A kaydı oluşturması için konfigüre etmiş iseniz bu durumda ip alan her makine kaydı dns üzerinde oluşturulur. Veya benzer şekilde test için, demo için, eğitim ve benzer amaçlar ile kurulan ve sonra kullanılmayan makinelerinde kayıtları hala dns üzerinde saklanmaktadır.

Veya DHCP tarafından oluşturulan A ve PTR kayıtlarında bu kayıtın sahibi DHCP sunucu makine hesabı olduğu için böyle bir durumda da kayıt güncelleme sorunları yaşanabilir.

Örneğin kaydı yapan DHCP server Down olur ve yedek DHCP aktif olursa bu kayıtları güncelleyemez. Veya öncesinde DHCP üzerinden ip güncelleyen bir makine sonrasında bu DNS kaydının sahipliğini alamayacağı için kendi makine ismi için dns üzerinde kayıt güncelleyemeyecektir.

Bu konuda hali hazırda çözüm bulunmakta olup konumuz olmadığı için detaylandırmıyorum (DnsUpdateProxy )

Bizim amacımız ise bu tarz eski ve kullanılmayan kayıtların temizlenmesidir. Bunun için en önemli bileşen zamandır. Yani belirli bir tarih öncesine kadar herhangi bir güncelleme almayan kayıtların silinmesi mantığı ile ilerleyebiliriz. Biz buna aslında DNS üzerinde “Aging and Scavenging” diyebiliriz.

Bir DNS kaydını incelediğiniz zaman ( görünümden gelişmiş özellikleri açmalısınız ) Time Stamp isminde bir değer göreceksiniz

Bu kayıtın en son güncellendiği tarihi göstermektedir.

Şimdi Aging ve Scavenging kavramlarına geçelim.

Bir bilgisayar bizim örneğimizde olduğu gibi ilk olarak DNS’ e kendini kayıt eder ve kayıt için bir time stamp değeri atanır.

Biz eğer eski kayıtları DNS üzerinden silmek istiyorsak bu ayarları açmak zorundayız. Varsayılan olarak bu ayarları istersek bir zone için istersek tüm DNS üzerindeki zone’ lar için açabiliriz.

Öncelikle tek bir zone için bu ayarları kontrol edelim.

Zone özelliklerinde “Aging” bölümüne tıklıyorum

Yukarıdaki bölümleri şimdi açıklayalım.

NoRefresh:

Bir DNS kaydı oluştuktan sonra kaç gün boyunca gelen aynı güncelleme isteklerinin dikkate alınmayacağının süresini belirttiğimiz ayardır. Yani örneğin MuhasebePC01 makinesi için ilk kayıt tarihinden sonra gelen tekrar kayıt istekleri 7 gün boyunca alınmaz. Ancak unutmayın ki bu değişiklik kaydı değildir. Yani siz bu makine için ip adresi veya host name değiştirebilirsiniz, bu değişiklik dns üzerine yansır ve time stamp değerini günceller. Benim burada detaylandırmak istediğim konu, varsayılan olarak istemci makineleri her 24 saate bir dinamik update işlemi yapar, tabiki bunu tetikleyen durumlarda da benzer şekilde update yapar, ancak makine ismi ve ip adresi değişmediği sürece time stamp değeri değişmez. Peki, neden böyle bir durum var? Bunun en temel nedeni bu 7 gün boyunca sürekli olarak gelen dinamik güncelleme isteklerinden doğan active directory replikasyonun önüne geçmektir.

Not: Sunucular her 24 saatte bir, DC ler ise netlogon servisi her 60dk da bir time stamp değerini yenilerler. Bu nedenle böyle bir ayar sonucu sunucu veya dc lerin dns kayıtlarının silinmesi söz konusu değildir.

Bu değerlere aşağıdaki kayıt defterinden ulaşabilirsiniz

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DefaultRegistrationRefreshInterval

Ve yine dinamik olarak oluşturulan bir DNS kaydı için TTL süresi 20dk dır. Bu değerede aşağıdaki yoldan ulaşabilirsiniz

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DefaultRegistrationTTL

Refresh:

Peki, 7 gün sonra ne oluyor, 7 gün sonra artık dns bu kayıt için dinamik update kabul etmektedir ve ilk kabulünden sonra süreç yine aynı şekilde devam eder. Yani time  stamp değeri güncellendiği anda o kayıt için tekrar norefresh intervals süresi başlar.

Scavenging: Eğer bir kayıt Refresh süresi olan 7 gün içerisinde güncellenmez ise bu durumda silinmek üzere işaretlenir. Burada akla şu soru gelebilir, bu kayıt hemen mi silinir? Aslında bu sizin bir önceki temizleme periyodunuza bağlıdır. Çünkü varsayılan olarak 7 günde bir işaretlenmiş kayıtların silinmesi için bir sistem çalışıyor, eğer bu sistem en son 7 gün önce gelmiş ise bu gün yine gelecek ve işaretli kayıtları silecek demektir. Veya en son 4 gün önce bu temizlik yapıldı ise bu durumda 3 gün sonra bu kayıtlar silinecek demektir.

Veya siz isterseniz elle tüm bu işaretli kayıtları silebilirsiniz.

Bu noktada 3 temel ayar bulunmaktadır.

Siz isterseniz tek bir kayıt için bu süreci başlatabilirsiniz

Yukarıdaki gibi bir dns kaydı özelliklerinden “Delete this record when it becomes stale” kutucuğunu işaretleyerek.

Veya bir zone için bu ayarı yapabilirsiniz

Yada bir DNS sunucusu için bu ayarı yapabilirsiniz

Bu bölüme tıkladığınız zaman zone ile aynı ayarlar gelir

Yine sunucu üzerinde silinmek üzere işaretlenmiş DNS kayıtlarını scavenging periyodunu beklemeden elle silebilirsiniz

Veya bu süreyi aşağıdaki gibi DNS özelliklerinden elle değiştirebilirsiniz

Normalde otomatik olarak 7 günde bir silme özelliği açık değildir. Bu olayları olay günlüklerinden 2501 ve 2502 nolu eventlerden takip edebilirsiniz.

Örnek olarak ben aşağıdaki gibi varsa eğer işaretlenmiş kayıtları silmesi için istekte bulundum

Sonuç hemen olay günlüğüne yansıdı

2501 göremedik, çünkü 2501 silinen dns kayıtları hakkında bilgi verirken 2502 ise silinmeyen kayıtlar hakkında bilgi verir. Ben lab ortamını dün kurup bu gün sil dediğim için ve varsayılan sürenin 7 artı 7 toplam 14 gün olduğunu düşünürsek zaten 1 günde silinecek kayıtın bulunamaması son derece normaldir.

Bu konuyu daha anlaşılır bir şekilde özetlemek için

Örneğin DNS üzerinde cozumpark.com isminde bir zone var. Bu zone için norefresh ve refresh time olarak 5 gün seçtiniz, scavenging time ise 7 gün olarak kaldı.

Bir DNS kaydı oluştu, özellikleri aşağıdaki gibi

Kayıt tipi = A

Kayıt ismi = MuhasebePC01

Time Stamp = 01.01.2013 Saat 15:00

Bu durumda 04.01.2013 tarihine kadar güncelleme kabul edilmez.

04.01.2013 ile 07.01.2013 arasında güncelleme beklenir. Eğer gelmez ise

07.01.2013 tarihinde silinmek üzere işaretlenir. Peki ne zaman silinir?

Bunun için olay günlüklerindeki en son 2501 veya 2502 olayını ne zaman gördüyseniz ki diyelim ki bunuda ayın 5 inde gördüğünüz yani 05.01.2013, bu durumda bu kayıt 12.01.2013 tarihinde silinecek demektir.

Burada önemli bir nokta, statik yani elle açtığınız kayıtlarda time stamp değeri yoktur, bu nedenle bunların scavenging ile silinmesi söz konusu değildir.

Ancak siz elle aşağıdaki komutu çalıştırırsanız tüm kayıtlar yaşlandırılacağı için bu durumda silinebilir hale gelir

dnscmd /AgeAllRecords

Tabiki gerekmediği sürece bu komutu çalıştırmamanızı öneriyorum.

Bir makalenin daha sonuna geldik, umarım faydalı bir makale olmuştur.

Exit mobile version