Extended DNS Error (EDE) Nedir ve Ne İşe Yarar?

DNS, alan adlarının IP adresleri gibi kayıtlarını sorgulamayı sağlayan sistemdir. DNS yanıtındaki RCODE, sorgunun genel sonucunu bildiren koddur. Örneğin SERVFAIL, sunucunun sorguyu tamamlayamadığını gösterir; fakat nedeni tek başına açıklamaz. Sorun, DNS kayıtlarının kaynağını ve bütünlüğünü imzalarla denetleyen DNSSEC doğrulamasından, yetkili DNS sunucusuna erişilememesinden veya başka bir işlem hatasından kaynaklanabilir.
Extended DNS Error (EDE), DNS mesajlarına ek özellikler taşıyan EDNS(0) mekanizmasının bir seçeneğidir. Temel DNS yanıt kodunu değiştirmez; yanıta bir bilgi kodu ve isteğe bağlı açıklama metni ekleyerek bildirilen sorunun türünü açıklar.
EDE tek başına kesin nedeni göstermez. EDE bilgisi istemciye ulaştığında olası nedenlerin kapsamını daraltır; yine de kodu DNS yanıtının kaynağı, ağ yolu ve diğer bulgularla birlikte değerlendirmek gerekir.
EDE DNS Mesajında Nerede Taşınır?
RFC 8914, EDE bilgisini EDNS(0) kapsamında bir seçenek olarak tanımlar; EDE için EDNS seçenek kodu 15'tir. Sorgu, EDNS desteğini bildiren bir OPT sözde kaynak kaydı içeriyorsa DNS sunucusu EDE seçeneğini yanıta ekleyebilir. OPT, alan adına ait kalıcı bir DNS kaydı değil, o DNS mesajının ek özelliklerini taşıyan yapıdır.
EDE seçeneğinin veri alanında önce 16 bitlik INFO-CODE bulunur. Bu değer, tanımlı genişletilmiş hata kategorisini belirtir. Ardından UTF-8 metin kodlamasını kullanan EXTRA-TEXT alanı gelebilir; bu alan boş olabilir. RFC 8914'teki serbest metin, kullanıcı veya operatöre ek açıklama sunar; otomatik karar vermek için sabit biçimli veri olarak tasarlanmamıştır.
EDE yalnız SERVFAIL yanıtlarında bulunmaz. Aranan alan adının bulunamadığını bildiren NXDOMAIN, sorgunun reddedildiğini bildiren REFUSED ve hata bildirmeyen NOERROR yanıtlarında da kullanılabilir. Aynı DNS mesajında birden fazla EDE seçeneği yer alabilir; EDE destekleyen alıcı bunları kabul edebilmelidir, ancak hepsine göre işlem yapmak zorunda değildir. DNS istemcisi, hangi EDE kodu gelirse gelsin RCODE için geçerli işleme kurallarını değiştirmez.
EDE Kodu Nasıl Okunur?
EDE kodunu yorumlarken temel DNS yanıt kodunu, INFO-CODE değerini ve varsa açıklama metnini birlikte değerlendirin:
- Önce RCODE değerini belirleyin; örneğin SERVFAIL, REFUSED veya NOERROR.
- Yanıtta EDE varsa INFO-CODE değerini ve tanımlı anlamını kontrol edin.
- EXTRA-TEXT alanındaki serbest açıklamayı ipucu olarak kullanın; her sunucunun aynı biçimde metin ürettiğini veya bu metnin doğrulandığını varsaymayın.
- Kodun hangi DNS bileşeninden geldiğini ve günlükler ile diğer sorgu sonuçlarıyla uyuşup uyuşmadığını değerlendirin.
Aşağıdaki tabloda geçen recursive resolver (özyinelemeli DNS çözümleyicisi), istemci adına DNS kayıtlarını bulur ve önbelleğinde tutar; DNSSEC doğrulaması yapacak biçimde de çalışabilir. Yetkili DNS sunucusu ise sorumlu olduğu DNS bölgesinin kayıtlarını yayımlar. Tabloda RFC 8914'te tanımlanan bazı EDE kodları yer alır.
| EDE kodu | Anlamı | Tanılamada verdiği ipucu |
|---|---|---|
| 6 | DNSSEC Bogus | Recursive resolver DNSSEC doğrulamasını yapmış, ancak işlem Bogus (geçersiz) durumuyla bitmiştir. |
| 13 | Cached Error | Recursive resolver SERVFAIL yanıtını önbellekten döndürür. |
| 15 | Blocked | Sorguyu çözen veya ileten DNS sunucusunun operatörü, kendi güvenlik politikası nedeniyle alan adını engellemiştir. |
| 22 | No Reachable Authority | Recursive resolver hiçbir yetkili DNS sunucusuna ulaşamamış veya onlardan yanıt alamamıştır. |
| 23 | Network Error | Başka bir DNS sunucusuyla iletişim sırasında giderilemeyen bir ağ hatası oluşmuştur. |
| 24 | Invalid Data | Yetkili DNS sunucusu, hizmet verdiği bölge için geçerli veri döndürememiştir. |
SERVFAIL Nedenleri EDE ile Nasıl Ayrılır?
SERVFAIL tek başına, DNS sunucusunun sorguyu tamamlayamadığını bildirir. EDE eklendiğinde benzer SERVFAIL yanıtlarının olası nedenleri birbirinden ayrılabilir. SERVFAIL ile EDE 6 birlikteyse öncelikle DNSSEC doğrulamasını; EDE 22 varsa yetkili DNS sunucularına erişimi; EDE 23 varsa sunucular arası iletişimdeki ağ hatasını inceleyin.
EDE 15-17, engelleme ve filtreleme politikasını kimin belirlediğini ayırır. EDE 18, sorguyu gönderen istemcinin yetkili kabul edilmediğini bildirir. EDE 20, sunucunun sorgu için yetkili yanıt veremediği ve sorguyu başka sunuculara sorarak tamamlamadığı durumlarda görülebilir. EDE 24 ise sunucunun hizmet verdiği DNS bölgesine ait kullanılabilir veriyi sunamadığını belirtir; örneğin bölge kopyasının geçerlilik süresi dolmuş olabilir.
RFC 8914 belirli EDE kodlarını belirli RCODE değerleriyle zorunlu olarak eşleştirmez. Bu nedenle kod tablosundan RCODE değerini tahmin etmeyin; yanıtta gerçekten bulunan iki değeri birlikte okuyun. EDE 23 gibi sunucular arası iletişimi bildiren bir kod, yalnız yetkili DNS sunucusuna değil, sorgunun gönderildiği başka bir DNS sunucusuna erişimle de ilgili olabilir.
NOERROR Yanıtında EDE 3 Ne Anlama Gelir?
EDE 3 (Stale Answer), recursive resolver belirlenen süre içinde yeni yanıtı alamadığında daha önce önbelleğe aldığı, normal saklama süresi dolmuş veriyi sunmasını açıklayabilir. Bu süreyi DNS kaydının TTL değeri belirler. Süresi geçmiş veriyi geçici olarak kullanmak, hata yanıtı yerine önceki bilgiyi döndürmeye yarar; fakat yetkili DNS sunucusundaki son değişiklikleri yansıtmayabilir. TTL süresi henüz dolmamış bir kaydın önbellekten verilmesi ise normaldir ve tek başına EDE 3 nedeni değildir.
EDE Bilgisinin Kaynağına Neden Bakılmalı?
İstemcinin gördüğü EDE, doğrudan yetkili DNS sunucusundan gelmiş olmayabilir. Bir recursive resolver veya sorguyu başka bir DNS sunucusuna ileten DNS forwarder (DNS yönlendirici), aldığı EDE'yi aktarmayabilir ya da kendi açıklamasını ekleyerek yeni bir EDE oluşturabilir. RFC 8914, aktarılan hatanın kaynağının EXTRA-TEXT içinde belirtilmesini önerir.
DNSSEC, EDE seçeneğinin kendisini doğrulamaz. Kimliği doğrulanan ve bütünlüğü korunan bir DNS bağlantısı, bilgiyi hangi sunucunun ilettiğini doğrulamaya yardımcı olur; ancak o sunucunun açıklamasının doğru olduğunu tek başına kanıtlamaz. Bu nedenle EDE kodunu ve açıklamasını sunucu günlükleriyle karşılaştırın. Aynı alan adı için farklı recursive resolverların yanıtları da ipucu verebilir; ancak bu hizmetlerin önbellekleri, DNSSEC doğrulama ayarları ve filtreleme politikaları farklı olabilir.
DNS Yanıtında EDE Neden Görünmeyebilir?
DNS sunucusu EDE üretmiyor, aradaki bir bileşen bilgiyi aktarmıyor veya kullanılan istemci bu alanı göstermiyor olabilir. EDE bulunmaması, DNS sorgusunun sorunsuz tamamlandığını ya da hatanın belirli bir nedeni olmadığını göstermez.
DNS mesajı bağımsız paketlerle çalışan UDP üzerinden taşınıyorsa istemcinin bildirdiği yanıt boyutu sınırı da önemlidir. Yanıt bu sınırı aştığında RFC 8914, sunucunun diğer verilerden önce EDE seçeneklerini çıkarmasını ve mesajın kısaltıldığını bildiren TC bitini ayarlamasını önerir. Bu yüzden uzun bir EXTRA-TEXT açıklaması, ek bilginin yanıta sığmamasına neden olabilir.







