Ders 07 / 12
DNS Kayıt Türleri
Adres, takma ad, posta, ad sunucusu ve metin kayıtları; her türün hangi soruna yanıt verdiği ve takma ad kayıtlarının birleşim kısıtları.
İçindekiler
Önceki ders bir kaydın ad, yaşam süresi, sınıf, tür ve veri alanlarından oluştuğunu
gösterdi ve tür alanını tek bir örnekle, A ile geçti. Oysa bir adın altında yalnızca
adres tutulmaz.
Bu ders tür alanının aldığı değerleri ele alır. Her tür ayrı bir soruna yanıt verir; hangi türün neden var olduğunu görmek, alan adı sisteminin bir adres defterinden fazlası olduğunu gösterir.
Bölge ve Bölge Dosyası
Bir yetkili sunucunun sorumlu olduğu kayıtlar bütününe bölge (zone) denir. Bölgenin metin biçiminde yazılışına bölge dosyası adı verilir; her satır bir kayıttır.
ornek.test adının bölgesi şöyle görünebilir:
ornek.test. 3600 IN A 192.0.2.10 ornek.test. 3600 IN AAAA 2001:db8::10 www.ornek.test. 3600 IN CNAME ornek.test. ornek.test. 3600 IN MX 10 posta.ornek.test. posta.ornek.test. 3600 IN A 192.0.2.20 ornek.test. 600 IN TXT "dogrulama=abc123" ornek.test. 86400 IN NS ad1.ornek.test.
Satırların hepsi aynı beş alanlı düzeni izler. Aşağıdaki program bunu doğrular: satırları alanlarına ayırır ve tür alanına göre yeniden yazar.
BOLGE = """\ ornek.test. 3600 IN A 192.0.2.10 ornek.test. 3600 IN AAAA 2001:db8::10 www.ornek.test. 3600 IN CNAME ornek.test. ornek.test. 3600 IN MX 10 posta.ornek.test. posta.ornek.test. 3600 IN A 192.0.2.20 ornek.test. 600 IN TXT "dogrulama=abc123" ornek.test. 86400 IN NS ad1.ornek.test. """ def kaydi_coz(satir: str) -> tuple[str, int, str, str, str]: ad, ttl, sinif, tur, *veri = satir.split() return ad, int(ttl), sinif, tur, " ".join(veri) for satir in BOLGE.strip().splitlines(): ad, ttl, sinif, tur, veri = kaydi_coz(satir) print(f"{tur:<6} ad={ad:<18} ttl={ttl:<6} veri={veri}") print() turler = sorted({kaydi_coz(s)[3] for s in BOLGE.strip().splitlines()}) print("bolgedeki tur sayisi:", len(turler)) print("turler:", turler)
A ad=ornek.test. ttl=3600 veri=192.0.2.10 AAAA ad=ornek.test. ttl=3600 veri=2001:db8::10 CNAME ad=www.ornek.test. ttl=3600 veri=ornek.test. MX ad=ornek.test. ttl=3600 veri=10 posta.ornek.test. A ad=posta.ornek.test. ttl=3600 veri=192.0.2.20 TXT ad=ornek.test. ttl=600 veri="dogrulama=abc123" NS ad=ornek.test. ttl=86400 veri=ad1.ornek.test. bolgedeki tur sayisi: 6 turler: ['A', 'AAAA', 'CNAME', 'MX', 'NS', 'TXT']
Ayrıştırıcının tüm türler için aynı olması, tasarımın bir özelliğidir: tür alanı yalnızca veri alanının nasıl yorumlanacağını belirtir, kaydın çerçevesini değiştirmez. Yeni bir tür tanımlamak, var olan sunucuların kaydı taşımasını engellemez.
Kaydın adı ile aranan ad arasındaki ilişkiye dikkat edilmelidir: bir bölgede aynı ada ait birden çok kayıt bulunabilir. Sorgu, ad ve tür ikilisiyle yapılır.
Adres Kayıtları
A kaydı bir IPv4 adresi, AAAA kaydı bir IPv6 adresi taşır. İkisi ayrı türlerdir ve bir
ad ikisine birden sahip olabilir; yukarıdaki bölgede ornek.test için ikisi de tanımlıdır.
Bir ada birden çok adres kaydı verilebilir. Bu durumda çözümleyici hepsini döndürür ve istemci birini seçer. Bu, istekleri birden çok sunucuya dağıtmanın en yalın yoludur.
Yöntemin sınırı belirgindir: alan adı sistemi, adreslerin hangisinin çalışır durumda olduğunu bilmez. Bir sunucu arızalandığında kaydı elle kaldırılana kadar dağıtıma dahil kalır ve kaldırıldıktan sonra da önbelleklerde yaşam süresi kadar yaşamayı sürdürür. Önceki derste kurulan yaşam süresi ödünleşiminin doğrudan sonucudur bu.
Takma Ad Kayıtları
CNAME kaydı bir adresi değil, başka bir adı gösterir. www.ornek.test sorulduğunda
yanıt “bu adın karşılığı ornek.test adıdır” olur ve çözümleyici aramayı o ad üzerinden
sürdürür.
Kullanım gerekçesi, önceki derste kurulan dolaylılık fikrinin bir katman daha uygulanmasıdır: adres bir yerde tanımlanır, diğer adlar oraya bağlanır. Adres değiştiğinde tek bir kayıt güncellenir.
Bu türün iki kısıtı vardır ve ikisi de aynı nedenden gelir: takma ad kaydı, adın tamamını başka bir ada devreder.
Aynı adda başka kayıt bulunamaz. Bir ad için takma ad kaydı varsa, o ad için başka türde kayıt tanımlanamaz. Tanımlanabilseydi çelişki doğardı: ad hem “karşılığım şu addır” hem de “adresim şudur” derdi.
Bölgenin kök adında kullanılamaz. ornek.test adının kendisi takma ad olamaz, çünkü o
adda zaten bulunması zorunlu olan kayıtlar vardır — aşağıda ele alınan yetki ve ad sunucusu
kayıtları. Birinci kısıt gereği bunlar takma adla bir arada duramaz.
Bu ikinci kısıt işletmede sık karşılaşılan bir engeldir: www.ornek.test adı bir
sağlayıcının adına takma adla bağlanabilirken, ornek.test adı için aynı şey yapılamaz ve
oraya doğrudan bir adres kaydı yazmak gerekir.
Posta Kayıtları
MX kaydı, o alan adına gönderilen postanın hangi sunucuya teslim edileceğini söyler.
Veri alanı iki parçadır: bir öncelik sayısı ve bir sunucu adı.
ornek.test. 3600 IN MX 10 posta.ornek.test.
Öncelik sayısı küçükse tercih edilir. Birden çok posta kaydı tanımlandığında gönderen taraf en küçük sayılı sunucuyu dener, ulaşamazsa sıradakine geçer. Sayının kendisi bir anlam taşımaz; yalnızca sıralama içindir.
Bu kaydın varlığı önemli bir ayrımı gösterir: bir alan adının web trafiği ile posta trafiği
farklı sunuculara gidebilir. ornek.test sayfası 192.0.2.10 adresinden gelirken, aynı
adın postası posta.ornek.test üzerinden 192.0.2.20 adresine teslim edilir. Alan adı bir
makineyi değil, bir yönetim alanını adlandırır.
Posta kaydının işaret ettiği ad bir takma ad olmamalı, doğrudan adres kaydı taşımalıdır.
Ad Sunucusu ve Yetki Kayıtları
NS kaydı, bir bölgenin yetkisinin hangi sunuculara ait olduğunu bildirir. Önceki dersteki
çözümleme zincirinde her adımda alınan “şuna sor” yanıtı, tam olarak bu kayıttır.
Bu kayıt iki yerde birden bulunur: bölgenin kendisinde ve bir üst düzeydeki bölgede. Üst düzeydeki kopya, yetkinin devredildiğini gösteren kayıttır; önceki derste anlatılan kayıt sırasında kayıt kuruluşuna bildirilen budur. İki kopyanın uyuşmaması, çözümlemede güç saptanan tutarsızlıklara yol açar.
Her bölgede ayrıca bir SOA kaydı bulunur. Bu kayıt bölgenin yönetsel bilgilerini taşır:
birincil ad sunucusu, sorumlu adres, bölgenin sürüm numarası ve ikincil sunucuların
kopyalarını ne sıklıkta yenileyeceğini belirleyen süreler. Sürüm numarası, ikincil
sunucuların bölgenin değişip değişmediğini anlamasını sağlar.
Metin Kayıtları
TXT kaydı serbest metin taşır. Belirli bir işlevi yoktur; bu yüzden bir adın sahibi
olduğunu kanıtlamak isteyen düzenler için ortak bir araç durumundadır.
Kullanım kalıbı şudur: bir hizmet, ad sahibinden bölgesine belirli bir metni koymasını ister. Metin göründüğünde, o adın yönetimine erişimi olduğu kanıtlanmış olur. Bu, önceki derste kurulan yetki devrine dayanır — bölgeye kayıt yazabilen, o adın yetkilisidir.
Posta doğrulama düzenleri de bu kayıt türü üzerinden çalışır ve belirli bir sözdizimi izleyen metinler yazar. Bu düzenlerin ayrıntısı Uygulama Katmanı Protokolleri kursunun konusudur.
Tür Seçimi
| Tür | Yanıtladığı soru |
|---|---|
A |
Bu adın IPv4 adresi nedir |
AAAA |
Bu adın IPv6 adresi nedir |
CNAME |
Bu ad hangi adın yerine geçiyor |
MX |
Bu adın postası nereye teslim edilir |
NS |
Bu bölgenin yetkisi kimde |
SOA |
Bu bölgenin yönetsel bilgileri neler |
TXT |
Bu ada iliştirilmiş serbest metin nedir |
Bir bölge tasarlarken izlenen sıra buradan çıkar: yetki kayıtları bölgenin var olması için zorunludur, adres kayıtları hizmetin ulaşılabilirliği için gereklidir, takma ad kayıtları bakımı azaltır, posta ve metin kayıtları ise alan adına bağlı diğer hizmetleri tanımlar.
Özet
- Bölge, bir yetkili sunucunun sorumlu olduğu kayıtlar bütünüdür; her kayıt aynı beş alanlı düzeni izler ve tür alanı yalnızca veri alanının yorumunu belirler.
AveAAAAadres taşır; bir ada birden çok adres verilerek istekler dağıtılabilir, ancak sistem sunucuların sağlığını bilmez.CNAMEadı başka bir ada devreder; aynı adda başka kayıt bulunamayacağı için bölgenin kök adında kullanılamaz.MXpostanın teslim edileceği sunucuyu öncelik sırasıyla bildirir; bir alan adının web ve posta trafiği farklı sunuculara gidebilir.NSyetkiyi bildirir ve hem bölgede hem üst düzeyde bulunur;SOAbölgenin yönetsel bilgilerini taşır.TXTserbest metin taşır ve ad üzerindeki yetkiyi kanıtlamak için kullanılır.
Sonraki Adım
Bu ders ornek.test adının 192.0.2.10 adresini gösterdiğini kayıt düzeyinde kurdu.
Geriye o adreste ne olduğu sorusu kalır: orada sürekli çalışan, isteği bekleyen bir makine
bulunmalıdır. Sonraki ders bu makinenin nasıl sağlandığını, aynı adresin birden çok alan
adına nasıl hizmet verebildiğini ve barındırma seçenekleri arasındaki ödünleşimleri ele
alacak.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.