İçeriğe geç
DomainQ
Alan Adı ve DNS

DNS sorgusu neden NXDOMAIN döndürür? Negatif önbellekleme nasıl çalışır?

Bir DNS kaydı oluşturulduktan sonra bazı sorgular hâlâ NXDOMAIN döndürebilir. Bunun nedeni, çözücünün daha önce aldığı yokluk yanıtını SOA kaydına göre belirlenen süre boyunca önbellekte tutabilmesidir.

DNS sorgusu neden NXDOMAIN döndürür? Negatif önbellekleme nasıl çalışır? — DomainQ blog kapak görseli

Yeni bir alt alan adı veya e-posta kaydı eklediniz, fakat sorgu hâlâ NXDOMAIN döndürüyor olabilir. Bu durum her zaman kaydın yanlış girildiği anlamına gelmez. DNS çözücüleri, daha önce aldıkları “bu ad yok” yanıtını belirli bir süre saklayabilir. DNS NXDOMAIN negatif önbellekleme davranışını anlamak, sorunun gerçekten kayıt yapılandırmasından mı yoksa önbellekteki eski yanıttan mı kaynaklandığını ayırmanıza yardım eder.

Negatif DNS yanıtı akışı: Ad için DNS sorgusu; Yetkili sunucudan NXDOMAIN veya NODATA; Yetki bölümünde SOA kaydı; Negatif TTL boyunca çözücü önbelleği; TTL sıfırda negatif yanıt kullanılmaz
Negatif DNS yanıtı akışı

Kısa özet

  • NXDOMAIN, sorgulanan alan adının DNS içinde mevcut olmadığını belirten Name Error yanıtıdır.
  • NODATA farklıdır: ad geçerlidir, ancak istenen kayıt türü için veri yoktur.
  • Negatif yanıtın önbellek süresi, SOA kaydındaki MINIMUM alanı ile SOA kaydının TTL değerinden düşük olanına göre belirlenir.
  • Bir kaydı sonradan oluştursanız bile, daha önce NXDOMAIN alan bir çözücü TTL sıfırlanana kadar eski negatif yanıtı kullanabilir.

NXDOMAIN ne demektir?

DNS, alan adlarını ağaç yapısında düzenler. Bir istemci bir ad için sorgu yaptığında, yetkili DNS sunucusu o adın mevcut olmadığını bildirebilir. DNS yanıt kodu 3 olan bu durum Name Error veya NXDOMAIN olarak adlandırılır.

NXDOMAIN, yalnızca istenen kayıt türünün eksik olduğunu söylemez; sorgulanan alan adının DNS içinde mevcut olmadığını anlatır. Bu ayrım, doğru sorunu araştırmak için önemlidir. Kayıt türlerinin görevlerini karşılaştırmak isterseniz DNS kayıtları: A, CNAME, MX ve TXT ne işe yarar? içeriği yardımcı olabilir.

DNS ad alanı ağaç biçiminde olduğundan, bir ad için NXDOMAIN yanıtı o adın altında çocuk adların da bulunmadığı anlamına gelir. Çözücüler, önbellekteki yokluk bilgisini bu şekilde yorumlamalıdır.

  • NXDOMAIN: Sorgulanan ad mevcut değildir.
  • Name Error: NXDOMAIN için kullanılan DNS yanıt kodu açıklamasıdır.
  • Çocuk ad: Sorgulanan adın altındaki daha ayrıntılı addır.

Kaynak: [6]

NXDOMAIN ile NODATA aynı yanıt değildir

Benzer görünen iki DNS sonucu farklı sorunları gösterir. NODATA, adın ilgili sınıf için geçerli olduğunu, ancak istenen kayıt türünde kayıt bulunmadığını ifade eden bir tanımdır. Örneğin, example.com adı mevcut olabilir; ancak o ad için sorgulanan belirli kayıt türü bulunmayabilir.

NXDOMAIN ise adın kendisinin mevcut olmadığını ifade eder. Bu nedenle önce hangi adı ve hangi kayıt türünü sorguladığınızı netleştirin. Bir MX sorgusunda alınan sonuç ile aynı ada yapılan A sorgusunun sonucu, kayıt türleri farklı olduğu için ayrı değerlendirilmelidir.

  • NODATA: Ad geçerlidir, istenen türde kayıt yoktur.
  • NXDOMAIN: Sorgulanan ad mevcut değildir.
  • Sorunu ayırmak için sorgu adı ve kayıt türü birlikte kontrol edilmelidir.

