Ana içeriğe geç

Bölüm 4: DNS Kayıtları

6 dakikalık okumaGüncelleme:

Ağlar'a “Sen”i Katmak kitabının bir bölümü: adres çubuğuna yazdığın tek bir isteğin peşinden bakırla fiberin fiziğine inip karşı taraftan geri dönen uzun bir teknik yolculuk.

Kısım 1: Yola Çıkmadan Önce (Bölüm 1-5)

Tüm bölümler
  1. Giriş
  2. Adres Çubuğundan İsteğe
  3. Paket Anahtarlamalı Yol
  4. İsimden Adrese
  5. DNS Kayıtları
  6. Önbellek, Tazelik ve Güven
  7. Port Numarası ve Soket
  8. Bağlantısız Taşıma: UDP
  9. Üç Adımlı El Sıkışma
  10. Simetrik Şifreleme
  11. Açık Anahtarlı Kriptografi
  12. TLS El Sıkışması
  13. Sertifika Zinciri
  14. HTTP Mesajının Anatomisi
  15. Durum, Çerez ve Oturum
  16. HTTP/2'den HTTP/3'e
  17. İçerik Dağıtım Ağları
  18. Diğer Uygulama Protokolleri
  19. Katmanlı Mimari
  20. Hizmet ve Protokol
  21. Encapsulation ve Başlıklar
  22. Paket Yakalama ve Çözümleme
  23. Ağ Interface Kartı
  24. Fiziksel Adresleme
  25. Hata Sezme ve CRC
  26. Adres Çözümleme: ARP
  27. Ortam Erişimi: CSMA/CD
  28. Switch'ler
  29. Ağ Topolojileri
  30. Sanal Yerel Ağlar
  31. Kablosuz Erişim: 802.11
  32. Radyo Kanalı ve Kapasite
  33. Kablosuz Ağ Güvenliği
  34. Hücresel Ağlar
  35. Spektrum ve Kuşaklar
  36. Hareketlilik ve Aktarma
  37. Adres Kiralama: DHCP
  38. Adresin Anatomisi
  39. Adres Tükenmesi ve IPv6
  40. Router Mimarisi
  41. Kuyruk Yönetimi
  42. Cihaz Yapılandırma
  43. Routing Protokolleri
  44. Kontrol Düzlemi ve SDN
  45. Ağ İzleme ve Yönetimi
  46. Alanlar Arası Routing
  47. Adres Çevirisi
  48. Ara Kutular
  49. Tünelleme ve IPsec
  50. Firewall'lar
  51. Ağ Saldırıları
  52. Operatör ve Metro Ağları
  53. Bitten Sinyale
  54. Sembol Hızı ve Kanal Kapasitesi
  55. Multiplexing Teknikleri
  56. İletim Ortamları
  57. Bakır Kablo Sonlandırma
  58. Fiber Sonlandırma
  59. Fiber Optik İletim
  60. Bakır Erişim Ağı: DSL
  61. DSL'de Hız ve Mesafe
  62. Pasif Optik Ağlar
  63. Kablo Erişim Ağları
  64. Kablo Modem ve CMTS
  65. Denizaltı Kabloları
  66. Veri Merkezi Ağları
  67. Encapsulation Çözme
  68. Güvenilir Aktarım
  69. Tıkanıklık Denetimi
  70. Trafik Çözümleme
  71. Gecikme Bütçesi
  72. Soket Programlama
  73. Eşten Eşe ve Protokol Tasarımı
  74. Uyarlanır Video Akışı
  75. Gerçek Zamanlı Ses ve Görüntü
  76. Kablosuz Sensör Ağlarının Mimarisi
  77. Sensör Ağlarında Ortam Erişimi
  78. Sensör Ağlarında Yönlendirme ve IP
  79. Zaman Eşitleme ve Konum Bulma
  80. Sensör Ağı Uygulamaları
  81. Mobil Kablosuz Sensör Ağları
  82. Son Söz

Resolver’ın getirdiği şey çıplak bir sayı değildi, bir satırdı. O satırın bir türü vardı ve adres, türlerden yalnızca biri.

Aynı ada posta sunucusu da yazılıyor, takma ad da, port numarası da, hatta kimin sertifika verebileceği de. Peki bir ada kaç çeşit cevap asılabiliyor ve her biri kime ne söylüyor?

Cevap tek çeşit değil

Zincir boyunca dönen her satır aynı kalıptadır. Dört alan var: adın kendisi, karşılığı olan değer, kaydın türü ve ne kadar süre geçerli sayılacağı. Bu satırlara kaynak kaydı diyoruz.

Satırlar gerçekte şöyle görünüyor:

ornek.com.        300     IN   A       203.0.113.9
ornek.com.        3600    IN   NS      ns1.ornek.com.
ornek.com.        3600    IN   MX      10 posta.ornek.com.
www.ornek.com.    300     IN   CNAME   ornek.com.

