Glue record DNS döngü kırma mekanizması ve child nameserver yapısı

Glue Record Nedir? Child Nameserver Sorunu Nasıl Çözülür?

ns1.example.com'a ulaşmak için example.com zone'unu sorgulamamız gerekiyor. example.com zone'unu sorgulamak için ise ns1.example.com'un adresini bilmemiz gerekiyor. Bu döngü, kendi yönettiği zone'un alt alanında konumlandırılmış bir nameserver'ın yarattığı klasik çözümleme tıkanıklığıdır. DNS bu durumu glue record ile aşar: parent zone'a — çoğu durumda TLD nameserver'ına — nameserver'ın IP adresi doğrudan yazılır ve resolver zinciri kırmadan hedefe ulaşır.

Glue record, RFC 1034 ve RFC 4472'de tanımlanan "additional section" mekanizmasının uygulamasıdır. Resolver, delegation yanıtı alırken ek bölümde nameserver'ın IP adresini de bulur; ayrı bir A sorgusu yapmak zorunda kalmaz. Bu ek kayıt zone dosyasında değil, parent zone'da — yani registrar'ın TLD ile koordineli biçimde yönettiği alanda — bulunur. Zone dosyanıza yazdığınız ns1.example.com A 203.0.113.1 kaydı glue record değildir; bu kaydın aynısının TLD nameserver'ına da bildirilmiş olması gerekir.

Kendi nameserver altyapısını barındırmayan, harici bir DNS sağlayıcısı kullanan sitelerin büyük çoğunluğu glue record ile hiçbir zaman doğrudan ilgilenmez. ns1.dnshosting.com gibi bir nameserver kullandığınızda glue record dnshosting.com zone'unda mevcuttur ve sizin müdahaleniz gerekmez. Glue record zorunluluğu yalnızca nameserver hostname'inin kendi zone'u içinde kaldığı "child nameserver" yapılarında devreye girer.

Glue record gerektiren ve gerektirmeyen nameserver yapıları

Bir glue record gerekip gerekmediğini anlamanın en hızlı yolu nameserver hostname'inin son ekine bakmaktır. Nameserver, yönetilen domain'in alt alanı mı? Evet ise glue record zorunludur. Hayır ise gerekmez.

; example.com zone'unda NS kayıtları:
example.com.  86400  IN  NS  ns1.example.com.
example.com.  86400  IN  NS  ns2.example.com.
; → ns1 ve ns2, example.com'un alt alanı: GLUE RECORD GEREKLİ
; example.com zone'unda NS kayıtları:
example.com.  86400  IN  NS  ns1.dnshosting.com.
example.com.  86400  IN  NS  ns2.dnshosting.com.
; → ns1 ve ns2, farklı zone'da: GLUE RECORD GEREKMİYOR

Bu ayrım, NS kaydı ve zone delegation mekanizmasının doğrudan bir sonucudur. Harici nameserver kullanıldığında resolver, dnshosting.com zone'unu ayrıca sorgulayarak nameserver'ın IP'sini bulabilir; döngü oluşmaz. Child nameserver yapısında ise aynı zone'a döngüsel bir bağımlılık söz konusudur ve DNS bu döngüyü kendi kendine çözemez.

Beyaz etiket (white-label) nameserver yapılandırmaları bu gerekliliği sıkça gündeme getirir. Bir hosting firması müşterilerine ns1.musteri-domain.com ve ns2.musteri-domain.com biçiminde markalı nameserver sunduğunda, her müşteri domain'i için glue record kayıt ettirmek zorunlu hale gelir. Bu senaryo, glue record yönetiminin yalnızca büyük altyapıların değil, kendi markalı DNS çözümü sunan küçük ölçekli hizmet sağlayıcıların da ilgilenmesi gereken bir konu olduğunu gösterir.

Registrar panelinde glue record oluşturma

Glue record, zone dosyasından değil registrar yönetim panelinden oluşturulur. Registrar bu bilgiyi TLD nameserver'ına iletir; TLD, delegation yanıtlarına nameserver IP'sini ek bölümde ekler. İşlem genellikle "Host Kaydı", "Child Nameserver" veya "Register Nameserver" başlığı altında sunulur.

Adımlar registrar'dan registrar'a küçük farklılıklar gösterse de genel akış aynıdır: önce nameserver'ın tam hostname'i — ns1.example.com — girilir, ardından bu hostname'e karşılık gelen IP adresi — 203.0.113.1 — yazılır. Kayıt kaydedildiğinde registrar TLD registry'sine bildirim gönderir; TLD nameserver'ı delegation yanıtlarına bu IP'yi eklemeye başlar.