Kaynak: [1] [6]

Negatif DNS önbellekleme neden yapılır?

Negatif önbellekleme, mevcut olmayan bir ad veya istenen tür için veri bulunmamasıyla ilgili DNS yanıtlarının çözücü tarafından geçici olarak saklanmasıdır. Yetkili bir ad sunucusu NXDOMAIN ya da istenen tür için veri yok yanıtı verdiğinde, yanıtın önbelleğe alınabilmesi amacıyla yetki bölümüne zonun SOA kaydını eklemelidir.

SOA, bir DNS zonu hakkında yetki bilgisi taşıyan kayıttır. Negatif yanıt için kullanılacak önbellek süresi, SOA kaydının MINIMUM alanı ile SOA kaydının kendi TTL değerinden düşük olanına göre belirlenir. TTL, bir yanıtın önbellekte kullanılabileceği süreyi belirleyen yaşam süresidir.

Bu TTL normal önbellek yanıtlarındaki gibi azalır. Sıfıra ulaştığında önbellekteki negatif yanıt yeniden kullanılmamalıdır. Bu nedenle yeni bir kayıt eklendikten sonra görülen eski NXDOMAIN sonucu, bazı çözücülerde negatif TTL bitene kadar devam edebilir.

  • Yetkili sunucu, önbelleğe alınabilir negatif yanıtta SOA kaydını yetki bölümüne ekler.
  • Negatif TTL, SOA MINIMUM ve SOA TTL değerlerinden düşük olanıyla belirlenir.
  • TTL sıfır olduğunda önbellekteki negatif yanıt yeniden kullanılmaz.

Kaynak: [1]

Yeni oluşturulan kayıt neden hemen görünmeyebilir?

Örnek senaryo: example.com zonunda kampanya.example.com adını oluşturmayı planlıyorsunuz. Kayıt eklenmeden önce bir çözücü bu ad için NXDOMAIN aldıysa, bu olumsuz yanıtı önbelleğe koyabilir. Kaydı daha sonra yetkili DNS sunucusunda oluştursanız bile, aynı çözücü negatif TTL sona erene kadar önbellekteki yanıtı kullanabilir.

NXDOMAIN önbelleği yalnız aynı ad için etkili olmayabilir. Aynı sınıfta, sorgulanan ilk adın altındaki adlara yönelik sonraki sorgular da önbelleğe alınmış NXDOMAIN ile yanıtlanabilir. Bu davranış, yok olduğu bildirilen adın DNS ağacındaki konumuyla ilgilidir.

Bu yüzden yeni bir alt alan adı açmadan önce yapılan başarısız denemeler ile kayıt eklendikten sonraki sonuçları birbirinden ayırın. Yetkili yanıt ile önbelleğe alınmış yanıtın aynı olmadığını hesaba katmak, görünürlük gecikmesini yorumlamayı kolaylaştırır.

  • Önceki NXDOMAIN, yeni kayıt eklense de TTL bitene kadar kullanılabilir.
  • Önbelleğe alınmış NXDOMAIN, aynı sınıfta alt ad sorgularını da etkileyebilir.
  • Kayıt ekleme zamanını ve önceki başarısız sorguları birlikte değerlendirin.

Kaynak: [1] [6]

CNAME veya DNAME zincirlerinde hangi adın mevcut olmadığına dikkat edin

Bir sorgu CNAME veya DNAME zinciri izliyorsa NXDOMAIN, başlangıçta yazdığınız sorgu adını değil, zincirin sonunda mevcut olmayan adı gösterebilir. Bu nedenle yalnız ilk adı kontrol etmek yeterli olmayabilir.

Örnek olarak, bir ad başka bir ada yönlendiriliyor ve son hedef mevcut değilse, önbelleğe alınan NXDOMAIN reddedilen son ad içindir. Sorun araştırılırken zincirdeki son hedefin de incelenmesi gerekir.

  • CNAME ve DNAME, sorguyu başka bir ada yönlendiren DNS zincirleri oluşturabilir.
  • NXDOMAIN, zincirin sonundaki mevcut olmayan ad için geçerli olabilir.
  • Önbellekte saklanan NXDOMAIN her zaman ilk sorgu adı için olmayabilir.

