DNS Sunucu
İçerik
DNS Nedir
DNS Çalışma Mekanizması
DNS Sunucu Kurulumu ve Yapılandırması
DNS (Domain Name System - Alan Adı Sistemi)
DNS'e Neden İhtiyaç Duyuldu?
Bilgisayarlara ve diğer cihazlara, birbirleriyle haberleşebilmeleri için bir IP adresi atanır.
(Örn: 185.199.111.153)
İnsanlar, IP adreslerini hatırlayamadıklarından ve IP adreslerinin değişebilme ihtimalinden dolayı kelimeleri kullanmayı tercih etmiştir.
(Örn: omu.edu.tr)
DNS'in Yapısı
DNS sistemi, alan adı sunucuları ve istemcilerden oluşur.
Sunucular alan adına karşılık gelen IP bilgilerini saklarken, istemciler ise bu sorguları yapan taraftır.
Bir DNS istemcisi, bir bilgisayarın alan adına karşılık gelen IP adresini bulmak istediği zaman, DNS sunucusuna başvurur.
DNS sunucusu da eğer kendi veritabanında öyle bir alan adı varsa, bu alan adına karşılık gelen IP adresini istemciye gönderir.
DNS veritabanına kayıtların elle, tek tek girilmesi gerekir.
Alan adları dağıtık biçimde ve bir hiyerarşi içerisinde yönetilir.
Alan adları ilk önce ülkelere göre ayrılır. Örneğin Türkiye(tr), Almanya(de) gibi kısaltılır. Tek istisnası Amerika'dır.
Alan adları ülkelere göre ayrıldıktan sonra com edu gov gibi daha alt bölümlere ayrılır.
Bunlar hiyerarşinin en tepesindeki üst-düzey alanlardır.
Popüler alan adları ve kullanım amaçları:
.com: Ticari kuruluşları gösterir.
.edu: Eğitim kurumlarını gösterir.
.org: Ticari olmayan, hükümete de bağlı bulunmayan kurumları gösterir.
DNS Sorgusu Örneği
DNS sorgusunun nasıl çalıştığını anlamak için basir bir örnek kullanalım.
Tarayıcıya www.omu.edu.tr yazdık ve enter'a bastık diyelim.
Sırasıyla şunlar olmaktadır:
DNS Sorgusu
Web tarayıcısı adres satırına isim girdiğinizi anlar ve IP’sini bulmak için yerel çözümleyiciye istekte bulunur.
Çözümleyici önbelleği (cache) kontrol eder, eğer daha önceden bu isim için IP eşleştirilmesi yapılmışsa onu kullanır ve web tarayıcısına IP’i verir.
DNS Sorgusu
Çözümleyici özyineli olarak bu sorguyu oluşturur ve bilgisayarda tanımlanan, internet üzerindeki bir DNS sunucusuna veya yerel ağdaki bir DNS sunucusuna sorguyu gönderir.
Diyelim ki DNS sunucusu olarak 8.8.8.8’i kullanıyoruz.
"8.8.8.8" www.omu.edu.tr için tekrarlı sorgular üretir ve kök isim sunucusuna bu sorguları gönderir. (Tabi ki onun da önbelleğinde ip adresi yoksa)
Kök isim sunucusu ismi çözmez. O sadece “.tr” domain’leriyle ilgilenen DNS sunucunun isminin IP’sini verir.
"8.8.8.8" yeni sorguyu üretir ve ".tr" domainlerinden sorumlu DNS sunucusuna sorguyu gönderir.
.tr ile ilgilenen sunucu edu.tr'nin IP’sini döner.
"8.8.8.8", .edu.tr ile ilgilenen sunucuya "www.omu.edu.tr" için sorgu gönderir.
"edu.tr" ile ilgilenen sunucu "omu.edu.tr" nin IP adresini döner.
8.8.8.8, omu.edu.tr ile ilgilenen sunucuya www.omu.edu.tr için sorgu gönderir.
Nihayet www.omu.edu.tr'nin IP adresi bulunur ve 8.8.8.8 DNS sunucusu istemcimize yani bize yanıt döner.
Yerel çözümleyicimiz bu IP bilgisini ön belleğine bir süreliğine kaydeder. Tekrar www.omu.edu.tr için DNS isteğinde bulunduğumuzda 8.8.8.8'e sormak yerine ön bellekten okuma yapılır.
Artık web isteğini bu IP'e yapabiliriz.
Başka bir örnek
Peki Sonra Ne Olur?
DNS Sunucu Türleri
Kök sunucular (Root Servers)
Üst seviye alan adları sunucusu (Top Level Domain (TLD) nameserver) Yetkili alan adı sunucusu
DNS yineleyicisi (DNS Recursor)
Yetkili alan adı sunucusu (Authoritative DNS)
Yetkili bir DNS hizmeti, geliştiricilerin herkese açık DNS adlarını yönetmek için kullandıkları bir güncelleme mekanizması sağlar.
Kendisine yapılan DNS sorgularını yanıtlar ve bilgisayarların birbirleriyle iletişim kurabilmesi için alan adlarını IP adreslerine çevirir.
Yetkili alan adı sunucusu (Authoritative DNS), bir alan adı üzerinde son yetkiye sahiptir ve özyinelemeli DNS sunucularına IP adresi bilgileriyle yanıt sağlamaktan sorumludur.
DNS Yineleyicisi (DNS Recursor)
İstemciler genellikle doğrudan yetkili DNS sunucularına sorgu yapmaz. Bunun yerine, genellikle çözümleyici(resolver) olarak bilinen başka bir DNS hizmeti türüne başka bir isimle özyinelemeli (recursive) bir DNS sunucusuna bağlanırlar.
Özyinelemeli bir DNS sunucusu, sizin sorduğunuz herhangi bir DNS kaydına sahip olmasa da, sizin adınıza DNS bilgilerini alabilen bir aracı görevi görür.
Özyinelemeli bir DNS sunucusuna yapılan bir istek yakın zamanda tekrar yapıldıysa, DNS sunucu bu isteği önbelleğine kaydettiği verilere bakarak yanıtlar. Eğer veri
önbelleğinde yoksa, sorgunun yanıtını bulmak için sorguyu bir veya daha fazla yetkili DNS sunucusuna iletir.
DNS Kayıt Türleri
NS Kaydı: Alan adından sorumlu yetkili alan adı sunucusunun ismi.
A Kaydı: Bir bilgisayar adını ve ona karşılık gelen IPv4 adresini tutan kayıtlar.
AAAA Kaydı: Bir bilgisayar adını ve ona karşılık gelen IPv6 adresini tutan kayıtlar.
CNAME Kaydı: Takma ad. Mevcut bir A kaydına takma ad oluşturmak için kullanılır.
MX Kaydı: E-postanın nereye gönderileceğini tanımlamak için kullanılır.
TXT Kaydı: Genellikle sahiplik doğrulama işlemlerinde kullanılan kayıt türüdür.
BIND
Ubuntu ve diğer pek çok dağıtımın depolarında mevcut olan DNS sunucu yazılımıdır.
Kurulum
sudo apt install bind9
Yapılandırma
Sunucuyu 3 farklı türde yapılandırabiliriz:
Önbellek (cache) sunucu
Birincil Yetkili Sunucu (master authoritative server) İkincil Yetkili Sunucu (secondary authoritative server)
Yapılandırma Dosyaları
bind yazılımının yapılandırma dosyaları /etc/bind dizini altında bulunmaktadır.
/etc/bind/named.conf.options : global DNS ayarları
/etc/bind/named.conf.local : alan ayarları (zone)
Önbellek Sunucusu Olarak Yapılandırma
/etc/bind/named.conf.options dosyasında forwarders bölümü yorum satırı
olmaktan çıkarılıp internet servis sağlayıcınız tarafından verilen DNS sunucu adresleri buraya girilir:
forwarders { 1.2.3.4;
5.6.7.8;
};
Servisi yeniden başlat:
sudo systemctl restart bind9.service
Birincil Sunucu Olarak Yapılandırma
Yeni bir DNS alanını (DNS Zone) bind'a eklemek için /etc/bind/named.conf.local
dosyasına aşağıdaki gibi ekleme yapılır:
zone "example.com" { type master;
file "/etc/bind/db.example.com";
};
example.com için gerekli DNS kayıtlarının /etc/bind/db.example.com dosyasında tutulacağını belirtmiş olduk. Bu dosya için şablon olarak /etc/bind/db.local
dosyasını kullanabiliriz.
example.com alan dosyasını düzenleme
# şablonu kopyala
sudo cp /etc/bind/db.local /etc/bind/db.example.com
# dosyayı düzenle
sudo nano /etc/bind/db.example.com
;
; BIND data file for example.com
;
$TTL 604800
@ IN SOA example.com. root.example.com. ( 2 ; Serial
604800 ; Refresh 86400 ; Retry 2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS ns.example.com.
@ IN A 192.168.1.10
@ IN AAAA ::1
ns IN A 192.168.1.10
Seri numarası birincil ve ikincil sunucuların senkronize olabilmeleri ve yapılan değişikliklerin aktif olabilmesi için kullanılan sayıdır. Genellikle YILAYGUNSAYI
formatı kullanılır. Örneğin; 2022051001
Yeni bir kayıt ekledikten ve seri numarası güncellendikten sonra servisin yeniden başlatılması gereklidir.
sudo systemctl restart bind9.service
Yeni bir alan adı satın aldınız diyelim, DNS sunucu kurmanız
gerekli mi?
Alan adı satan firmalar genellikle DNS hizmeti de sağlamakta. Daha önce belirttiğimiz DNS kayıt türleri, alan adı satan firmaların yönetim panellerinden kolaylıkla
girilebilmekte.
Bunun yanı sıra Cloudflare, ClouDNS gibi firmalar da DNS yönetimi imkanı sağlayabilmektedir.
Kaynaklar
https://tr.wikipedia.org/wiki/DNS
https://linux-yonetimi.veriteknik.net.tr/internet-servisleri/bir-sayfanin-internetteki- serueveni