SOA (Start of Authority) kaydı, bir DNS bölgesinin en üst adında bulunan yönetim ve bakım kaydıdır. Alan adlarını IP adresleri ve diğer kayıtlarla ilişkilendiren DNS, bu verilerin yönetimini bölgelere ayırır; başka bir bölgeye devredilen alt alanlar üst bölgenin yetkisi dışında kalır. SOA, bölgenin birincil veri kaynağı olarak gösterilen sunucuyu, sorumlu iletişim adresini ve ikincil DNS sunucularının güncellik kontrolü için kullanacağı zaman aralıklarını belirtir.

Seri numarası ve zamanlayıcılar, bölge aktarımıyla çalışan ikincil sunucuların kopyalarını güncel tutmasına yardımcı olur. TTL, DNS verisinin yeniden sorgulanmadan taze kabul edileceği süreyi belirtir. SOA kaydının TTL değeri ile MINIMUM alanı, bulunmayan ad veya kayıt türüne ilişkin olumsuz yanıtların önbellek süresinin hesaplanmasında kullanılır.

SOA Alanları Nasıl Okunur?

Bir SOA kaydının verisini taşıyan RDATA bölümünde alanlar belirli bir sırayla bulunur. İlk iki alan ad biçimindedir; seri numarası ve zamanlayıcılar sayısal değerlerdir. REFRESH, RETRY, EXPIRE ve MINIMUM değerleri saniye cinsinden ifade edilir.

Aşağıdaki tablo, her alanın neyi temsil ettiğini ve DNS davranışını nasıl etkilediğini gösterir.

AlanAnlamı
MNAMEBölge verisinin birincil kaynağı olarak gösterilen DNS sunucusunun adı
RNAMEBölgeden sorumlu kişi veya ekip için kullanılan posta kutusunun DNS ad biçimindeki gösterimi
SERIALİkincil sunucunun yeni sürüm olup olmadığını anlamak için karşılaştırdığı bölge sürüm numarası
REFRESHBaşarılı güncellik kontrolü veya aktarımdan sonra bir sonraki kontrol için beklenecek süre
RETRYGüncellik kontrolü veya bölge aktarımı başarısız olduğunda yeni denemeden önce beklenecek süre
EXPIRESon başarılı güncellik kontrolü veya aktarımdan sonra ikincil kopyanın yetkili veri olarak kullanılabileceği en uzun süre
MINIMUMSOA kaydının TTL değeriyle birlikte olumsuz yanıtların önbellek süresini belirleyen değer

MNAME ve RNAME Alanlarının Anlamı

MNAME, SOA kaydının ilk alanıdır. Bu değer, bölge verisinin birincil kaynağı olarak gösterilen ad sunucusunun alan adını taşır. MNAME'i, bölgenin bütün sorgularını tek başına cevaplayan sunucu olarak yorumlamak doğru değildir; yetkili sunucuların listesi NS kayıtlarıyla ayrı olarak tanımlanır. İkincil sunucunun bölge aktarımını hangi sunucudan alacağı kendi yapılandırmasına bağlıdır; yalnız MNAME alanını değiştirmek aktarım kaynağını kendiliğinden değiştirmez.

RNAME ise sorumlu posta kutusunu DNS ad biçiminde gösterir. Örneğin hostmaster.example.com. biçimindeki bir RNAME değeri, tipik olarak hostmaster@example.com posta kutusunu temsil eder. Posta kutusunun @ işaretinden önceki bölümünde nokta varsa DNS bölge dosyasında bu nokta ters eğik çizgiyle korunur. Örneğin dns.yonetim@example.com adresi dns\.yonetim.example.com. biçiminde yazılır. Bir DNS yönetim paneli ise e-posta adresini doğrudan isteyebilir veya bu biçimi desteklemeyebilir; panelin beklediği gösterim ayrıca kontrol edilir.

Seri Numarası ve İkincil Sunucu Eşzamanlaması

SERIAL alanı, DNS bölgesinin sürümünü temsil eden 32 bitlik işaretsiz bir değerdir. İkincil sunucu, elindeki bölge kopyasının seri numarasını birincil kaynaktan aldığı SOA bilgisiyle karşılaştırarak yeni bir sürüm olup olmadığını belirler. Değer üst sınıra ulaştıktan sonra artırıldığında sıfıra dönebilir; bu nedenle sürümler sıradan sayısal büyüklük yerine DNS seri numarası aritmetiğiyle karşılaştırılır.

Bölge içeriği değiştiği halde seri numarası uygun biçimde güncellenmezse ikincil sunucu yeni veriyi fark etmeyebilir. Bunun sonucu, aynı DNS bölgesi için yetkili olan farklı sunucuların bir süre farklı kayıtlar döndürmesi olabilir.

Bölge aktarımı kullanan bir ikincil sunucu, yapılandırılmış veri kaynağını şu şekilde kontrol eder:

  1. İkincil sunucu, başarılı bir güncelleme veya kontrol sonrasında REFRESH süresi kadar bekler.
  2. Süre dolunca veri kaynağındaki SOA kaydını kontrol eder. Seri numarası aynıysa kopyasını güncel sayar; daha yeni sürüm varsa bölge aktarımını başlatır.
  3. Kontrol veya aktarım başarısız olursa RETRY süresi geçtikten sonra yeniden dener.
  4. Son başarılı güncellik kontrolü veya aktarımdan itibaren EXPIRE süresi dolarsa ikincil sunucu eski bölge kopyasını yetkili veri olarak sunmayı bırakır.