Kaynak: [6]

Pratikte nasıl kontrol edebilirsiniz?

Önce sorgulanan adı ve kayıt türünü yazılı olarak belirleyin. Ardından sonucun NXDOMAIN mi, yoksa geçerli bir ad için NODATA mı olduğunu ayırın. Bu iki sonuç aynı yapılandırma hatasına işaret etmez.

Yetkili sunucudan gelen negatif yanıtta SOA kaydını arayın. Negatif yanıtın önbellekte ne kadar kullanılabileceğini değerlendirmek için SOA MINIMUM alanı ile SOA TTL değerinin düşük olanına bakın. TTL azalacağı için, ilk gözlem anındaki değer ile daha sonraki bir gözlemde görünen değer farklı olabilir.

Bir ad yeni oluşturulduysa, daha önce o ad veya ilgili alt adlar için NXDOMAIN sorgusu yapılıp yapılmadığını da hesaba katın. CNAME ya da DNAME kullanılıyorsa zincirin son hedefini ayrıca doğrulayın. Bu kontroller, kayıt eksikliği ile saklanmış negatif yanıtı birbirinden ayırmaya yardımcı olur.

  • Sorgu adını ve kayıt türünü doğrulayın.
  • NXDOMAIN ile NODATA sonucunu ayırın.
  • Negatif yanıttaki SOA kaydını inceleyin.
  • SOA MINIMUM ve SOA TTL değerlerinden düşük olanını değerlendirin.
  • Varsa CNAME veya DNAME zincirinin son adını kontrol edin.

Kaynak: [1] [6]

Uygulama kontrol listesi

  • Sorguladığınız alan adını ve kayıt türünü netleştirin.
  • Sonucun NXDOMAIN mi yoksa NODATA mı olduğunu ayırın.
  • Negatif yanıtta yetki bölümündeki SOA kaydını kontrol edin.
  • Negatif TTL için SOA MINIMUM ile SOA TTL değerinden düşük olanı değerlendirin.
  • TTL sıfıra ulaşana kadar önbellekteki negatif yanıtın kullanılabileceğini hesaba katın.
  • Yeni alt alan adı eklediyseniz, daha önceki NXDOMAIN sorgularını ve alt ad etkisini göz önünde bulundurun.
  • CNAME veya DNAME varsa zincirin son hedef adını kontrol edin.

NXDOMAIN, istenen kayıt türünden daha fazlasını anlatır: sorgulanan adın mevcut olmadığını bildirir. Negatif DNS önbellekleme ise bu yanıtın, SOA kaydına bağlı bir TTL boyunca çözücüler tarafından yeniden kullanılmasına izin verir. Yeni bir kayıt görünmüyorsa önce NXDOMAIN ile NODATA farkını, ardından negatif yanıtın SOA bilgisini ve varsa ad zincirinin son hedefini kontrol edin.

Sık sorulan sorular

NXDOMAIN, yalnızca A kaydının eksik olduğu anlamına mı gelir?

Hayır. NXDOMAIN, sorgulanan alan adının DNS içinde mevcut olmadığını ifade eder. Ad mevcutken yalnız istenen kayıt türünde veri yoksa bu NODATA durumudur.

Yeni kaydı ekledim; neden hâlâ NXDOMAIN görüyorum?

Bir çözücü, kayıt eklenmeden önce aldığı negatif yanıtı önbellekte tutuyor olabilir. Negatif TTL, SOA MINIMUM alanı ile SOA TTL değerinden düşük olanına göre belirlenir ve sıfıra ulaşana kadar azalır.

CNAME kullandığımda NXDOMAIN hangi adı işaret eder?

CNAME veya DNAME zincirinde mevcut olmayan ad, zincirin sonundaki ad olabilir. Önbelleğe alınan NXDOMAIN bu reddedilen son ad içindir; her zaman ilk sorgu adı için değildir.

Kaynaklar

[1] rfc2308.txt

[6] rfc8020.txt