DNS, Active Directory ortamlarının sağlıklı çalışması için kritik servislerden biridir. Domain Controller erişimi, Kerberos kimlik doğrulaması, uygulamaların isim çözümlemesi ve istemcilerin doğru sistemlere yönlendirilmesi DNS kayıtlarının güncel olmasına bağlıdır. Bu nedenle DNS üzerinde biriken eski veya artık kullanılmayan kayıtlar yalnızca bir düzen sorunu değil, doğrudan servis sürekliliğini etkileyen bir problem olabilir.
Bu makalede Active Directory ile entegre Windows Server DNS ortamlarında DNS Aging and Scavenging mekanizmasının nasıl çalıştığını, eski DNS kayıtlarının nasıl tespit edileceğini ve kayıtları yanlışlıkla silmeden önce hangi kontrollerin yapılması gerektiğini inceleyeceğiz. Konuya önce kavramsal olarak bakacak, ardından DNS Manager ve PowerShell üzerinden ilerleyeceğiz.
DNS üzerinde eski kayıtlar neden oluşur?
Bir domain ortamında DNS kayıtlarını manuel olarak oluşturabileceğimiz gibi, istemciler veya DHCP sunucuları da dinamik güncellemelerle kayıt oluşturabilir. Bir bilgisayarın IP adresi değiştiğinde, makine uzun süre kapalı kaldığında veya sistem ortamdan kaldırıldığında DNS üzerinde eski kayıtların bulunması mümkündür.
Özellikle DHCP ile yönetilen ortamlarda A ve PTR kayıtlarının hangi hesap tarafından oluşturulduğu önemlidir. Secure Dynamic Updates kullanılan Active Directory DNS bölgelerinde kayıt sahipliği ve ACL izinleri, daha sonraki güncelleme işlemlerini etkileyebilir. Bu nedenle eski görünen her kayıt gerçekten kullanılmıyor demek değildir; bazen asıl sorun kaydın yenilenememesidir.
DNS Aging ve Scavenging nedir?
Aging, dinamik DNS kayıtlarının zaman damgasını (timestamp) ve bu damganın hangi aralıklarla yenilenebileceğini yöneten mekanizmadır. Scavenging ise belirlenen yaşlandırma koşullarını karşılayan eski kayıtların DNS veritabanından temizlenmesidir. İkisi aynı şey değildir: Aging özelliğini etkinleştirmek tek başına DNS kayıtlarını silmez.
Bir kaydın otomatik temizlemeye aday olabilmesi için ilgili DNS sunucusunda scavenging özelliği etkin olmalı, DNS zone üzerinde aging açık olmalı, kaydın timestamp değeri sıfırdan farklı olmalı ve kayıt gerekli süre boyunca yenilenmemiş olmalıdır. Zone için geçerli ilk temizleme zamanı ve diğer güvenlik kontrolleri de işlemi etkiler.
Statik ve dinamik DNS kayıtlarının farkı
DNS Manager konsolunda View > Advanced seçeneğini etkinleştirerek kayıtlardaki timestamp bilgisini inceleyebiliriz. Manuel olarak oluşturulan statik kayıtların timestamp değeri genellikle 0 (zero) olarak tutulur. Bu kayıtlar standart scavenging mekanizmasıyla otomatik silinmez. Dinamik kayıtlarda ise sıfırdan farklı timestamp değeri bulunur ve uygun koşullarda temizlemeye aday olabilirler.
Önemli bir ayrıntı: Bir kaydın IP adresi değişerek güncellenmesi ile aynı IP adresi için timestamp yenilemesi aynı işlem değildir. Veri değişikliği, No-refresh döneminde de kabul edilebilir. No-refresh kısıtlaması esas olarak gereksiz timestamp yenilemelerini ve dolayısıyla AD replikasyon trafiğini azaltmaya yöneliktir.
No-refresh Interval ve Refresh Interval nasıl çalışır?
Windows Server DNS üzerinde iki zaman aralığı karşımıza çıkar:
- No-refresh Interval: Aynı kaydın yalnızca timestamp değerini yenilemek için gelen güncellemelerin kabul edilmediği süredir. Gereksiz AD değişikliklerini azaltır.
- Refresh Interval: No-refresh süresi bittikten sonra istemcinin mevcut kayıt için timestamp yenileyebileceği süredir.
- Scavenging Interval: DNS sunucusunun otomatik temizleme denemeleri arasındaki süredir. İlk iki süreden ayrı bir sunucu ayarıdır.
Örneğin No-refresh değeri 7 gün, Refresh değeri de 7 gün ise bir dinamik kayıt, timestamp bilgisinden itibaren 14 gün boyunca yenilenmezse eski kayıt adayı haline gelir. Ancak 14. gün dolduğunda otomatik olarak silinmesi garanti değildir. Sunucunun sonraki scavenging çalışması ve zone’un temizlemeye uygunluk zamanı da dikkate alınır. Bu değerler her ortam için değişmez bir öneri değildir; DHCP kira süresi, kapalı kalabilen cihazlar, DNS güncelleme sıklığı ve AD replikasyon sağlığı değerlendirilmelidir.
İşlem öncesi kontrol listesi
- DNS zone ve kritik kayıtları yedekleyin; mümkünse yapılandırmayı belgeleyin.
- Domain Controller ve Active Directory replikasyon durumunu doğrulayın.
- DHCP sunucularının DNS güncelleme kimlik bilgilerini ve kayıt sahipliğini kontrol edin.
- Domain Controller, küme, yazıcı, ağ cihazı, sabit IP kullanan sunucu ve uzun süre kapalı kalabilen istemciler için istisnaları belirleyin.
- Hangi kayıtların statik, hangilerinin timestamp taşıyan dinamik kayıtlar olduğunu raporlayın.
- Önce yalnızca seçilmiş bir zone üzerinde pilot değerlendirme yapın; bütün zone’lara toplu ayar uygulamayın.
Dikkat: DNS scavenging, hatalı yapılandırıldığında hâlâ kullanılan kayıtların silinmesine yol açabilir. Özellikle üretim ortamında zaman aralıklarını kısaltmak veya hemen manuel scavenging başlatmak yerine mevcut kayıtların neden yenilenmediğini araştırın.
PowerShell ile mevcut DNS durumunu inceleme
Önce sunucu ve zone ayarlarını hiçbir değişiklik yapmadan görüntüleyelim. Aşağıdaki örneklerde contoso.com yerine kendi DNS zone adınızı kullanın.
Get-DnsServerScavenging
Get-DnsServerZoneAging -Name "contoso.com"
Get-DnsServerZone -Name "contoso.com"
Timestamp değerlerini görmek için ilgili zone’daki kayıtları listeleyebiliriz:
Get-DnsServerResourceRecord -ZoneName "contoso.com" |
Select-Object HostName, RecordType, Timestamp, RecordData
Bu komutlar raporlama amaçlıdır; herhangi bir DNS kaydını değiştirmez veya silmez. Timestamp değeri olmayan bir kayıt otomatik olarak hatalı kabul edilmemelidir; statik kayıt olabilir.
DNS Manager üzerinden Aging ayarlarını görüntüleme
dnsmgmt.mscile DNS Manager konsolunu açın.- İlgili DNS sunucusu altında Forward Lookup Zones bölümünü genişletin.
- İnceleyeceğiniz zone üzerinde sağ tıklayıp Properties seçin.
- General > Aging bölümünden Scavenge stale resource records, No-refresh interval ve Refresh interval değerlerini kontrol edin.
- DNS sunucusunun kendi özelliklerinden otomatik scavenging yapılandırmasını ayrıca kontrol edin.
Zone düzeyindeki Aging ile sunucu düzeyindeki Scavenging seçeneklerini birbirine karıştırmayın. Zone üzerinde özelliğin açık olması, sunucunun mutlaka otomatik temizlik yaptığı anlamına gelmez.
PowerShell ile yapılandırma örneği
Aşağıdaki örnek yalnızca ön kontrolleri tamamlanmış test ortamında belirli bir zone için Aging etkinleştirme işlemini gösterir. Komutu üretimde çalıştırmadan önce kayıt yenileme davranışını ve değişiklik planını doğrulayın.
Set-DnsServerZoneAging -Name "contoso.com" `
-Aging $true `
-NoRefreshInterval 7.00:00:00 `
-RefreshInterval 7.00:00:00
Get-DnsServerZoneAging -Name "contoso.com"
Sunucu genelinde otomatik Scavenging etkinleştirmek ayrı bir değişikliktir. Bu işlemi hemen uygulamak yerine pilot zone’daki timestamp davranışını izleyin, kritik kayıtları kontrol edin ve temizlik görevini hangi DNS sunucusunun üstleneceğini belirleyin. Her DNS sunucusunda scavenging etkinleştirmek genellikle yönetimi gereksiz yere zorlaştırır.
DNS kayıtları neden güncellenmiyor?
Bir kayıt beklenenden eski görünüyorsa sorun yalnızca scavenging eksikliği olmayabilir. DNS kayıt sahipliği ve güvenlik izinleri, DHCP’nin hangi hesapla dinamik güncelleme yaptığı, istemcinin ağa ne sıklıkla bağlandığı, DNS istemci yapılandırması ve AD replikasyonu mutlaka incelenmelidir.
Test amaçlı bir istemcide DNS kaydının yeniden kaydedilmesini isteyebilirsiniz:
ipconfig /registerdns
Bu komut istemcinin DNS kayıt işlemini tetikler; ancak yetki veya sahiplik sorunlarını kendiliğinden çözmez. AD replikasyonu için ayrıca şu komutlar kullanılabilir:
repadmin /replsummary
dcdiag /test:dns /v
Sık yapılan hatalar
- Her eski timestamp değerini kullanılmayan kayıt sanmak: Kaydı yenilemeyen bir istemci veya izin sorunu olabilir.
- Statik kayıtların da silineceğini düşünmek: Timestamp değeri sıfır olan kayıtlar normal scavenging sürecine girmez.
- Aging açıldı, kayıtlar hemen silinsin beklentisi: Zone’un ilk temizleme zamanı ve sunucunun scavenging periyodu ayrı koşullardır.
- Bütün zone’larda aynı anda değişiklik yapmak: Özellikle geçmişte timestamp davranışı incelenmemiş sistemlerde ciddi risk doğurur.
- DHCP kaynaklı kayıt sahipliği sorununu yok saymak: Kayıt temizliği yapmak, güvenli dinamik güncelleme yetkilerini tek başına düzeltmez.
Sonuç
DNS üzerinde geçerli olmayan kayıtların temizlenmesi, Active Directory altyapısının sağlıklı çalışması açısından önemlidir. Ancak DNS Aging and Scavenging özelliğini bir silme aracı olarak değil, doğru kayıt yönetimi politikasının parçası olarak değerlendirmek gerekir. Önce kayıtların nasıl oluştuğunu ve nasıl yenilendiğini anlayıp ardından kontrollü bir pilot uygulamayla ilerlemek, DNS temizliğini çok daha güvenli hale getirir.
Bu konuyu ilk olarak 2013 yılında ÇözümPark üzerinde ayrıntılı olarak ele almıştım. Dönemin açıklamaları ve uygulama senaryoları için orijinal DNS Aging and Scavenging makaleme de bakabilirsiniz.