Seri numarasının değişmediğini başarıyla doğrulamak da EXPIRE sayacını yeniden başlatır; bunun için mutlaka yeni kayıt aktarılması gerekmez. Kaynak sunucunun yalnız ping yanıtı vermesi ise yeterli değildir. DNS NOTIFY, bir sunucunun bölge değişikliği olabileceğini ikincile bildirmesidir; kabul edilen bu bildirim REFRESH süresi beklenmeden kontrol başlatabilir, ancak bölge verisini kendisi taşımaz. REFRESH, RETRY ve EXPIRE, ziyaretçinin kullandığı DNS önbelleğini temizlemez.

MINIMUM Alanı ve Negatif Önbellek

Bir yetkili DNS sunucusu, bir adın bulunmadığını bildiren NXDOMAIN yanıtına veya ad var olduğu halde istenen kayıt türünün bulunmadığı olumsuz yanıta bölgenin SOA kaydını ekler. İkinci durum NODATA olarak adlandırılır; ayrı bir yanıt kodu değil, başarılı sorguyu belirten NOERROR koduyla birlikte istenen kaydın bulunmamasıdır. CNAME ile başka bir ada geçilmişse yokluk sonucu takma adın kendisine değil, ulaşılan hedef ada ait olabilir.

Yetkili sunucu, olumsuz yanıtın yetki bölümüne eklediği SOA kaydının TTL değerini, SOA kaydının normal TTL değeri ile MINIMUM değerinden küçük olanına ayarlar. Recursive resolver (özyinelemeli DNS çözümleyicisi), önbelleğinde yanıt yoksa yetkili sunuculardan bilgi alan hizmettir; olumsuz yanıtı da bu süre boyunca saklayabilir ve kendi önbellek politikasıyla daha kısa bir süre uygulayabilir.

MINIMUM, bütün DNS kayıtlarının TTL değerini topluca belirleyen bir alt sınır değildir. IPv4 adresini taşıyan A, IPv6 adresini taşıyan AAAA ve e-posta sunucusunu belirten MX gibi kayıtların kendi TTL değerleri vardır. Bölge dosyasında TTL değeri açıkça yazılmamış kayıtlar için kullanılan $TTL varsayılanı da SOA içindeki MINIMUM alanından ayrıdır.

Yetkili sunucular yeni kaydı döndürdüğü halde recursive resolver eski NXDOMAIN yanıtını veriyorsa, bu olumsuz yanıtın kalan TTL değeri incelenir. Yalnız MINIMUM değerini sonradan düşürmek, önceden önbelleğe alınmış yanıtın kalan süresini değiştirmez.

Örnek Bir SOA Kaydının Yorumlanması

Aşağıdaki kayıt, alanların nasıl okunduğunu göstermek için hazırlanmış varsayımsal bir örnektir; belirli bir DNS sağlayıcısı veya bölge için önerilen ayarlar içermez.

example.com. 3600 IN SOA ns1.example.net. hostmaster.example.com. (
    2026081001
    3600
    600
    1209600
    300
)

Bu örnekte ns1.example.net. MNAME, hostmaster.example.com. RNAME ve 2026081001 seri numarasıdır. Sonraki değerler sırasıyla 3600 saniye REFRESH, 600 saniye RETRY, 1209600 saniye EXPIRE ve 300 saniye MINIMUM alanlarını gösterir. EXPIRE burada 14 gündür. İlk satırdaki 3600 ise SOA kaydının kendi TTL değeridir; IN, DNS kaydının internet sınıfını belirtir. Bu bölgenin olumsuz yanıtında SOA TTL değeri, 3600 ile 300 değerinin küçüğü olan 300 saniyeye ayarlanır.

Seri numarasının tarih benzeri yazılması yalnız örnek bir yönetim tercihidir; protokol, seri numarasının mutlaka tarih biçiminde olmasını gerektirmez.

Yetkili Sunuculardaki SOA Yanıtlarını Karşılaştırma

Yetkili sunucular arasındaki farkı araştırırken aynı bölge adı için her sunucuya doğrudan SOA sorgusu gönderilir. Yalnız bir recursive resolver üzerinden alınan yanıt, onun önbelleğindeki kopyayı gösterebilir; hangi yetkili sunucunun güncel olduğunu tek başına söylemez.

Aynı birincil kaynaktan bölge aktarımı yapan sunucularda farklı seri numaraları, eşitlemenin tamamlanmadığını gösterebilir. Birden fazla bağımsız DNS sistemi bölgeyi kendi yöntemiyle çoğaltıyorsa seri numaraları aynı güncellik ölçüsünü kullanmayabilir. Bu yüzden gerçek kayıt değerleri, aktarımın son başarılı zamanı ve sunucu günlükleri de karşılaştırılır. Aynı seri numarasının görülmesi, kayıtların içeriklerinin mutlaka aynı olduğunu kanıtlamaz.