EDNS Nedir ve DNS Mesajlarını Nasıl Genişletir?

EDNS (Extension Mechanisms for DNS), alan adlarına ait bilgileri sunan DNS sisteminde mesajların ek özellikler taşımasını sağlayan bir genişletmedir. Standartta tanımlanan sürüm EDNS(0) olarak adlandırılır. EDNS ayrı bir ad çözümleme protokolü değildir; mevcut DNS mesajına OPT adı verilen bir sözde kayıt ekleyerek çalışır.
EDNS Nasıl Çalışır?
DNS sorgusunu gönderen taraf EDNS kullanmak istediğinde mesajın ek kayıtlar bölümüne bir OPT sözde kaydı koyar. Bu kayıt, alan adına ait IP adresi gibi bir veri taşımaz; yalnız o sorgu ve yanıt için geçerli kontrol bilgilerini taşır. OPT önbelleğe alınmaz ve alan adının DNS bölgesine normal bir kayıt gibi eklenmez. EDNS destekleyen sunucu, OPT içeren sorguya verdiği yanıtta kendi OPT kaydını da gönderir.
EDNS desteği, DNS sorgusu ve yanıtını doğrudan birbirleriyle paylaşan iki uç arasında belirlenir. Cihaz ile recursive resolver (özyinelemeli DNS çözümleyicisi) arasındaki EDNS kullanımı, recursive resolver ile yetkili DNS sunucusu arasındaki kullanımdan ayrıdır; OPT kaydı çözümleme zincirinin başından sonuna aynen taşınmaz.
OPT Sözde Kaydının Yapısı
OPT kaydı normal bir kaynak kaydının alanlarını EDNS denetim bilgileri için yeniden kullanır. Tablodaki UDP, bağlantı kurmadan bağımsız veri birimleri gönderen taşıma protokolüdür. Alanların EDNS içindeki anlamı aşağıdaki gibidir.
| Alan | EDNS İçindeki İşlevi |
|---|---|
| NAME | Kök alan adını temsil eden sıfır uzunluklu ad kullanılır. |
| TYPE | OPT kaydı için 41 değeridir. |
| CLASS | Sorguda, istek sahibinin kabul edebildiğini bildirdiği en büyük UDP yük boyutunu taşır. |
| TTL alanı | Normal kayıtlardaki önbellekte tutma süresini belirtmez; RCODE (Response Code) alanının ek bitlerini, EDNS sürümünü ve bayrakları taşır. |
| RDLEN | RDATA bölümünün bayt cinsinden toplam uzunluğudur. |
| RDATA | Sıfır veya daha fazla EDNS seçeneğini kod, uzunluk ve veri biçiminde taşır. |
Bu yapı, DNS başlığındaki sınırlı alanları büyütmek için bütün protokolü değiştirmek yerine tek bir ek kayıt kullanır. Bir DNS mesajında en fazla bir OPT kaydı bulunabilir; birden fazla OPT içeren bir sorguya sunucu biçim hatasını belirten FORMERR yanıtını verir.
Sürüm ve Seçenek Alanları
EDNS sürüm alanı, tarafların hangi EDNS düzeyini uyguladığını belirtir. RFC 6891'de tanımlanan EDNS sürümü 0'dır; karşı taraf istenen sürümü desteklemiyorsa BADVERS yanıt koduyla sürüm uyuşmazlığını bildirebilir.
OPT kaydının değişken bölümünde seçenekler kod, uzunluk ve veri alanlarıyla taşınır. Bu mekanizma, belirli bir yeni özellik için klasik DNS mesaj başlığına yeni sabit alan eklemek yerine bağımsız EDNS seçeneklerinin tanımlanmasına olanak verir; tanınmayan seçenek kodlarının yok sayılması da yeni seçeneklerin eski uygulamalarla birlikte çalışmasını kolaylaştırır.
UDP Boyutu EDNS ile Nasıl Genişler?
EDNS kullanılmadan UDP ile taşınan DNS mesajları 512 baytla sınırlıdır. EDNS kullanan istek sahibi, OPT kaydındaki CLASS alanında alabileceği en büyük UDP yükünü bildirir. Bu boyut DNS mesajını kapsar; IP ve UDP başlıklarını içermez. Sunucu yanıtı bu üst sınırı aşmayacak ve kendi ağ koşullarına da uyacak biçimde oluşturur.
Bu değer, ağ yolunda parçalanmadan taşınabilecek en büyük IP paketinin boyutunu belirten MTU ile aynı şey değildir. Bir recursive resolver büyük bir UDP yükünü yerel olarak kabul edebilse bile aradaki bağlantılar, güvenlik duvarları veya diğer ağ cihazları daha küçük paketler gerektirebilir. RFC 9715, IP parçalanmasını azaltmak için varsayılan en büyük DNS/UDP yükünün 1400 baytı aşmamasını önerir; daha küçük değerler de kullanılabilir.
EDNS ayrıca 512 bayttan küçük bir değer ilan ederek klasik sınırı aşağı çekmek için kullanılmaz; 512'nin altındaki değerler 512 olarak ele alınır. İstek sahibi gerçekten alabileceği boyutu bildirmelidir. Uygun boyut seçimi, yanıtın kesilmesini ve sorgunun sıralı, güvenilir veri iletimi sağlayan TCP üzerinden tekrarlanmasını azaltabilir.
EDNS ile DNSSEC Arasındaki İlişki
DNS kayıtlarını dijital imzalarla doğrulayan DNSSEC, yanıtlara imza ve anahtar kayıtları eklenmesini gerektirebilir. Bu ek kayıtlar yanıtın boyutunu büyütür. Bu nedenle 512 baytlık klasik UDP sınırı DNSSEC yanıtlarında daha sık yetersiz kalabilir; EDNS'in daha büyük UDP yükü bildirme mekanizması bu yanıtların kesilmeden taşınma ihtimalini artırır.
EDNS ayrıca OPT kaydındaki DO (DNSSEC OK) bayrağını taşır. Bu bayrak, istek sahibinin DNSSEC ile ilgili verileri kabul edebildiğini belirtmek için kullanılır. EDNS burada DNSSEC'in imza doğrulamasını yapmaz ve DNS verisini kendisi güvenli hale getirmez; yalnız DNSSEC'in ihtiyaç duyduğu sinyalleme ve daha büyük mesaj taşıma olanağını sağlar.
Parçalanma ve TCP'ye Geçiş Nasıl Birlikte Çalışır?
EDNS daha büyük UDP yanıtlarına izin verdiğinde DNS mesajı tek bir IP paketine sığmayabilir. IPv4 paketini gönderen cihaz veya yol üzerindeki bir yönlendirici, parçalamaya izin veriliyorsa paketi bölebilir. IPv6 yönlendiricileri ise paket parçalamaz; bunu yalnız gönderen cihaz yapabilir. Parçalardan birinin kaybolması veya güvenlik duvarının parçaları engellemesi, DNS yanıtının bütünüyle kullanılamamasına yol açabilir.
Bu nedenle EDNS'in amacı mümkün olan en büyük UDP mesajını göndermek değildir. Amaç, tarafların gerçek alım kapasitesini bildirerek 512 bayt sınırının gereksiz yere oluşturduğu kesilmeyi azaltmaktır. Yanıtın gerekli kayıtları izin verilen UDP boyutuna sığmazsa sunucu, yanıtın tamamlanamadığını TC (Truncated) bayrağıyla bildirir. İstek sahibi sorguyu TCP üzerinden tekrar gönderebilir; EDNS bu gereksinimi ortadan kaldırmaz.
Parçalanma sorunu yaşanan ağlarda belirti çoğu zaman EDNS'in varlığından değil, ilan edilen boyut ile gerçek ağ yolunun taşıyabildiği boyut arasındaki uyumsuzluktan kaynaklanır. Aradaki cihazların büyük veya parçalı UDP paketlerini hatalı biçimde filtrelemesi de benzer zaman aşımı ve yeniden deneme davranışları oluşturabilir.
EDNS Desteklenmediğinde veya Engellendiğinde Ne Olur?
Bir sorguda OPT kaydının bulunması, istek sahibinin belirtilen EDNS sürümünü desteklediğini gösterir. OPT kaydı yoksa yanıt veren taraf, istek sahibinin EDNS kullanmadığını varsaymalı ve yanıta kendiliğinden OPT kaydı eklememelidir.
EDNS uygulamayan bir sunucunun OPT içeren sorguya standart davranış olarak FORMERR döndürmesi ve yanıta OPT eklememesi beklenir. Buna karşılık EDNS destekleyen sunucu, bozuk bir OPT kaydı için FORMERR ile birlikte OPT de döndürür; bu yüzden yalnız hata koduna bakarak desteğin bulunmadığı sonucuna varılmaz. İstek sahibi karşı tarafın EDNS(0) desteklemediğini saptarsa, ihtiyaç duyduğu özellik EDNS'e bağlı değilse OPT kaydı olmadan yeniden sorgu gönderebilir. DNSSEC veya EDNS üzerinden taşınması gereken başka bir özellik zorunluysa bu geri dönüş aynı işlevi korumaz.
Ağ yolundaki güvenlik duvarı, yük dengeleyici veya trafiğe aracılık eden proxy gibi cihazlar da EDNS'i bozabilir. Uyumlu bir ara cihazın DNS/UDP trafiğini 512 baytla sınırlamaması ve yalnız iletim yapıyorsa OPT içeriğini silmemesi gerekir; aksi davranış EDNS destekli iki uç arasında bile zaman aşımı, kesilme veya gereksiz TCP tekrarlarına neden olabilir.
EDNS ile İlişkili DNS Zaman Aşımları Nasıl İncelenir?
DNS yanıtında EDNS görülmesi tek başına hata anlamına gelmez. Yönetici, inceleme yetkisi bulunan ağda aynı DNS sunucusuna aynı ad ve kayıt türü için sorgular gönderirken OPT kaydında farklı UDP yanıt boyutları bildirebilir ve sonuçları TCP sorgusuyla karşılaştırabilir. Küçük UDP yanıtı ve TCP çalışırken büyük UDP yanıtının kaybolması, boyut veya parçalanma sorununu düşündürür; tek başına nedenini kanıtlamaz.
Yönetici, sorgunun sunucuya ulaşıp ulaşmadığını, yanıtın sunucudan çıkıp çıkmadığını, TC bayrağını ve yanıtın hangi izleme noktasına kadar görüldüğünü paket kayıtlarından kontrol eder. Zaman aşımı tek başına EDNS desteğinin bulunmadığını göstermez. DNSSEC doğrulamasını veya güvenlik duvarını kapatmak yerine boyut ayarı, DNS sunucusunun erişilebilirliği ve gerekli UDP/TCP erişimi incelenir.







