Giriş
İnternette bir alan adını yazdığımız anda arkada çalışan en kritik servislerden biri DNS. Eğer kendi ağını, hosting altyapını ya da müşterilerin için profesyonel bir çözüm kuruyorsan, özel DNS sunucusu kurma fikri bir noktada mutlaka karşına çıkıyor. Bu rehberde hem klasik ve sağlam bir çözüm olan BIND ile bind dns kurulum adımlarını, hem de modern ve esnek bir alternatif olan PowerDNS kurulumu sürecini adım adım, pratik bir linux dns server rehberi mantığıyla beraber anlatacağız.
Senaryomuz şu: Elinde bir Linux sunucu var, kendi alan adların için yetkili (authoritative) DNS sunucusu kurmak istiyorsun, mümkünse ileride DNS yönetimini otomatikleştirmek istiyorsun ve işin güvenlik ile performans tarafını da boşlamadan ilerlemek istiyorsun. Bu yazı tam olarak bu noktada yardımcı olacak; teoriyi çok boğmadan, uygulanabilir komutlar ve yapılandırma önerileriyle ilerleyeceğiz.
DNS, BIND ve PowerDNS Nedir?
DNS Temelleri
DNS, yani Domain Name System, alan adlarını IP adreslerine çeviren hiyerarşik bir isimlendirme sistemi. Tarayıcıya bir alan adı yazdığında, arkada pek çok adım gerçekleşiyor: recursive resolver, root sunucular, TLD sunucuları ve en sonunda alan adının yetkili DNS sunucusu devreye giriyor. İşte özel dns sunucusu kurma sürecinde sen tam olarak bu yetkili sunucu rolünü üstleniyorsun.
Temel kavramları kısaca hatırlayalım:
- A kaydı: Alan adını bir IPv4 adresine bağlar.
- AAAA kaydı: IPv6 adresleri için kullanılır.
- CNAME: Bir alan adını başka bir alan adına yönlendirir.
- MX kaydı: E-posta sunucularını tanımlar.
- NS kaydı: Alan adından hangi DNS sunucularının sorumlu olduğunu belirtir.
- Güncel bir Linux dağıtımı (Ubuntu Server, Debian, Rocky Linux, AlmaLinux vb.).
- Statik bir IP adresi (en azından yetkili DNS için zorunlu sayılır).
- Kullanacağın alan adının kayıtlarını düzenleyebileceğin bir domain paneli.
- Root veya sudo yetkisine sahip bir kullanıcı.
- ns1.ornekalan.com – Birincil yetkili DNS (BIND veya PowerDNS).
- ns2.ornekalan.com – İkincil yetkili DNS (aynı yazılım ya da farklı bir çözüm).
- Opsiyonel: Ayrı bir makinede sadece caching / recursive DNS sunucu.
- dig: DNS sorguları için en popüler araçlardan biri. Örneğin ornekalan.com A kaydını ve NS kayıtlarını kontrol edebilirsin.
- nslookup: Özellikle Windows tarafında klasik bir araç ama Linux üzerinde de kullanılabilir.
- host: Basit sorgular için pratik bir yardımcı program.
- Yetkili sunucu (pdns): Alan adları için authoritative yani yetkili cevaplar verir.
- Recursor: İstemciler için internet üzerindeki farklı DNS sunucularına sorgu sorarak caching ve recursive çözümleme sağlar.
- DNS sunucunu güncel tut, özellikle güvenlik yamalarını geciktirme.
- Gereksiz recursive sorguları kapat; yetkili sunucu dış dünyaya recursive hizmet vermesin.
- Firewall ile sadece gerekli portları aç, yönetim için SSH erişimini sınırlı IP lerle kısıtla.
- Zone transferlerini (AXFR) yalnızca belirlediğin ikincil sunuculara izin verecek şekilde ayarla.
- Sunucunun donanımını beklenen trafiğe göre planla.
- Gerekirse birden fazla yetkili sunucu kurup yükü coğrafi olarak dağıt.
- Monitoring araçlarıyla (Prometheus, Grafana, Zabbix vb.) sorgu sayısı, hata oranı ve gecikmeleri izle.
BIND Nedir?
BIND (Berkeley Internet Name Domain), yıllardır internette en yaygın kullanılan DNS sunucularından biri. Biraz klasik sayılır ama hâlâ kurumsal ortamlarda çok tercih ediliyor. Metin tabanlı yapılandırma dosyalarıyla çalışır, bu da hem esnek hem de versiyon kontrolü gibi araçlarla yönetilebilir bir yapı sunar. bind dns kurulum süreci, özellikle Linux dünyasında oldukça iyi belgelenmiştir ve Debian, Ubuntu, CentOS, Rocky Linux gibi dağıtımlarda depolarda hazır paketler halinde gelir.
PowerDNS Nedir?
PowerDNS ise daha modern bir yaklaşım sunan, veritabanı destekli bir DNS sunucusu çözümü. Özellikle çok sayıda alan adı yöneten hosting şirketleri, bulut sağlayıcılar ve otomasyon tutkunları için biçilmiş kaftan. PowerDNS kurulumu sonrasında kayıtlarını düz dosyalar yerine MySQL, PostgreSQL gibi veritabanlarında saklayabilir, web panelleri veya API ile yönetebilirsin. Esneklik, API ve performans senin önceliğinse PowerDNS ciddi anlamda güçlü bir alternatif.
Önkoşullar ve Planlama
Her iyi linux dns server rehberi gibi, işe önce planlama ve önkoşullarla başlayalım. Rastgele komut çalıştırmak kolay, önemli olan sürdürülebilir ve güvenli bir mimari kurmak.
Gerekenler
Ayrıca güvenlik duvarını ve temel SSH güvenliğini önceden oturtmuş olmanı tavsiye ederim. DNS trafiği için UDP ve TCP 53 numaralı portların açık olması gerekir. Özellikle internete açık bir özel dns sunucusu kurma planın varsa, firewall ve rate limiting gibi konular kesinlikle atlanmamalı.
Mimari Seçimi
En basit senaryoda tek bir yetkili DNS sunucusu kurabilirsin ama pratikte en az iki adet yetkili sunucu kullanmak hem önerilen hem de çoğu domain kaydedicisi tarafından beklenen bir yapı. Örnek bir mimari:
Bu rehberde tek sunucu üstünden ilerleyeceğiz ama yapılandırman kolayca ikinci bir sunucuya replike edilebilir olacak.
BIND DNS Kurulum Rehberi
Şimdi linux dns server rehberi modunu açıp adım adım bind dns kurulum sürecine geçelim. Örnekler Ubuntu/Debian ekseninde olacak ama paket isimleri küçük farklarla diğer dağıtımlarda da benzer.
Sunucunun Hazırlanması
İlk iş sunucunun hostname ve IP yapılandırmasını netleştirmek. Hostname olarak ns1.ornekalan.com gibi kalıcı bir isim ver ve bu ismin A kaydının gerçekten sunucunun IP adresine çözüldüğünden emin ol. Ardından /etc/hosts dosyasında bu hostname ve IP eşleşmesini kontrol et. Statik IP atamasını da network yapılandırma dosyalarından veya panel üzerinden kalıcı hale getir.
Zaman senkronizasyonu da önemli. DNS kayıtlarının TTL ve SOA alanlarında zaman damgaları kullanılıyor. Bu yüzden NTP veya systemd-timesyncd ile sunucunun saatinin doğru çalıştığından emin ol. Yanlış saat bazen replikasyon ve cache süresi sorunlarına yol açabiliyor.
BIND Paket Kurulumu
Ubuntu veya Debian kullanıyorsan bind9 ve yardımcı araçları kurulumu için paket yöneticisini kullanabilirsin. Temel yapı:
sudo apt update
sudo apt install bind9 bind9utils bind9-doc
CentOS, Rocky Linux veya AlmaLinux tarafında ise genellikle paket ismi bind şeklindedir ve dnf veya yum ile kurulur. Kurulumdan sonra BIND servisi otomatik olarak başlar. Servis durumunu kontrol etmek için systemd kullanan sistemlerde bind9.service ya da named.service durumuna bakabilirsin.
Temel yapılandırma dosyaları çoğu dağıtımda /etc/bind veya /etc/named dizininde bulunur. Ana konfigürasyon genellikle named.conf veya named.conf.options benzeri dosyalara bölünmüştür. Dağıtıma özel farklılıkları dikkate almak için dağıtımının resmi belgelerine göz atmanda fayda var.
İlk Zone Dosyasını Oluşturma
Senaryomuzda ornekalan.com isimli bir alan adını yöneteceğiz. Amaç, bu domain için BIND üzerinde yetkili bir zone tanımlamak ve en azından temel A, NS ve MX kayıtlarını oluşturmak.
Önce BIND ana yapılandırma dosyasına zone tanımını eklemen gerekiyor. Zone tanımı kabaca şu mantıkta olur: alan adını, tipini (master ya da slave) ve zone dosyasının yolunu belirtirsin. Sonrasında belirtilen zone dosyasını oluşturup içeriğini doldurursun.
Zone dosyasında SOA (Start of Authority) kaydını doğru ayarlamak kritik. Burada sorumlu e-posta, seri numarası, yenileme ve sonlanma süreleri gibi parametreler var. Seri numarasını genellikle yilaygünyyggss formatında kullanmak (örneğin 2025120101 gibi) değişiklikleri takip etmeyi kolaylaştırır.
Temel kayıtlar şu şekilde olur: bir A kaydı ile ornekalan.com alan adını web sunucunun IP adresine, bir NS kaydı ile ns1 ve varsa ns2 sunucularını tanımlarsın. İsteğe bağlı olarak mail.ornekalan.com gibi bir A kaydı ve onu işaret eden bir MX kaydı da ekleyebilirsin. Böylece alan adın için web ve mail trafiği DNS tarafında düzgünce tanımlanmış olur.
Reverse DNS ve Testler
Yetkili DNS kurulumunda sık atlanan ama önemli bir konu reverse DNS. IPv4 için PTR kayıtlarıyla IP adresinden alan adına giden çözümleme yapılır. Genellikle reverse DNS kayıtlarını IP bloklarını sağlayan kurum yönetir, yani hosting sağlayıcın veya ISS. Bazı sağlayıcılar bu ayarı panelden yapmana izin verir, bazıları destek talebi ister.
BIND tarafında ise reverse zone tanımları ile IP bloklarını PTR kayıtlarıyla eşleştirebilirsin. Özellikle e-posta sunucusu işletiyorsan reverse DNS mutlaka düzgün olmalı, yoksa spam filtreleri tarafından sert şekilde cezalandırılabilirsin.
Kurulum sonrasında test için kullanabileceğin araçlar şunlar:
Test sırasında hem dışarıdan DNS çözümlemesini, hem de kendi sunucuna direkt bağlanarak yetkili cevapları kontrol et. Böylece bind dns kurulum aşamasının gerçekten sorunsuz tamamlandığını garanti etmiş olursun.
PowerDNS Kurulumu ve Yapılandırması
Şimdi sırayı daha modern ve otomasyona çok uygun bir çözüm olan PowerDNS kurulumu kısmına verelim. Özellikle çok sayıda domain yöneteceksen veya kayıtları veritabanında saklamak istiyorsan PowerDNS gerçekten hayat kurtarıyor.
PowerDNS Bileşenlerini Anlamak
PowerDNS ekosistemi kabaca iki ana parçadan oluşur:
Bu iki bileşeni aynı makinede kullanabileceğin gibi, ayrı sunucularda da çalıştırabilirsin. Biz burada yetkili sunucu tarafına odaklanacağız ve veritabanı destekli bir yapı seçeceğiz. Böylece DNS kayıtlarını MySQL veya PostgreSQL gibi bir veritabanında tutup, ileride bir panel veya API ile yönetebilirsin.
Veritabanı Tabanlı PowerDNS Kurulumu
İlk adım olarak bir veritabanı sunucusu hazırlaman gerekiyor. Küçük kurulumlar için genellikle MariaDB veya MySQL işini görecektir. Önce veritabanı sunucunu kur ve PowerDNS için ayrı bir veritabanı ile kullanıcı oluştur. Kullanıcıya sadece gerekli veritabanı için yetki vermen güvenlik açısından iyi bir pratik.
Ardından PowerDNS için ilgili veritabanı backend paketlerini kurmalısın. Örneğin MySQL kullanıyorsan genellikle pdns-backend-mysql benzeri bir paket vardır. Yetkili sunucu paketiyle birlikte bu backend modülü de kurulduktan sonra PowerDNS yapılandırma dosyasında backend türünü mysql olarak ayarlarsın ve veritabanı erişim bilgilerini girersin. Bu bilgileri girerken veritabanı kullanıcı adını ve parolasını yalnızca bu amaç için oluşturduğun kullanıcıya göre yazmayı unutma.
Daha sonra veritabanında PowerDNS in beklediği tabloları oluşturman gerekir. Genellikle paketle birlikte gelen bir SQL şeması dosyası vardır ve bunu veritabanına import ederek gerekli tabloları hızlıca oluşturabilirsin. Bu tablolar arasında domains, records gibi yapılar bulunur ve her biri zone ile kayıtları temsil eder.
İlk Domain ve Kayıtların Eklenmesi
Tüm bu adımlardan sonra artık ilk domain ini veritabanına eklemeye hazırsın. domains tablosuna ornekalan.com için bir satır ekleyip, records tablosuna da NS, A, MX ve gerekirse CNAME kayıtlarını girebilirsin. Bazı dağıtım rehberleri bu işlemi CLI araçlarla basitleştirir; örneğin pdnsutil gibi yardımcılar kullanarak domain eklemek, zone transferi yapmak ve kayıtları yönetmek mümkün.
PowerDNS in güzelliği burada ortaya çıkıyor: Veritabanı tabanlı bir yapı olduğu için gelecekte bir web paneli (örneğin PowerDNS Admin, PowerAdmin gibi açık kaynak projeler) kurup, DNS kayıtlarını grafik arayüz üzerinden yönetebilirsin. Ayrıca kendi otomasyon scriptlerini yazarak, yeni müşteri açıldığında otomatik DNS kaydı oluşturmayı da oldukça kolay hale getirebilirsin.
Recursor ve Yetkili Sunucuyu Birlikte Kullanmak
Eğer hem yetkili DNS sunucusu hem de recursive caching sunucu işini aynı makinede yapmak istiyorsan, PowerDNS Recursor bileşenini de devreye alabilirsin. Burada dikkat etmen gereken şey port ve adres çakışmalarını önlemek. Genelde yetkili sunucu dış dünyaya 53 numaralı porttan cevap verirken, recursor ise yalnızca iç ağa açık bir arayüzde veya farklı bir portta çalıştırılır.
Recursor kullanırken istemcilerin DNS isteklerini önce recursor a, recursor un da kendi alanların için gerekli olduğunda yetkili sunucuya yönlendireceği bir topoloji kurabilirsin. Böylece hem internet üzerinde genel DNS çözümlemesi, hem de kendi alan adların için yetkili cevaplar merkezi biçimde yönetilir.
PowerDNS Kurulumunu Test Etmek
Kurulumun ardından yine dig, host veya nslookup gibi araçlarla testler yapmalısın. Özellikle SOA ve NS kayıtlarının doğru döndüğünü kontrol et, TTL değerlerinin senin için mantıklı olup olmadığına bak. Eğer zone transferi yapıyorsan, ikincil sunucunun doğru şekilde verileri aldığına emin ol.
PowerDNS in loglarını da yakından izlemek önemli. Çoğu dağıtımda journald üzerinden veya özel log dosyalarında sorgular ve hatalar kaydedilir. Özellikle ilk konfigürasyon aşamasında bu loglar, yanlış yazılmış kayıtlar veya eksik izinler gibi problemleri bulmanda çok yardımcı olur.
Güvenlik, Performans ve İyi Uygulamalar
Özel dns sunucusu kurma işini ciddiye alıyorsan güvenlik ve performans adımlarını da atlamaman gerekiyor. DNS internete açık, herkesin uğradığı bir kapı ve yanlış yapılandırılmış bir sunucu hem senin için hem de başkaları için ciddi risk oluşturabilir.
Temel Güvenlik Önlemleri
İleri seviye için DNSSEC kullanarak kayıtlarını imzalamayı düşünebilirsin. Böylece alan adın için DNS yanıtlarının bütünlüğü kriptografik olarak doğrulanabilir hale gelir. Hem BIND hem de PowerDNS tarafında DNSSEC desteği mevcut, ancak kurulum ve anahtar yönetimi biraz ekstra emek isteyebilir.
Performans ve Ölçeklenebilirlik
Performans tarafında en kritik noktalardan biri doğru TTL değerlerini seçmek. Çok düşük TTL, her sorguda yetkili sunucuna yük bindirirken, çok yüksek TTL ise değişikliklerin geç yayılmasına neden olur. Tipik senaryolarda birkaç saatlik TTL değerleri çoğu alan adı için uygundur; sık değişecek kayıtlar için daha düşük TTL kullanabilirsin.
Ayrıca:
Özellikle büyük bir altyapı işletiyorsan, log ve istatistikleri merkezi bir sistemde toplayıp analiz etmek (örneğin ELK veya benzeri çözümlerle) sana saldırıları erken fark etme ve kapasite planlama anlamında ciddi avantaj sağlar.
Sonuç ve Sonraki Adımlar
Bu rehberde sıfırdan başlayarak özel dns sunucusu kurma sürecini ana hatlarıyla ele aldık. Önce DNS in mantığını ve BIND ile PowerDNS arasındaki farkları konuştuk, ardından bind dns kurulum adımlarını pratik bir şekilde özetledik. Daha sonra PowerDNS kurulumu için veritabanı tabanlı bir yaklaşımın sana neler kazandıracağını anlattık ve kurulumun temel yapı taşlarını gördük.
Bundan sonraki adım, kendi senaryona en uygun aracı seçip test ortamında denemek. Küçük ve sade yapılar için BIND hala çok güçlü bir seçenek, özellikle de metin dosyalarıyla çalışmayı seviyorsan. Büyük ölçekli, otomasyon ağırlıklı ortamlarda ise PowerDNS artı bir web paneli kombinasyonu neredeyse vazgeçilmez hale geliyor. Hangi yolu seçersen seç, iyi bir linux dns server rehberi takip ederek, güvenlik ve performans önerilerini uygulayarak stabil bir sistem kurman mümkün.
Son olarak, canlı ortama geçmeden önce mutlaka bol bol test yap, zone kayıtlarını farklı konumlardan ve farklı resolver lardan dene, logları takip et. Böylece kendi alan adların için sorumluluğu üstlenen bu kritik servisi, gerçekten güvenilir ve profesyonel bir şekilde işletmiş olursun. Unutma, internette kimlik kartın sayılan alan adlarını emanet ettiğin yapı DNS; bu yüzden özel dns sunucusu kurma sürecine ayırdığın her ekstra dakika, uzun vadede sana ciddi rahatlık olarak geri dönecek.
Sıkça Sorulan Sorular
Neden kendi özel DNS sunucumu kurmalıyım?
Özel DNS sunucusu kurma, alan adların üzerinde tam kontrol, daha esnek yönetim, gelişmiş güvenlik ayarları ve büyük ortamlarda performans kazancı sağlar. Ayrıca otomasyon ve entegrasyon olanakları da önemli bir avantajdır.
BIND mi yoksa PowerDNS mi kullanmalıyım?
BIND, klasik, olgun ve metin dosyası temelli bir çözümdür; küçük ve orta ölçekli yapılar için gayet yeterlidir. PowerDNS ise veritabanı ve API desteğiyle büyük ve otomasyon ağırlıklı ortamlarda öne çıkar. Kısaca sade kurulumlar için BIND, çok alan adlı ve dinamik yapılar için PowerDNS tercih edilebilir.
DNS sunucusu kurmak için hangi Linux dağıtımı daha uygun?
BIND ve PowerDNS, Ubuntu Server, Debian, Rocky Linux, AlmaLinux gibi hemen tüm ana akım Linux dağıtımlarında sorunsuz çalışır. Seçimi daha çok alışkın oldukların paket yöneticisi, destek topluluğu ve kurumsal gereksinimlerin belirler.
Özel DNS sunucumu kurduktan sonra nelere dikkat etmeliyim?
Sunucuyu güncel tutmak, firewall ile sadece gerekli portları açmak, recursive sorguları yetkili sunucuda kapatmak, zone transferlerini sınırlandırmak ve sürekli izleme yapmak önemlidir. Ayrıca TTL değerleri ile yük ve esneklik dengesini do 011gru ayarlamalı, canlıya almadan önce kayıtları farklı resolver larda test etmelisin.