DNS bozulduğunda ortaya çıkan ve neredeyse kimsenin düzgün okumadığı üç kelime. "DNS bozuk" demenin birbirinin yerine geçebilir yolları gibi ele alınırlar — ki bu yazık, çünkü her biri size kimin nerede başarısız olduğu hakkında oldukça özel bir şey söylüyor. Doğru okunduğunda, hata kodunun kendisi genellikle bir yapılandırma dosyasına dokunmadan önce sorunu yaklaşık üç şeyden birine daraltır.
İşte her birinin gerçekte ne anlama geldiği ve buna göre nasıl hareket edileceği.
Önce: sağlayıcınızın çevirisini değil, gerçek hatayı alın
Çoğu insan DNS hatalarıyla bir aracı üzerinden karşılaşır — "sunucu bulunamadı" diyen bir tarayıcı, "bilinmeyen ana bilgisayar" diyen bir ping, "DNS hatası" diyen bir izleme panosu. Bunların hepsi üç tamamen farklı başarısızlık modunu tek bir mesaja düzleştirir, ki bu tam olarak DNS hata ayıklamanın neden gizemli bir üne sahip olduğudur.
DNS'i doğrudan sorgulayın ve size açıkça söylesin. Ham yanıtı gösteren herhangi bir sorgulama aracı — MarinaDNS'in DNS sorgulaması dahil — yanıt durumunu kelimesi kelimesine gösterecektir, ki bu herhangi bir DNS araştırmasının gerçek başlangıç noktasıdır. Aradığınız şey yanıt başlığındaki status: alanıdır. O tek kelime, teşhisin tamamıdır.
NXDOMAIN: ad gerçekten mevcut değil
NXDOMAIN, "mevcut olmayan alan adı"nın kısaltmasıdır. Bu bölge için yetkili bir sunucuya — alan adı için gerçek doğruluk kaynağı olan sunucuya — bu ad hakkında soru sorulduğu ve kesin olarak "burada böyle bir ad yok" dediği anlamına gelir.
Anahtar kelime yetkili'dir. Bu bir tahmin veya zaman aşımı değildir. Cevabı gerçekten bilen bir şey size adın var olmadığını söyledi. Oluşturduğunuzdan emin olduğunuz bir ad için NXDOMAIN alıyorsanız, şunlardan biri doğrudur:
Kayıt aslında hiç yayınlanmadı. Bir kontrol panelinde eklediniz, ama kaydedilmedi, veya sunulmayan bir bölgeye kaydedildi. Ayrı bir "bekleyen değişiklikler" durumu tutan sağlayıcılarda şaşırtıcı derecede yaygındır.
Oluşturduğunuzdan ince bir şekilde farklı bir ad sorguluyorsunuz. Sondaki bir nokta, kazara bir yinelenen alt alan adı (www.www.yourdomain.com), veya www demek isterken @ olarak oluşturulmuş bir kayıt. DNS bu konuda affetmezdir ve ne demek istediğinizi tahmin etmeyecektir.
Delegasyon bölgenizin üstünde bozuk. Bu ilginç olandır. Ana bölgenin NS kayıtları bölgenizi gerçekten barındıran sunuculara işaret etmiyorsa, çözümleyiciler kayıtlarınıza hiç ulaşamaz — ve gerçekte sorulan şeyden aldıkları yanıt NXDOMAIN'dir. Kayıtlarınız var, mükemmel şekilde yapılandırılmış, kimsenin sorması söylenmeyen bir sunucuda.
Negatif olarak önbelleğe alınmış, ve eski bir yanıt görüyorsunuz. Bu insanları sürekli tökezletir. RFC 2308 kapsamında, bir çözümleyici NXDOMAIN aldığında bu negatif yanıtı önbelleğe alır, ve önbellek süresi bölgenin SOA kaydından gelir — özellikle minimum alanı, veya SOA'nın kendi TTL'i, hangisi daha düşükse. SOA minimumunuz 24 saate ayarlıysa (bazı sağlayıcılarda varsayılan), dün var olmayan bir ad, siz onu oluşturduktan sonra tam bir gün boyunca önbellekten NXDOMAIN döndürmeye devam edecektir. Hiçbir şey bozuk değil. Sadece bir hafızayı okuyorsunuz.
Sonuncusu içselleştirilmeye değer, çünkü "kaydı ekledim ama çalışmıyor"un en yaygın tek nedenidir. Kayıt iyi durumda. Bir yerde bir çözümleyici, adın var olmadığının söylendiğini hatırlıyor, ve henüz unutma vakti gelmedi. Aynı adı farklı ağlardaki birden çok çözümleyicide kontrol etmek bunu hemen gösterecektir — bazılarında yeni kayıt olacak, bazıları hâlâ önbelleğe alınmış negatif yanıtı sunuyor olacak, ve bölünme size bunun bir yapılandırma hatası değil bir önbellekleme artefaktı olduğunu söyler.
NXDOMAIN ile NODATA — aynı şey değil
Kısa bir sapmaya değer, çünkü bunlar karıştırılıyor ve fark önemli. NXDOMAIN, adın hiç var olmadığı anlamına gelir. Ama ad varsa ve basitçe sorduğunuz türde bir kaydı yoksa, boş bir yanıt bölümüyle NOERROR alırsınız — gayri resmi olarak NODATA olarak adlandırılır.
Somut olarak: yourdomain.com'un bir A kaydı varsa ama MX kaydı yoksa, MX'ini sormak yanıtta hiçbir şey olmadan NOERROR döndürür. nonexistent.yourdomain.com'u sormak NXDOMAIN döndürür. Birincisi "bu ad gerçek, sadece o amaç için değil" der. İkincisi "bu ad gerçek değil" der. Sadece "sonuç bulunamadı" bildiren araçlar bu ayrımı gizler, ve genellikle bu tüm cevaptır — özellikle eksik bir MX ve mevcut olmayan bir ana bilgisayar adının çok farklı alt akış davranışları ürettiği posta yönlendirme hatası ayıklarken.
SERVFAIL: çözümleyici pes etti
SERVFAIL, üçünün en yanlış okunanıdır, çünkü bir sunucunun başarısız olduğunu söylüyormuş gibi gelir — ve bir bakıma öyledir, ama insanların varsaydığı şekilde değil. SERVFAIL yetkili bir yanıt değildir. Yetkili hiç kimse hiçbir şey söylemedi. Bu, size bir yanıt bulmaya çalıştığını ve süreci tamamlayamadığını söyleyen çözümleyici'dir.
Bu, NXDOMAIN'den anlamlı derecede farklı bir ifadedir. NXDOMAIN bilgidir. SERVFAIL, bir hata koduna sarılmış bilgi yokluğudur.
Nedenler, gerçek suçlu olma sıklıklarına göre kabaca sıralı:
DNSSEC doğrulama başarısızlığı. Bu büyük olandır, ve hata DNSSEC'in dahil olduğuna dair hiçbir ipucu vermediği için az teşhis edilir. Bir bölge imzalıysa ve bir imzanın süresi dolmuşsa, veya ana bölgedeki DS kaydı bölgedeki DNSKEY ile eşleşmiyorsa, veya güven zinciri herhangi bir bağlantıda bozuksa, doğrulayan bir çözümleyici yanıtı sunmayı reddeder — yanıt var olsa ve tam orada dursa bile. SERVFAIL döndürür, çünkü güvenlik açısından doğrulanamayan bir yanıt, yanıt yok demektir.
Çıldırtıcı kısım: DNSSEC'i doğrulamayan çözümleyiciler kaydı memnuniyetle döndürür. Yani alan adı bazı ağlardan çalışır ve diğerlerinden SERVFAIL döndürür, ve fark dışarıdan bariz hiçbir şeyle ilişkili değildir. Bazı yerlerden SERVFAIL ve diğerlerinden temiz yanıtlar görüyorsanız, başka bir şeye dokunmadan önce DNSSEC zincirini kontrol edin — süresi dolmuş imzalar tam olarak bu desenin en yaygın nedenidir, ve kimse izlemese de bir programa göre süreleri dolar.
Hiçbir şey yanıt vermedi. Çözümleyici, bölge için listelenen yetkili sunucuları denedi ve hiçbiri yanıt vermedi — çökük, güvenlik duvarlı, veya bölge hiç yüklenmedi. Yeniden denemelerin süresi dolduktan sonra, bu bir SERVFAIL'dir.
Sakat delegasyon (lame delegation). Ana bölge, yanıt veren ama bu bölgeyi sunmak için gerçekten yapılandırılmamış ad sunucularına işaret ediyor — yanıt veriyorlar, ama yetkili olarak değil. Çözümleyici, onu bir yanıta doğru ilerletmeyen bir yanıt alır, diğerlerini dener, ve sonunda başarısız olur. Sağlayıcıları taşıdıktan ve bir eski NS kaydını geride bıraktıktan sonra yaygındır.
Bölgenin süresi bir ikincilde doldu. Bölge aktarımları çalışmayı durdurdu, ikincilin süre dolma zamanlayıcısı bitti, ve şimdi doğru bir şekilde bayat veri sunmayı reddediyor.
SERVFAIL için hata ayıklama hamlesi her zaman aynıdır: çözümleyicinize sormayı bırakın ve doğrudan yetkili sunuculara sormaya başlayın. Yetkili sunucu temiz bir şekilde yanıt veriyorsa ve çözümleyiciniz SERVFAIL döndürüyorsa, kayıt iyi durumdadır ve sorun yolda — doğrulama, delegasyon veya erişilebilirlik. Yetkili sunucu da başarısız olursa, nerede yaşadığını bulmuşsunuzdur. Yapılandırma yerine erişilebilirlikten şüpheleniyorsanız ad sunucusunun IP'sine bir traceroute çalıştırmaya değer — paketlerin hiç ulaşıp ulaşmadığını gösterecektir, ki bu ağ düzeyinde bir sorunu DNS düzeyinde bir sorundan ayırır.
REFUSED: yanlış sunucuya soruyorsunuz, veya izniniz yok
REFUSED bir politika yanıtıdır, ve üçünün en açık olanıdır. Sunucu sorgunuzu aldı, mükemmel bir şekilde anladı, ve reddetti. "Yanıt veremedi" değil — vermek istemedi.
Üç gerçekçi neden:
Barındırmadığı bir bölge hakkında bir sunucuya soruyorsunuz, ve sizin için özyinelemeyecek. Yetkili ad sunucuları genellikle sadece kendi bölgeleri için yanıt verir. Birine başkasının alan adı hakkında sorun, ve doğru bir şekilde reddeder. Bir yerde bir ad sunucusunu sabit kodladıysanız ve bölge taşındıysa, göreceğiniz şey budur.
Erişim kontrolü. Birçok çözümleyici sadece belirli ağlara hizmet verir — sadece dahili aralıklara hizmet veren kurumsal bir çözümleyici, veya sadece kendi müşterilerine hizmet veren bir ISS çözümleyicisi. Dışarıdan sorgulayın, ve REFUSED alırsınız. Bu ayrıca herkese açık bir çözümleyicinin bölgesel politikası beklediğinizden farklı olduğunda ortaya çıkar — bir veri merkezinden yanıt vermekten oldukça mutlu bir çözümleyici, başka birinden reddedecektir, ve sorgu sizin tarafınızdan aynı görünür.
Hız sınırlama veya kara listeleme. Bazı çözümleyiciler, bir kaynak çok agresif sorguladığında trafiği bırakmak yerine REFUSED döndürür. Otomatik kontroller çalıştırıyorsanız bilmeye değer.
Düzeltme neredeyse her zaman aynıdır: yanlış sunucuya işaret ediyorsunuz. Bölge için yetkili bir sunucuya işaret edin, veya kaynak adresinize gerçekten hizmet verecek bir çözümleyiciye.
Kısa versiyon
| Durum | Kim yanıt verdi | Ne anlama geliyor | Nereye bakılır |
|---|---|---|---|
NXDOMAIN |
Yetkili sunucu | Ad gerçekten mevcut değil | Delegasyon, yazım hataları, negatif önbellek TTL'i |
NOERROR + boş |
Yetkili sunucu | Ad mevcut, o türde kayıt yok | Yanlış kayıt türü istendi |
SERVFAIL |
Çözümleyiciniz | Aramayı tamamlayamadı | DNSSEC, delegasyon, erişilebilirlik |
REFUSED |
Bir sunucu, kasıtlı olarak | Özellikle size yanıt vermeyecek | Yanlış sunucu, veya bir ACL |
Çıkarılacak desen: NXDOMAIN ve NODATA yanıttır. SERVFAIL ve REFUSED değildir. İlk ikisi, sistemin çalıştığı ve gerçeği aldığınız anlamına gelir, gerçek hoş olmasa bile. İkincisi, gerçeğe hiç ulaşmadığınız anlamına gelir — ve düzeltme, kayıtların kendisinde değil, sizinle onun arasındaki yolda bir yerde yaşar.
Bu ayrımın tek başına sizi en yaygın DNS hata ayıklama hatasından kurtaracaktır, ki bu hiç bölgede olmayan bir sorunu düzeltmek için bölge kayıtlarını düzenlemektir.