DNSSEC ile Agresif Negatif Önbellekleme Nasıl Çalışır?

DNS, alan adlarına ait IP adreslerini ve diğer kayıtları bulmayı sağlar. DNSSEC ise DNS verisinin kaynağını ve değiştirilmediğini dijital imzalarla doğrular. İstemci adına önbellekten veya diğer DNS sunucularına başvurarak yanıt bulan recursive resolver (özyinelemeli DNS çözümleyicisi), DNSSEC doğrulaması yapıyorsa agresif negatif önbellekleme sırasında daha önce doğruladığı yokluk kanıtını yalnız ilk sorgu için saklamakla yetinmez. Önbellekteki NSEC veya NSEC3 kaydı başka bir adın ya da kayıt türünün de bulunmadığını kanıtlıyorsa recursive resolver, yeni sorgu için yetkili DNS sunucusuna yeniden başvurmadan olumsuz yanıt üretebilir.
Buradaki kritik nokta tahmin değil, daha önce DNSSEC ile doğrulanmış kanıtın yeniden kullanılmasıdır. Kanıt yeni sorguyu yeterli biçimde kapsamıyorsa, süresi dolmuşsa veya doğrulama kurallarına göre kesin bir sonuca izin vermiyorsa recursive resolver normal çözümleme yoluna dönerek yetkili DNS sunucusuna sorgu gönderir.
NXDOMAIN, adın bulunmadığını; NODATA ise istenen kayıt türünde veri bulunmadığını bildiren olumsuz yanıttır. NODATA ayrı bir DNS yanıt kodu değildir; bu durumda yanıt NOERROR kodunu taşır, ancak istenen veri yoktur. Başka bir ada yönlendiren CNAME kaydı izlenmişse yokluğu bildirilen ad, ilk sorgulanan ad değil son hedef olabilir. Agresif negatif önbellekleme, doğrulanmış NSEC veya NSEC3 kanıtından bu olumsuz yanıtları gerektiğinde üretir.
NSEC Kanıtının Farklı Sorguları Kapsaması
NSEC kaydı, yetkili sunucunun yönettiği imzalı DNS bölgesindeki adlar hakkında yokluk kanıtı taşır. DNSSEC'in adları karşılaştırmak için kullandığı kanonik sıralamada iki kayıtlı ad arasındaki aralığı gösterebilir. Recursive resolver ilk sorguda bu aralığa ait doğrulanmış NSEC verisini önbelleğe koyar; daha sonra aynı kanıtın yeterli olduğu farklı bir sorguyu yetkili DNS sunucusuna yeniden başvurmadan yanıtlayabilir.
NSEC kaydı, ait olduğu adda bulunan kayıt türlerini de gösterir. Ad mevcut olduğu halde istenen türün bulunmadığını kanıtlayan yeterli bilgi varsa recursive resolver NODATA yanıtı üretebilir. Ayrıca kendi kaydı olmayan fakat altında kayıtlı adlar bulunan bir ad, tümüyle yok sayılmaz; bu ayrım NXDOMAIN ile NODATA sonucunu değiştirir.
Bir adın NSEC aralığına düşmesi, tek başına her zaman NXDOMAIN yanıtı için yeterli değildir. Recursive resolver, doğrudan bulunmayan adlara yanıt üretmek için kullanılan wildcard kaydının da sorguya uygulanamayacağını doğrulamalıdır. Uygun wildcard kaydı ve gerekli kanıtlar önbellekteyse RFC 8198, bu kayıttan olumlu yanıt veya ilgili tür yoksa NODATA üretilmesine de izin verir; gerekli wildcard verisi yoksa yeni sorgu gerekir.
NSEC3 Kayıtlarıyla Olumsuz Yanıt Sentezleme
NSEC3 de doğrulanmış yokluk kanıtlarının yeniden kullanılmasına izin verir. Ancak alan adlarını açık biçimde sıralamak yerine adların kriptografik özetlerini kullandığı için gerekli karşılaştırmalar daha karmaşıktır. Recursive resolver, yeni sorgu için NSEC3 kurallarına göre yeterli kanıtı önbellekten çıkarabiliyorsa NXDOMAIN veya NODATA yanıtını sentezleyebilir.
NSEC3 Opt-Out, DNS yönetimi başka sunuculara devredilmiş imzasız alt bölgelerin NSEC3 zincirinde tek tek gösterilmemesine izin verir. Yeni adın yokluğu için kullanılan kapsayıcı NSEC3 kaydında Opt-Out bayrağı varsa bu aralık, o adın bulunmadığını kanıtlamaz. Recursive resolver bu kanıta dayanarak o ad için agresif negatif yanıt üretemez; normal çözümlemeye devam eder. Aynı bölgede Opt-Out taşımayan ve başka bir sorguyu yeterli biçimde kapsayan kanıtlar ise kullanılabilir.
Önbellekteki Kanıttan Olumsuz Yanıt Üretme Süreci
Recursive resolver, normal önbellek kontrolüne ek olarak doğrulanmış yokluk kanıtlarını da arar. RFC 8198, NSEC ve NSEC3 kayıtlarının imzalayan bölgeye göre verimli biçimde bulunabilmesi için sıralı bir veri yapısının kullanılabileceğini belirtir.
- Yeni DNS sorgusu geldiğinde recursive resolver önce doğrudan eşleşen önbellek verisini kontrol eder.
- Yetkili DNS sunucusuna sorgu göndermeden önce önbellekteki doğrulanmış NSEC veya NSEC3 kayıtlarının sorulan adın ya da kayıt türünün yokluğunu kanıtlayıp kanıtlamadığına bakar.
- Kanıtın DNSSEC ile doğrulandığını, süresinin dolmadığını ve sorgulanan ad ya da kayıt türünü kapsadığını kontrol eder.
- Koşullar sağlanıyorsa uygun olumsuz yanıtı sentezler ve istemciye döndürür.
- Yeterli kanıt yoksa veya sentezleme başarısız olursa recursive resolver sorguyu normal DNS çözümleme yoluyla yanıtlar.
TTL ve İmza Geçerliliğinin Sentez Süresine Etkisi
TTL, bir DNS kaydının önbellekte ne kadar süre kullanılabileceğini belirtir. Recursive resolver, doğrulanmış NSEC veya NSEC3 verisinden ancak etkili TTL ve kayda ait dijital imza geçerliyken yanıt üretebilir. İmzayı taşıyan RRSIG kaydının süre koşulları da hesaba katılır; imzanın ileri bir tarihte sona ermesi, daha kısa TTL'yi uzatmaz.
DNS bölgesinin yönetim bilgilerini taşıyan SOA kaydındaki MINIMUM alanı, olumsuz yanıtların önbellek süresinin belirlenmesinde kullanılır. RFC 9077'ye göre yetkili DNS sunucusunun döndürdüğü NSEC veya NSEC3 kaydının TTL değeri, SOA.MINIMUM ile SOA kaydının kendi TTL değerinden küçük olanına eşit olmalıdır. Recursive resolver da yanıtta veya önbelleğinde SOA varsa bu iki değerin küçüğünü kullanarak NSEC/NSEC3 TTL değerini sınırlayabilir.
Bu süre sınırı, bölgeye sonradan eklenen bir adın eski yokluk kanıtı yüzünden gereğinden uzun süre görünmemesi için önemlidir. Recursive resolver geçerli kanıtı önbellekte tutarken yetkili bölge değişmiş olsa bile o aralıktaki yeni sorguları yetkili DNS sunucusuna göndermeyebilir. Kanıtın etkili süresi sona erdiğinde bu kanıttan yeni yanıt üretemez; sonraki sorgularda gerektiğinde güncel yetkili veriye başvurur.
Yetkili DNS Sunucusuna Giden Sorguların Azalması
Agresif negatif önbelleklemede recursive resolver, daha önce doğruladığı bilginin kapsama alanını kullanır. Bu nedenle aynı yokluk aralığına düşen her farklı sorgu için yetkili DNS sunucusundan yeni bir yanıt beklemek zorunda kalmaz. İstemci olumsuz yanıtı daha erken alabilir; recursive resolver ile yetkili DNS sunucularının işlem yükü de azalır.