Soldan sağa: ad, yaşam süresi (TTL, saniye cinsinden), sınıf, tür, değer. Adın sonundaki nokta önceki bölümde anlattığım gizli kök; burada gizlenmiyor. Sınıf alanı bugün pratikte hep IN çıkıyor: sistem başka ağ aileleri için de tasarlanmıştı ama internetten başkası kalmadı. Kalıntısı hâlâ duruyor: 1970’lerin Chaosnet ağından kalan CH sınıfı bugün yalnızca bir sunucuya hangi yazılımı çalıştırdığını sormak için kullanılıyor (dig CH TXT version.bind). Posta satırındaki baştaki sayı ise öncelik: birden fazla sunucu varsa küçük olan önce deneniyor.

Kendi makinende görmek istersen dig ornek.com NS ya da Windows’ta nslookup -type=MX ornek.com bu satırların türe göre süzülmüş hâlini döküyor. Eskiden hepsini tek seferde getiren ANY sorgusunu çoğu sunucu artık cevaplamıyor; RFC 8482 onu fiilen emekliye ayırdı, çünkü küçük bir soruya kocaman bir cevap döndürmek yükseltme saldırısının en sevdiği şeydi.

Türü bilmek işe yarıyor, çünkü aynı ada farklı türlerde farklı cevaplar durabiliyor. Tür alanı 16 bit ve yüzlerce değer tanımlı; gündelik hayatta karşına çıkanlar bir sayfaya sığıyor:

türnone söylüyor
A1adın IPv4 karşılığı
AAAA28adın IPv6 karşılığı
NS2bu alanın yetkili sunucusu; zincirin halkalarını bu tür kuruyor
CNAME5bu ad aslında şu addır (kanonik ad)
SOA6alanın künyesi: sahibi, seri numarası, zamanlayıcıları
PTR12adresten ada, yani ters yön
MX15bu alana gelen postanın teslim edileceği makine ve önceliği
TXT16serbest metin; posta doğrulama kayıtları burada durur
SRV33bir hizmetin hangi makinede ve hangi portta olduğu
CAA257bu alana kimin sertifika verebileceği
HTTPS65bağlantı daha kurulmadan hizmet parametreleri

Son üçü ötekilere göre genç ve üçü de kitabın başka bölümlerine bağlanıyor.

SRV kaydı DNS’in tek başına yapamadığı bir şeyi yapıyor: port numarasını da söylüyor. A kaydı sana yalnızca makineyi verir, portu uygulamanın bilmesi gerekir; 6. bölümde iyi bilinen port numaralarının niçin ezberlendiğini göreceğiz. SRV bu ezberi kaldırıyor ve adı _hizmet._protokol.alan biçiminde yazıyor: _sip._tcp.ornek.com.

CAA kaydı bir yasak listesi. Sitenin kimliğini kanıtlayan sertifikaları sertifika makamları basıyor; zincirin nasıl işlediğini 12. bölümde göreceğiz. Her makam teknik olarak her ad için sertifika üretebiliyor; CAA alan sahibine “benim adıma yalnızca şu makam sertifika verebilir” deme imkânı veriyor. Makamlar sertifikayı basmadan önce bu kaydı sorgulamak zorunda.

HTTPS kaydı ise tarayıcıya bağlantıyı kurmadan önce yol gösteriyor: hangi protokol sürümleri destekleniyor, hangi port kullanılıyor, varsa şifreli istemci merhabası için hangi açık anahtar gerekiyor. 15. bölümde HTTP/3’e geçişin bir gidiş-dönüşü nasıl kısalttığını konuşurken bu kayda geri döneceğiz.

Adres kaydının iki ayrı türü olması da tesadüf değil: internette iki ayrı adres ailesi kullanılıyor ve çoğu makine ikisini birden istiyor. Farkı ve neden hâlâ ikisinin birden yaşadığını 38. bölümde açacağız.

Ters yön ayrı bir ağaçta yürüyor

Elinde bir adres var ve hangi ada ait olduğunu öğrenmek istiyorsun. DNS bu soruyu doğrudan cevaplayamaz, çünkü ağaç adlara göre bölünmüş; adresleri arayacak bir dizin yok.

Çözüm zarif: adres bir ada çevriliyor. IPv4 adresinin dört sayısı ters sırada dizilip in-addr.arpa alanının altına asılıyor.

203.0.113.9   →   9.113.0.203.in-addr.arpa.   PTR   sunucu.ornek.com.

Ters sıralamanın sebebi hiyerarşi. Alan adlarında en genel parça sağdadır (com), adreslerde ise soldadır (203). Sırayı çevirince adresin de en genel parçası sağa geçiyor ve DNS’in olağan yetki devri mekanizması hiç değiştirilmeden çalışıyor: bir kuruluşa 203.0.113.0/24 bloğu tahsis edildiğinde ona 113.0.203.in-addr.arpa alanının yetkisi devrediliyor. Sondaki /24, adresin ilk 24 bitinin, yani ilk üç sayısının sabit olduğunu söylüyor; blok, son sayısı 0 ile 255 arasında değişen 256 adresten oluşuyor. Bu yazımı 37. bölümde açacağız.