; .com TLD nameserver'ının döndürdüğü delegation yanıtı:
;; AUTHORITY SECTION:
example.com.  172800  IN  NS  ns1.example.com.
example.com.  172800  IN  NS  ns2.example.com.

;; ADDITIONAL SECTION (glue records):
ns1.example.com.  3600  IN  A  203.0.113.1
ns2.example.com.  3600  IN  A  203.0.113.2

Registrar panelinde glue record oluştururken bir incelik dikkat gerektirir: girilen hostname tam nitelikli (FQDN) biçimde olmalı ya da panel bunu otomatik tamamlamalıdır. Bazı paneller yalnızca ön eki — ns1 — ister ve domain adını otomatik ekler; bazıları tam hostname'i bekler. Yanlış biçimde girilmiş bir hostname, TLD'ye hatalı bir glue kaydının iletilmesine ve sessiz bir çözümleme hatasına yol açar.

Glue record oluşturulduktan sonra değişikliğin TLD nameserver'larına yayılması DNS propagasyonuna tabidir. TLD NS kayıtlarının TTL'si genellikle 24-48 saattir; bu süre zarfında bazı resolver'lar eski bilgiyle yanıt vermeye devam edebilir. Glue record oluşturulduktan hemen sonra zone aktif olmayabilir; propagasyonun tamamlanması beklenmeli ya da yeni nameserver'ı dig ile doğrudan sorgulanmalıdır.

Glue record eksikliğinin yarattığı döngü ve çözümsüzlük

Glue record tanımlanmadan child nameserver kullanıldığında resolver, delegation yanıtındaki nameserver hostname'ini çözümleyemez. TLD, example.com için ns1.example.com'u işaret eder; ancak ns1.example.com'un IP'sini vermez. Resolver ns1.example.com'u çözmek için example.com zone'unu sormaya çalışır — ki bu zone'un nerede olduğunu zaten bilmiyor. Döngü tamamlanır ve resolver SERVFAIL döndürür.

Glue record eksikliği tüm zone'u yanıtsız bırakır; yalnızca belirli bir kaydı değil. Web sitesi, e-posta ve zone'daki her servis erişilemez hale gelir. Bu nedenle child nameserver yapısı kurulmadan önce glue record'un registrar tarafından onaylandığını doğrulamak, zone'u aktif etmeden önceki zorunlu adımdır.

Glue record eksikliğini teşhis etmek için TLD nameserver'ını doğrudan sorgulamak en güvenilir yöntemdir:

; .com TLD nameserver'ını doğrudan sorgula:
dig @a.gtld-servers.net. example.com NS +additional

; ADDITIONAL SECTION'da ns1/ns2'nin A kaydı görünüyorsa
; glue record tanımlı demektir. Boşsa glue yok.

+additional bayrağı yanıttaki ek bölümü gösterir; glue record burada yer alır. ADDITIONAL SECTION boş ya da yoksa glue record TLD'ye henüz iletilmemiş demektir. Bu durumda domain için yapılan tüm A, MX ve diğer sorgular çözümsüz kalır.

Kısmen yapılandırılmış bir glue kaydı da sorun üretir. Nameserver'lardan yalnızca biri için glue tanımlıysa — ns1 kayıtlı, ns2 kayıtsız — resolver ns2 üzerinden yaptığı sorgularda döngüye girer. Çift nameserver yapısında her ikisi için glue record kaydedilmesi zorunludur.

IP değiştiğinde glue record güncelleme süreci

Nameserver'ın sunucu IP'si değiştiğinde glue record da güncellenmesi gerekir. Bu güncelleme iki ayrı yerde yapılır: registrar panelinde child nameserver kaydı ve zone dosyasındaki A kaydı. İkisi arasındaki sıralama ve zamanlama, geçiş sürecinde kesintinin önüne geçer.

Önerilen sıralama şöyledir: önce zone dosyasındaki ns1.example.com A kaydı yeni IP ile güncellenir ve TTL düşürülür. TTL optimizasyonu açısından bu adım, eski IP'nin resolver önbelleklerinden temizlenmesini hızlandırır. Ardından registrar panelinden glue record güncellenir. Son olarak yeni IP'nin hem zone'dan hem TLD delegation'ından doğru biçimde döndüğü test edilir.

; Zone'dan A kaydı:
dig ns1.example.com A +short

; TLD'den glue kaydı — additional section'da doğru IP var mı?
dig @a.gtld-servers.net. example.com NS +additional

