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:
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.Ö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:
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
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
veyaallow-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 sunucudaany
olarak bırakmak, sunucunuzun DNS amplification saldırılarında kullanılmasına yol açabilir. Sadece güvendiğiniz IP'lere izin verin veyanone
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
)
/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