$ man dns-nedir
DNS Nedir?
DNS (Domain Name System), example.com gibi insanların okuyabileceği alan adlarını IP adreslerine ve diğer kayıtlara çeviren, dünya geneline dağıtılmış hiyerarşik bir veritabanıdır. Temel tanımı RFC 1034 ve RFC 1035'te yapılmıştır.
DNS ne işe yarar?
Bilgisayarlar birbirleriyle IP adresleri üzerinden konuşur; insanlar ise isimleri hatırlar. DNS bu iki dünya arasında köprü kurar. Ancak görevi yalnızca isim–IP eşlemesiyle sınırlı değildir: bir alan adına gelen e-postaların hangi sunucuya teslim edileceği (MX), alan adının sahipliğini doğrulayan metinler (TXT), hangi sertifika otoritelerinin sertifika verebileceği (CAA) gibi pek çok bilgi de DNS'te tutulur. Kayıt türlerinin ayrıntıları için DNS Kayıt Türleri sayfasına bakabilirsiniz.
DNS merkezi bir sunucu değildir. Ad alanı, kökten (.) başlayan bir ağaç yapısındadır ve her düğümün yönetimi farklı kurumlara devredilebilir. Kök bölgeyi kök sunucu operatörleri, .com gibi bir TLD'yi ilgili registry, example.com bölgesini ise alan adı sahibinin seçtiği DNS sağlayıcısı yönetir. Bu devretme (delegation) mekanizması DNS'in ölçeklenebilmesinin temelidir. TLD'ler hakkında daha fazlası için TLD, gTLD ve ccTLD sayfasına göz atın.
Çözümleme süreci: kökten yetkili sunucuya
Bir tarayıcıya www.example.com yazdığınızda, önbellekte hiçbir şey olmadığını varsayarsak süreç kabaca şöyle işler:
- Stub resolver: İşletim sisteminizdeki küçük çözümleyici, sorguyu yapılandırılmış DNS sunucusuna (genellikle modeminiz, internet servis sağlayıcınız veya herkese açık bir çözümleyici) iletir. Stub resolver işin ağır kısmını yapmaz; yalnızca soruyu sorar ve cevabı bekler.
- Recursive resolver: Asıl işi yapan bu sunucudur. Cevap önbelleğinde yoksa kök sunuculardan birine sorar.
- Kök sunucu: Kök,
www.example.comiçin cevabı bilmez ama.combölgesinin hangi nameserver'lar tarafından yönetildiğini bilir ve bir yönlendirme (referral) döner. - TLD sunucusu:
.comsunucuları da son cevabı bilmez;example.comiçin registry'de kayıtlı NS kayıtlarını (ve gerekirse glue kayıtlarını) döner. - Yetkili (authoritative) sunucu:
example.combölgesini barındıran sunucu,www.example.comiçin A veya AAAA kaydını yetkili cevap olarak verir. - Recursive resolver cevabı önbelleğe alır ve stub resolver'a iletir.
Bu zinciri dig ile adım adım izleyebilirsiniz:
$ dig +trace www.example.com A
. 518400 IN NS a.root-servers.net.
...
com. 172800 IN NS a.gtld-servers.net.
...
example.com. 172800 IN NS ns1.example.net.
...
www.example.com. 3600 IN A 192.0.2.10
Nameserver'ların rolü ve devretmenin registry tarafında nasıl yapıldığı Nameserver (NS) Nedir? sayfasında anlatılıyor.
Önbellekleme (caching)
Her sorguda kökten başlamak hem yavaş hem de gereksiz yük oluşturur. Bu yüzden her DNS kaydı bir TTL (Time To Live) değeri taşır ve recursive resolver'lar cevabı bu süre boyunca önbellekte tutar. Kök ve TLD yönlendirmeleri de önbelleğe alındığı için pratikte sorguların çoğu tek bir adımda veya doğrudan önbellekten cevaplanır. Olumsuz cevaplar (örneğin "böyle bir isim yok" anlamına gelen NXDOMAIN) da RFC 2308'e göre önbelleğe alınır.
Önbellekleme, bir kaydı değiştirdiğinizde değişikliğin herkese aynı anda yansımamasının da sebebidir. Bu konu TTL Nedir? sayfasında ayrıntılı ele alınıyor.
Yetkili sunucu ile recursive resolver farkı
- Yetkili (authoritative) sunucu yalnızca kendisine ait bölgeler için cevap verir ve kaydın "asıl kaynağıdır". Cevaplarında AA (Authoritative Answer) bayrağı bulunur.
- Recursive resolver hiçbir bölgenin sahibi değildir; istemciler adına diğer sunuculara sorar, sonuçları önbelleğe alır ve DNSSEC doğrulaması yapabilir.
İkisini aynı sunucuda çalıştırmak teknik olarak mümkün olsa da güvenlik ve işletim açısından genellikle ayrılmaları önerilir. Belirli bir yetkili sunucuya doğrudan sorarak önbellekten bağımsız cevap alabilirsiniz:
$ dig @ns1.example.net example.com SOA +norecurse
DNS-over-HTTPS ve DNS-over-TLS
Klasik DNS sorguları UDP/TCP 53 numaralı port üzerinden şifrelenmeden gönderilir. Bu da ağdaki herkesin hangi alan adlarını sorguladığınızı görebilmesi ve cevapları değiştirebilmesi anlamına gelir. İki yaygın çözüm vardır:
- DoT (DNS over TLS, RFC 7858): DNS mesajlarını 853 numaralı port üzerinde TLS ile şifreler.
- DoH (DNS over HTTPS, RFC 8484): DNS sorgularını standart HTTPS isteği olarak, genellikle 443 numaralı port üzerinden taşır.
Her ikisi de istemci ile recursive resolver arasındaki trafiği korur; kaydın doğruluğunu uçtan uca garanti etmez. Cevabın kaynağının gerçekten bölge sahibi olduğunu doğrulamak DNSSEC'in işidir.
Bu sitedeki DNS sekmesi nasıl çalışır?
Sorgulama aracındaki DNS sekmesi, girdiğiniz alan adı için A, AAAA, MX, TXT, NS gibi kayıtları sunucumuz üzerinden, DNS-over-HTTPS ile herkese açık bir recursive resolver'a (öncelikle Cloudflare 1.1.1.1, yanıt alınamazsa Google Public DNS) sorar ve sonuçları TTL değerleriyle birlikte listeler. Bu nedenle gördüğünüz sonuçlar o resolver'ın bakış açısını yansıtır: bir kaydı yeni değiştirdiyseniz, eski değer TTL süresi dolana kadar önbellekten gelebilir. Yetkili sunucunun güncel cevabını görmek istiyorsanız yukarıdaki gibi dig @nameserver ile doğrudan sorgulayabilirsiniz.
Alan adının kime kayıtlı olduğu, hangi registrar üzerinden alındığı ve hangi nameserver'lara devredildiği gibi bilgiler ise DNS'te değil, registry kayıtlarında tutulur; bunlar WHOIS ve RDAP ile sorgulanır.
Sık Sorulan Sorular
DNS ile WHOIS aynı şey mi?
Hayır. DNS, alan adının teknik olarak nereye yönlendiğini (IP, e-posta sunucusu vb.) söyler. WHOIS ve RDAP ise alan adının kayıt bilgilerini (registrar, tarihler, durum kodları, nameserver devri) gösterir.
DNS neden UDP kullanır?
Sorguların çoğu küçük olduğu için tek bir UDP paketi bağlantı kurma maliyeti olmadan hızlı cevap sağlar. Cevap büyük olduğunda (örneğin DNSSEC imzalı yanıtlar) TCP'ye geçilir; RFC 7766 TCP desteğini zorunlu kılar.
Hangi recursive resolver'ı kullandığımı nasıl anlarım?
Linux ve macOS'ta dig çıktısının sonundaki SERVER: satırına, Windows'ta nslookup çıktısının ilk satırlarına bakabilirsiniz. Tarayıcınızda DoH etkinse tarayıcı işletim sisteminden farklı bir resolver kullanıyor olabilir.
Bir alan adının WHOIS/RDAP kaydını ve durum kodlarını gör.
whois sorgula →