İki sorgunun döndürdüğü IP birbirinden farklıysa güncellemenin bir tarafı henüz yayılmamış ya da uygulanmamış demektir. Zone'daki A kaydı güncel ama glue hâlâ eski IP'yi gösteriyorsa, resolver glue'dan eski IP'yi alır, bağlanmaya çalışır ve başarısız olursa zone'dan A kaydını çekerek doğru IP'ye ulaşmayı dener — bu davranış implementasyona göre farklılık gösterir ve bazı resolver'larda sessiz hata üretebilir. Tutarlılık en güvenli konumdur; her iki kayıt da aynı IP'yi gösterene kadar geçiş tamamlanmış sayılmamalıdır.

Glue record güncellemesi registrar'dan TLD'ye iletim gerektirdiğinden anlık değildir. TLD registry'sinin glue değişikliklerini işleme süresi genellikle birkaç dakika ile birkaç saat arasında değişir; bazı registry'ler toplu güncelleme yapar. Bu gecikme, zone'daki A kaydını önce güncelleyip ardından registrar'da glue'yu değiştirme sıralamasının mantığını açıklar: zone değişikliği daha hızlı yayılır ve eski IP'ye yönelik trafik yeni sunucuya yönlendirilebilir.

Birden fazla nameserver için glue yapılandırması

Child nameserver yapısında artıklık sağlamak için iki veya daha fazla nameserver kullanıldığında her biri için ayrı glue record tanımlanmalıdır. Registrar panelinde bu işlem, her nameserver hostname'i için tekrarlanan ayrı kayıt girişleri anlamına gelir.

; Registrar panelinde iki ayrı host kaydı:
; Host: ns1.example.com  →  IP: 203.0.113.1
; Host: ns2.example.com  →  IP: 203.0.113.2

; Zone dosyasında karşılık gelen A kayıtları:
ns1.example.com.  3600  IN  A  203.0.113.1
ns2.example.com.  3600  IN  A  203.0.113.2

Her iki nameserver farklı IP bloklarına ya da farklı veri merkezlerine yerleştirildiyse her birinin glue kaydı farklı bir IP adresini gösterir; bu beklenen ve doğru bir yapıdır. Aynı IP'yi paylaşan iki nameserver glue açısından geçerli olsa da tek nokta hatası riskini azaltmaz — fiziksel artıklığın yalnızca DNS kayıt düzeyinde değil, sunucu altyapısı düzeyinde de sağlanması gerekir.

IPv6 desteği eklenecekse her nameserver için ayrıca AAAA glue kaydı da oluşturulmalıdır. Bazı registrar'lar AAAA glue kaydını ayrı bir alan üzerinden alırken bazıları A ve AAAA'yı aynı child nameserver kaydı altında toplar. IPv4-only ve IPv6-only resolver'ların her ikisinin de nameserver'a ulaşabilmesi için her iki protokol glue kaydının eksiksiz olması önerilir.

; Hem A hem AAAA glue:
ns1.example.com.  3600  IN  A     203.0.113.1
ns1.example.com.  3600  IN  AAAA  2001:db8::1

Nameserver değişikliği yapılırken child nameserver yapısından harici nameserver'a geçiliyorsa — ya da tersine — glue record davranışı da değişir. Harici nameserver'a geçişte eski glue kayıtları gereksiz hale gelir; registrar panelinden silinebilir. Bu silme işlemi zone çalışmasını etkilemez çünkü yeni nameserver'lar farklı zone'da tanımlıdır. Domain transfer süreci sırasında nameserver yapısı değişiyorsa, alıcı registrar'da yeni glue kaydını oluşturmak da geçiş kontrol listesine eklenmelidir.

Glue record, DNS altyapısının en çok gözden kaçan operasyonel ayrıntılarından biridir. Gerekli olmadığı yapılarda hiç gündemin dışına çıkmaz; gerekli olduğu yapılarda ise eksikliği tüm zone'u devre dışı bırakır. Child nameserver kullanılan her yapıda glue kaydının TLD'ye doğru biçimde iletildiğini dig @a.gtld-servers.net sorgusuyla teyit etmek, zone'un ilk aktivasyonundan önce yapılabilecek en düşük maliyetli doğrulama adımıdır.

Glue record yönetiminde en sık yapılan hata, zone dosyasını güncelleyip registrar panelini atlamak ya da tersini yapmaktır. Child nameserver yapısında ilk kurulumdan IP değişikliğine kadar her operasyonda bu iki tarafın birlikte güncellenmesi gerekir. Çoklu nameserver kullanılıyorsa her birinin kayıt durumu ayrı ayrı doğrulanmalıdır; eksik kalan bir tanesi zone'un yarı güvenilir çalışmasına değil, zaman zaman başarısız olmasına yol açar.