Nameserver Servisleri

Alan Adı Sistemi (DNS - Domain Name System), internetin telefon rehberi gibidir; insanların okuyabildiği alan adlarını (www.example.com) bilgisayarların anlayabildiği IP adreslerine (192.0.2.1) çevirir. DNS servisleri temel olarak iki ana role ayrılır:

  1. Yetkili (Authoritative) Sunucular: Belirli bir alan adı (zone) hakkındaki kesin ve orijinal bilgileri (kayıtları) tutan sunuculardır. Bir alan adının sahibi tarafından yönetilirler. Örneğin, example.com'un yetkili sunucusu, www.example.com'un IP adresini bilir.

  2. Önbellekleyici/Tekrarlayıcı (Caching/Recursive) Sunucular: Kullanıcılardan veya uygulamalardan gelen DNS sorgularını alır ve yanıtı bulmak için hiyerarşik olarak diğer DNS sunucularını (kök sunucular, TLD sunucuları, yetkili sunucular) sorgular. Bulduğu yanıtı hem istemciye iletir hem de belirli bir süre (TTL - Time To Live) kendi önbelleğinde saklar. İnternet servis sağlayıcılarının sunduğu DNS sunucuları veya Google (8.8.8.8), Cloudflare (1.1.1.1) gibi genel DNS sunucuları bu tiptedir.

Bir sunucu her iki rolü de üstlenebilir (örn. BIND), ancak genellikle güvenlik ve performans nedenleriyle bu roller ayrılır. Örneğin, sadece yerel ağa hizmet veren bir caching/recursive sunucu (örn. Unbound) ve sadece belirli alan adları için dışarıya hizmet veren yetkili sunucular (örn. Knot DNS, PowerDNS, BIND) kullanmak yaygındır. Bu bölümde, hem yetkili hem de recursive özelliklere sahip olabilen BIND (Berkeley Internet Name Domain) yazılımı üzerinden temel kavramlar ve yapılandırma ele alınacaktır.

DNS Kayıt Tipleri

Bir alan adı (zone) dosyası, o alan adı hakkındaki bilgileri içeren çeşitli kayıt (record) türlerinden oluşur. En sık kullanılanlar şunlardır:

Kayıt Tipi
Açıklama
Örnek Değer (rackdc.com için)

SOA

Start of Authority: Alan adının temel bilgilerini (yetkili sunucu, yönetici e-postası, seri numarası, zamanlama ayarları) içerir. Her zone dosyasında bir tane olmalıdır.

(Detayı aşağıda)

NS

Name Server: Alan adı için yetkili olan nameserver'ların adlarını belirtir.

ns1.rackdc.com.

A

Address (IPv4): Bir ana bilgisayar adını (hostname) bir IPv4 adresine eşler.

rackdc.com. A 192.0.2.1

AAAA

Address (IPv6): Bir ana bilgisayar adını bir IPv6 adresine eşler.

rackdc.com. AAAA 2001:db8::1

CNAME

Canonical Name: Bir alan adına takma ad (alias) tanımlar. Sorgu yapıldığında, CNAME'in işaret ettiği asıl isme yönlendirme yapılır ve onun kaydı (genellikle A veya AAAA) döndürülür. Aşırı kullanımı ek sorgulara neden olabilir.

www CNAME rackdc.com.

MX

Mail Exchanger: Alan adına gönderilen e-postaları kabul edecek posta sunucularını ve önceliklerini belirtir (düşük sayı daha yüksek öncelik). Değer olarak IP değil, hostname kullanılmalıdır.

rackdc.com. MX 10 mail.rackdc.com.

TXT

Text: Alan adıyla ilgili rastgele metin bilgileri saklamak için kullanılır. Özellikle SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail) gibi e-posta doğrulama mekanizmaları ve alan adı sahipliği doğrulama için yaygın olarak kullanılır.

rackdc.com. TXT "v=spf1 include:_spf.google.com ~all"

SRV

Service Locator: Belirli bir servis için sunucu ve port bilgilerini bulmak için kullanılır (örn. SIP, LDAP, Kerberos).

PTR

Pointer: Bir IP adresini bir ana bilgisayar adına eşler (Ters DNS çözümlemesi - Reverse DNS). Genellikle IP adres bloklarının sahibi tarafından özel in-addr.arpa (IPv4) veya ip6.arpa (IPv6) zone'larında tanımlanır.

1.2.0.192.in-addr.arpa. PTR server.example.com.

Not: Alan adlarının sonundaki . (nokta) işareti, alan adının tam ve kök dizinden itibaren belirtildiğini ifade eder (Fully Qualified Domain Name - FQDN). Eğer sonda nokta yoksa, BIND genellikle zone'un kendi adını (SOA kaydındaki) sona ekleyerek adı tamamlamaya çalışır. Örneğin, rackdc.com. zone dosyasında www yazmak www.rackdc.com. anlamına gelirken, mail.example.com. yazmak tam olarak o adresi ifade eder.

BIND Kurulumu ve Yapılandırması

BIND DNS sunucusu (genellikle bind veya bind9 paket adıyla) çoğu Linux dağıtımının standart depolarında bulunur.

(bind-utils paketi dig, nslookup gibi araçları içerir).

Ana yapılandırma dosyası genellikle /etc/named.conf (RHEL tabanlı) veya /etc/bind/named.conf (Debian tabanlı)'dır. Zone dosyaları ise /var/named/ (RHEL) veya /etc/bind/ (Debian) gibi dizinlerde tutulabilir.

named.conf Temel Ayarları

named.conf dosyası, BIND'ın genel çalışma şeklini, hangi zone'lardan sorumlu olduğunu ve güvenlik ayarlarını belirler.

  • ACL (Access Control List): Belirli IP adreslerini veya ağları gruplamak için kullanılır. Genellikle allow-recursion veya allow-transfer gibi direktiflerde kullanılır.

  • Options Bloğu: Genel ayarları içerir.

    Güvenlik Notları:

    • listen-on: Sadece gerekli IP adreslerinde dinleme yapın. any kullanmaktan kaçının veya firewall ile koruyun.

    • allow-recursion: İnternete açık bir sunucuda any olarak bırakmak, sunucunuzun DNS amplification saldırılarında kullanılmasına yol açabilir. Sadece güvendiğiniz IP'lere izin verin veya none yapın.

    • allow-transfer: Zone transferini sadece slave sunucularınıza izin verin. none olarak bırakmak slave'lerin zone'u çekmesini engeller.

  • Zone Tanımları: Sunucunun yetkili olduğu (master veya slave) veya özel olarak ele aldığı (örn. root hints) zone'ları tanımlar.

Zone Dosyası Örneği (/var/named/rackdc.com.db)

Önemli: Zone dosyasında her değişiklik yapıldığında, SOA kaydındaki seri numarası mutlaka artırılmalıdır. Aksi takdirde slave sunucular değişikliği algılamaz ve zone transferi yapmaz. YYYYMMDDNN formatı yaygın bir pratiktir.

Servis Yönetimi

BIND servisi (genellikle named veya bind9) systemd ile yönetilir:

Zone dosyalarında değişiklik yaptıktan sonra BIND'ın bu değişiklikleri yeniden yüklemesi için rndc reload komutu kullanılır (servisi yeniden başlatmaya gerek kalmaz):

named.conf dosyasında yapılan değişiklikler için ise genellikle servisi yeniden başlatmak (sudo systemctl restart named) gerekir. Yapılandırma dosyasının doğruluğunu kontrol etmek için named-checkconf komutu kullanılabilir. Zone dosyalarının doğruluğunu kontrol etmek için named-checkzone <zone_adı> <zone_dosyası> komutu kullanılır.

Last updated