IPv6’da aynı numara dörtlük bit gruplarıyla yapılıyor ve ağaç ip6.arpa altında duruyor; adres 32 basamağa açıldığı için ters kayıt adı da 32 etiketten oluşuyor.

Kritik ayrıntı şu: iki yön birbirini doğrulamak zorunda değil. A kaydı bir adı bir adrese bağlarken PTR kaydı adresi bambaşka bir ada bağlayabilir, çünkü ikisinin sahibi farklıdır: ileri yön alan adının sahibine, ters yön adres bloğunun sahibine aittir. Posta sunucuları bu yüzden ikisinin uyuşmasını ayrıca kontrol eder; uyuşmayan bir göndericiye şüpheyle bakılır ve postası çoğu zaman spam klasörüne düşer.

Aynı ada birden çok adres kaydı da konabiliyor. Cevapta birden fazla sayı döndüğünde istemciler farklı makinelere dağılıyor ve yük paylaşılıyor. Tek bir ad, tek bir makine demek değil.

DerinleşmeBir yetkili sunucu kayıtları nereden alıyor, ikinci sunucu onları nasıl öğreniyor?

Yetkiyi taşıyan birim ada değil, bölgeye (zone) ait. Bölge, ağacın bir sunucunun gerçekten elinde tuttuğu parçasıdır ve yetki devredilen her yerde kesilir. ornek.com bölgesi www ve posta kayıtlarını içerir; ama ar-ge.ornek.com ayrı bir ekibe devredilmişse orada biter. Alan ağacın tamamını, bölge yalnızca bir sunucunun sorumlu olduğu kesiti anlatıyor; ikisi eşanlamlı değil.

Her bölgenin en başında tek bir SOA kaydı durur ve o kayıt bölgenin künyesidir:

ornek.com.  3600  IN  SOA  ns1.ornek.com. yonetici.ornek.com. (
                          2026082201 ; seri numarası
                          7200       ; yenileme  (refresh)
                          900        ; yeniden deneme (retry)
                          1209600    ; süre bitimi (expire)
                          3600 )     ; asgari, negatif önbellek süresi

İkinci alan sorumlunun e-posta adresi ve @ işareti noktaya çevrilmiştir, çünkü DNS adlarında @ yeri yok. Geri kalan beş sayı bir kopyalama düzeneğini işletiyor.

Bir bölgenin birincil sunucusu kayıtların yazıldığı yerdir; ikincil sunucular kopyayı ondan çeker. İkincil sunucu her refresh süresinde birincile yalnızca SOA kaydını sorar ve tek bir şeye bakar: seri numarası büyüdü mü? Büyümediyse hiçbir şey yapmaz. Büyüdüyse bölgeyi çeker: tamamını çekmenin adı AXFR, yalnızca değişenleri çekmenin adı IXFR. Bekleyecek hâli yoksa birincil NOTIFY mesajıyla ikincilleri dürter ve kopyalama saniyeler içinde başlar.

retry, başarısız bir denemeden sonra ne kadar bekleneceğini söylüyor. expire ise en ilginci: ikincil sunucu birincile bu süre boyunca hiç ulaşamazsa cevap vermeyi bırakıyor. Sebep sağlık değil dürüstlük: iki hafta önceki kayıtlarla cevap vermek, cevap vermemekten daha zararlı.

Son sayı bir kez yeniden tanımlandı. Başlangıçta bölgedeki kayıtların varsayılan yaşam süresiydi; RFC 2308 onu negatif önbellek süresine çevirdi. Yani “bu ad yok” cevabının ne kadar hatırlanacağını bu sayı belirliyor. Var olmayan bir adı sorup sorup aynı cevabı almak da yük; o yükün de bir zamanlayıcısı olması gerekiyordu.

Bir uyarı da düşeyim. AXFR bir bölgenin tamamını döker; yani yanlış yapılandırılmış bir sunucu, kurumun bütün iç makine adlarını isteyen herkese verir. Sızma testlerinin ilk adımlarından biri budur; doğru yapılandırma, transferi yalnızca bilinen ikincil sunuculara açmaktır.

Özet

  • Her cevap bir kaynak kaydıdır: adı, yaşam süresi, türü ve değeri olan bir satır; sınıf alanı bugün pratikte hep IN.
  • Cevap tek çeşit değil. Adres, sunucu, posta ve takma ad kayıtlarının yanında SRV portu, CAA sertifika iznini, HTTPS ise bağlantı parametrelerini taşıyor.
  • Ters yön ayrı bir ağaçta yürüyor: adres ters çevrilip in-addr.arpa altına asılıyor; iki yönün uyuşması zorunlu değil, çünkü sahipleri farklı.
  • Yetki bölgeye aittir: bölgenin künyesi SOA kaydıdır ve ikincil sunucular kopyayı ancak seri numarası büyüdüğünde çeker.

Elinde artık bir sayı var ve soket açılabilir. Ama o sayıyı sana bir yabancı söyledi ve sen sorgulamadan kabul ettin. Sana bir sayı söylediler; peki söyleyenin doğruyu söylediğini nereden biliyorsun?

5. bölüme devam et: Önbellek, Tazelik ve Güven