İçeriğe geç
academia.sh

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.
  • A ve AAAA adres taşır; bir ada birden çok adres verilerek istekler dağıtılabilir, ancak sistem sunucuların sağlığını bilmez.
  • CNAME adı başka bir ada devreder; aynı adda başka kayıt bulunamayacağı için bölgenin kök adında kullanılamaz.
  • MX postanın teslim edileceği sunucuyu öncelik sırasıyla bildirir; bir alan adının web ve posta trafiği farklı sunuculara gidebilir.
  • NS yetkiyi bildirir ve hem bölgede hem üst düzeyde bulunur; SOA bölgenin yönetsel bilgilerini taşır.
  • TXT serbest 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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat