CentOS 6.3 x64 Üzerine PowerDNS Kurulumu: Kapsamlı Bir Rehber
Giriş
Alan Adı Sistemi (DNS), internetin temel yapı taşlarından biridir. İnsanların hatırlaması kolay alan adlarını (örneğin, google.com) makinelerin anlayabileceği IP adreslerine (örneğin, 172.217.160.142) dönüştürerek web sitelerine erişimi, e-posta gönderimini ve diğer internet tabanlı hizmetlerin çalışmasını mümkün kılar. Güvenilir ve yüksek performanslı bir DNS sunucusu, herhangi bir ağ altyapısının kritik bir bileşenidir. Bu bağlamda PowerDNS, esnekliği, modüler yapısı ve çeşitli veritabanı arka uçlarını desteklemesiyle öne çıkan popüler bir açık kaynak DNS sunucusudur.
Bu makale, CentOS 6.3 x64 işletim sistemi yüklü bir sunucu üzerine PowerDNS Authoritative Server’ın adım adım nasıl kurulacağını ve yapılandırılacağını ayrıntılı olarak açıklamaktadır. CentOS 6.3 her ne kadar eski bir işletim sistemi olsa da, birçok eski sistemde hala aktif olarak kullanılmakta veya belirli proje gereksinimleri nedeniyle tercih edilmektedir. Bu rehber, PowerDNS’i kaynak koddan derleyerek ve MySQL veritabanı arka ucunu kullanarak kurulumu gerçekleştirecektir. Bu yöntem, size en güncel PowerDNS sürümünü (CentOS 6.3 uyumlu olanı) kurma ve yapılandırma üzerinde tam kontrol sağlar.
PowerDNS, geleneksel DNS sunucularından (BIND gibi) farklı olarak, DNS kayıtlarını dosya tabanlı sistemler yerine veritabanlarında (MySQL, PostgreSQL, SQLite, Oracle, LDAP vb.) saklayabilme yeteneği sunar. Bu, özellikle büyük ölçekli ve dinamik DNS ortamları için yönetim kolaylığı, otomasyon potansiyeli ve gelişmiş performans avantajları sağlar. Ayrıca, PowerDNS’in modüler mimarisi, DNSSEC desteği, gelişmiş güvenlik özellikleri ve genişletilebilirlik imkanları, onu modern DNS ihtiyaçları için cazip bir seçenek haline getirir.
Bu kapsamlı rehberde, CentOS 6.3 sunucunuzu PowerDNS kurulumu için hazırlamaktan, MySQL veritabanını kurup yapılandırmaya, PowerDNS’i kaynak koddan derleyip kurmaya, temel yapılandırma ayarlarını yapmaya, bir init scripti oluşturarak servisi yönetmeye, güvenlik duvarı ayarlarını düzenlemeye ve ilk alan adınızı ekleyerek sistemi test etmeye kadar tüm adımları bulacaksınız. Amacımız, rehberin sonunda çalışan, güvenli ve yönetilebilir bir PowerDNS Authoritative Server’a sahip olmanızı sağlamaktır.
Ön Gereksinimler
PowerDNS kurulumuna başlamadan önce aşağıdaki ön gereksinimlerin karşılandığından emin olmanız önemlidir:
CentOS 6.3 x64 İşletim Sistemi
Kurulumu yapacağınız, temiz bir CentOS 6.3 x64 işletim sistemi yüklü bir sunucuya ihtiyacınız var. Bu sunucunun minimum 1GB RAM ve 20GB disk alanına sahip olması önerilir. Daha büyük ve yoğun DNS trafiği beklenen ortamlar için bu değerler artırılmalıdır.
Root veya Sudo Yetkileri
Tüm kurulum ve yapılandırma adımları için root kullanıcısı olarak oturum açmanız veya sudo yetkilerine sahip bir kullanıcı kullanmanız gerekmektedir. Bu rehberdeki komutlar root kullanıcısı tarafından çalıştırılacak şekilde yazılmıştır. Eğer sudo kullanıyorsanız, her komutun başına sudo eklemeniz gerekecektir.
İnternet Bağlantısı
Sunucunuzun, gerekli paketleri indirmek ve PowerDNS kaynak kodunu çekmek için aktif bir internet bağlantısına sahip olması gerekmektedir.
Temel Linux Komut Satırı Bilgisi
Linux komut satırı ve temel metin düzenleyici (vi/vim veya nano gibi) kullanımı hakkında bilgi sahibi olmanız, kurulum sürecini daha rahat yönetmenizi sağlayacaktır.
Firewall Ayarları
DNS hizmeti, varsayılan olarak 53 numaralı TCP ve UDP portlarını kullanır. Sunucunuzun güvenlik duvarının (iptables) bu portlardan gelen bağlantılara izin verecek şekilde yapılandırılması gerekecektir. Bu adımı kurulumun ilerleyen aşamalarında detaylı olarak ele alacağız.
SELinux Durumu
SELinux (Security-Enhanced Linux), CentOS gibi sistemlerde ek bir güvenlik katmanı sağlar. Bazı durumlarda, SELinux politikaları PowerDNS’in düzgün çalışmasını engelleyebilir. Kurulum sırasında sorun yaşanmaması adına, SELinux’u geçici olarak devre dışı bırakmak veya izin veren kurallar eklemek gerekebilir. Genellikle, PowerDNS varsayılan SELinux politikalarıyla çalışabilse de, derleme ve servis başlatma sorunları yaşarsanız bunu kontrol etmeniz faydalı olacaktır. SELinux’u geçici olarak devre dışı bırakmak için setenforce 0 komutunu kullanabilirsiniz. Kalıcı olarak devre dışı bırakmak için /etc/selinux/config dosyasını düzenlemeniz gerekir. Ancak, güvenlik açısından kalıcı devre dışı bırakma yerine uygun politikaların yapılandırılması önerilir. Bu rehberde, varsayılan olarak SELinux’un PowerDNS’in çalışmasına engel olmayacağı varsayılmıştır.
Sistem Güncellemesi ve Temel Bağımlılıkların Kurulumu
Kuruluma başlamadan önce sistemin güncel olduğundan ve PowerDNS’i derlemek için gerekli temel bağımlılıkların yüklü olduğundan emin olalım.
Sistem Güncellemesi
Öncelikle, sistemdeki tüm mevcut paketleri güncelleyerek olası güvenlik açıklarını kapatın ve en güncel paket sürümlerine sahip olun.
yum update -y
Bu komut, sisteminizdeki tüm paketleri güncelleyecek ve -y parametresi sayesinde tüm sorulara otomatik olarak “evet” yanıtı verecektir. Güncelleme işlemi tamamlandıktan sonra, bazı çekirdek veya sistem bileşenleri güncellenmişse, sunucuyu yeniden başlatmanız önerilir:
reboot
Gerekli Bağımlılıkların Kurulumu
PowerDNS’i kaynak koddan derlemek için çeşitli geliştirme araçlarına ve kütüphanelere ihtiyacımız olacaktır. Ayrıca, MySQL veritabanı arka ucunu kullanacağımız için MySQL geliştirme paketlerini de kurmamız gerekmektedir.
yum install -y wget gcc make automake autoconf libtool openssl-devel boost-devel libyaml-devel lua-devel mysql-devel postgresql-devel sqlite-devel recode-devel lmdb-devel openldap-devel net-snmp-devel bind-utils
Bu komutla yüklenen önemli paketler ve işlevleri şunlardır:
* wget: PowerDNS kaynak kodunu indirmek için kullanılır.
* gcc, make, automake, autoconf, libtool: Kaynak koddan yazılım derlemek için gerekli temel geliştirme araçlarıdır.
* openssl-devel: SSL/TLS desteği için gerekli geliştirme kütüphanesidir.
* boost-devel: PowerDNS’in bazı bileşenleri tarafından kullanılan Boost C++ kütüphanesinin geliştirme dosyalarıdır.
* libyaml-devel, lua-devel, mysql-devel, postgresql-devel, sqlite-devel, recode-devel, lmdb-devel, openldap-devel, net-snmp-devel: PowerDNS’in farklı modülleri ve veritabanı arka uçları için gerekli olan geliştirme kütüphaneleridir. Bu rehberde sadece mysql-devel doğrudan kullanılacak olsa da, configure betiği diğerlerinin varlığını kontrol edebilir, bu yüzden hepsini kurmak derleme sürecini sorunsuz hale getirecektir.
* bind-utils: dig gibi DNS sorgulama araçlarını içerir. Kurulum sonrası testler için faydalıdır.
Veritabanı Kurulumu ve Yapılandırması
PowerDNS, DNS kayıtlarını depolamak için bir veritabanı kullanır. Bu rehberde, MySQL’i tercih edeceğiz.
MySQL Kurulumu
CentOS 6.3 üzerinde MySQL sunucusunu ve istemci paketlerini kuralım:
yum install -y mysql-server mysql
Kurulum tamamlandıktan sonra MySQL servisini başlatın ve sistem başlangıcında otomatik olarak başlaması için ayarlayın:
service mysqld start
chkconfig mysqld on
MySQL sunucunuzu temel güvenlik ayarlarıyla yapılandırmak için mysql_secure_installation betiğini çalıştırın:
mysql_secure_installation
Bu betik size aşağıdaki soruları soracaktır:
1. Enter current password for root (enter for none): İlk kurulumda root şifresi olmadığı için doğrudan Enter tuşuna basın.
2. Set root password? [Y/n] Y yazıp Enter’a basın ve güçlü bir root şifresi belirleyin.
3. Remove anonymous users? [Y/n] Y
4. Disallow root login remotely? [Y/n] Y (Güvenlik için root kullanıcısının sadece localhost’tan bağlanmasına izin vermek iyi bir uygulamadır.)
5. Remove test database and access to it? [Y/n] Y
6. Reload privilege tables now? [Y/n] Y
PowerDNS İçin Veritabanı ve Kullanıcı Oluşturma
Şimdi PowerDNS için özel bir veritabanı ve bu veritabanına erişim yetkisi olan bir kullanıcı oluşturalım. MySQL root kullanıcısı olarak giriş yapın:
mysql -u root -p
Şifrenizi girdikten sonra MySQL komut istemine düşeceksiniz. Aşağıdaki SQL komutlarını sırasıyla çalıştırın:
CREATE DATABASE powerdns;
CREATE USER 'pdnsuser'@'localhost' IDENTIFIED BY 'GucluSifrenizBurayaGelecek';
GRANT ALL PRIVILEGES ON powerdns.* TO 'pdnsuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
* CREATE DATABASE powerdns;: PowerDNS kayıtlarını saklamak için powerdns adında bir veritabanı oluşturur.
* CREATE USER 'pdnsuser'@'localhost' IDENTIFIED BY 'GucluSifrenizBurayaGelecek';: pdnsuser adında, sadece localhost‘tan bağlanabilen ve belirttiğiniz güçlü şifreye sahip bir kullanıcı oluşturur. GucluSifrenizBurayaGelecek kısmını kendi güçlü şifrenizle değiştirmeyi unutmayın.
GRANT ALL PRIVILEGES ON powerdns. TO 'pdnsuser'@'localhost';: pdnsuser kullanıcısına powerdns veritabanı üzerindeki tüm yetkileri verir.
* FLUSH PRIVILEGES;: Yetki tablolarını yenileyerek değişikliklerin aktif olmasını sağlar.
* EXIT;: MySQL komut isteminden çıkar.
PowerDNS Veritabanı Şemasını Yükleme
PowerDNS’in veritabanı ile çalışabilmesi için belirli bir tablo yapısına (şema) ihtiyacı vardır. Bu şema, PowerDNS kaynak kodunun içinde bulunur.
PowerDNS kaynak kodunu indirdikten sonra şema dosyasını bulacağız. Şimdilik, PowerDNS’i indirdiğiniz ve pdns-4.x.x dizinine girdiğiniz varsayımıyla devam edelim. (PowerDNS indirme adımı bir sonraki bölümde daha detaylı ele alınacaktır.)
Şema dosyası genellikle modules/gmysql/schema.mysql.sql yolunda bulunur. PowerDNS kaynak kodunu indirdikten sonra, bu dosyayı kullanarak veritabanı şemasını oluşturun:
# PowerDNS kaynak kodunu indirdiğiniz ve açtığınız dizinde olduğunuzu varsayalım.
Örneğin, /root/pdns-4.x.x/ dizinindeyseniz:
mysql -u pdnsuser -p powerdns < modules/gmysql/schema.mysql.sql
Bu komut, pdnsuser kullanıcısı ve şifresiyle powerdns veritabanına bağlanacak ve schema.mysql.sql dosyasındaki SQL komutlarını çalıştırarak gerekli tabloları oluşturacaktır.
PowerDNS Kaynak Kodundan Derleme ve Kurulumu
CentOS 6.3'ün varsayılan depolarında PowerDNS'in güncel bir sürümünü bulmak zor olabilir. Bu nedenle, PowerDNS'i kaynak koddan derlemek, size en güncel (ve CentOS 6.3 ile uyumlu) sürümü kurma esnekliği sağlar. Bu rehberde PowerDNS Authoritative Server 4.0.x veya 4.1.x serisinden bir sürümü hedefleyeceğiz, zira bu sürümler CentOS 6.3 ile iyi bir uyumluluk sunarken modern özellikleri de barındırır.
Kaynak Kodunu İndirme
PowerDNS'in resmi web sitesinden veya GitHub deposundan en son kararlı sürümün kaynak kodunu indirebilirsiniz. Bu rehber için, örneğin PowerDNS 4.1.1'i kullanacağız. wget komutu ile kaynak kodunu indirelim:
cd /usr/local/src/ # Kaynak kodları genellikle burada saklanır
wget https://downloads.powerdns.com/releases/pdns-4.1.1.tar.gz
İndirme tamamlandıktan sonra, sıkıştırılmış arşivi açın ve oluşturulan dizine geçin:
tar -zxvf pdns-4.1.1.tar.gz
cd pdns-4.1.1
Derleme ve Kurulum
Şimdi PowerDNS'i derlemeye ve kurmaya başlayabiliriz. Bu süreç, configure, make ve make install komutlarını içerir.
Öncelikle, configure betiğini çalıştırarak derleme seçeneklerini belirleyelim. --with-modules="gmysql" parametresi, MySQL arka ucunu derlemeye dahil etmek için kritik öneme sahiptir. --prefix, --sysconfdir, --localstatedir gibi parametreler ise PowerDNS'in sistemde nereye kurulacağını ve yapılandırma dosyalarının nerede bulunacağını belirler.
./configure --with-modules="gmysql" \
--prefix=/usr \
--sysconfdir=/etc/powerdns \
--localstatedir=/var \
--enable-unit-tests=no
* --with-modules="gmysql": MySQL veritabanı arka ucunu (gmysql modülü) etkinleştirir.
* --prefix=/usr: Kurulumun ana dizinini /usr olarak ayarlar. Bu, PowerDNS ikili dosyalarının /usr/bin gibi standart Linux dizinlerine kurulmasını sağlar.
* --sysconfdir=/etc/powerdns: Yapılandırma dosyalarının /etc/powerdns dizininde saklanmasını sağlar.
* --localstatedir=/var: Log dosyaları ve diğer geçici verilerin /var dizini altında saklanmasını sağlar.
* --enable-unit-tests=no: Birim testlerinin derlenmesini devre dışı bırakır. Bu, genellikle üretim sunucularında gereksizdir ve derleme süresini kısaltır.
configure betiği, sisteminizdeki bağımlılıkları kontrol edecek ve derleme için bir Makefile oluşturacaktır. Herhangi bir hata veya eksik bağımlılık uyarısı alırsanız, ilgili paketi yum install komutuyla kurmanız gerekebilir.
configure işlemi başarıyla tamamlandıktan sonra, make komutuyla PowerDNS'i derleyin:
make
Bu adım, sisteminizin işlem gücüne bağlı olarak biraz zaman alabilir. Derleme işlemi hatasız tamamlanırsa, make install komutuyla PowerDNS'i sisteminize kurun:
make install
Bu komut, derlenmiş PowerDNS ikili dosyalarını, kütüphanelerini ve yapılandırma örneklerini belirlenen dizinlere kopyalayacaktır.
Kullanıcı ve Grup Oluşturma
Güvenlik açısından, PowerDNS servisini root kullanıcısı yerine ayrıcalıksız bir kullanıcı altında çalıştırmak en iyi uygulamadır. Bunun için bir pdns grubu ve pdns kullanıcısı oluşturalım:
groupadd pdns
useradd -g pdns -s /sbin/nologin -M pdns
* groupadd pdns: pdns adında bir grup oluşturur.
* useradd -g pdns -s /sbin/nologin -M pdns: pdns grubuna ait, sistemde oturum açamayan (/sbin/nologin) ve ana dizini olmayan (-M) bir pdns kullanıcısı oluşturur.
PowerDNS'in log dosyalarını veya diğer çalışma zamanı verilerini saklayacağı dizinler için de uygun sahiplik ve izinleri ayarlamanız gerekebilir. Örneğin, PowerDNS'in loglarını /var/log/powerdns dizinine yazmasını istiyorsanız:
mkdir -p /var/log/powerdns
chown -R pdns:pdns /var/log/powerdns
PowerDNS Yapılandırması
PowerDNS'in ana yapılandırma dosyası /etc/powerdns/pdns.conf olacaktır. Kurulum sırasında bir örnek yapılandırma dosyası oluşturulmuş olabilir.
Öncelikle, yapılandırma dizinine geçin:
cd /etc/powerdns
Eğer pdns.conf dosyası yoksa, örnek dosyayı kopyalayarak başlayabilirsiniz:
cp pdns.conf.sample pdns.conf
Şimdi pdns.conf dosyasını bir metin düzenleyici ile açın (vi veya vim kullanabilirsiniz):
vi pdns.conf
Aşağıdaki temel yapılandırma parametrelerini bulun ve kendi ortamınıza göre düzenleyin veya ekleyin. Yorum satırlarını (# ile başlayanlar) dikkate alarak gerekli değişiklikleri yapın.
# Veritabanı arka ucunu (backend) etkinleştirir. MySQL kullanıyoruz.
launch=gmysql
MySQL veritabanı bağlantı ayarları
gmysql-host=localhost
gmysql-user=pdnsuser
gmysql-password=GucluSifrenizBurayaGelecek # MySQL kurulumunda belirlediğiniz şifre
gmysql-dbname=powerdns
PowerDNS'in bir daemon olarak çalışmasını sağlar.
daemon=yes
PowerDNS'in hangi kullanıcı ve grup altında çalışacağını belirler.
setgid=pdns
setuid=pdns
Loglama seviyesi (4 genellikle yeterlidir, daha detaylı bilgi için 6 veya 9 kullanılabilir).
loglevel=4
log-timestamp=yes
query-logging=yes # Gelen sorguların loglanmasını sağlar (performansı etkileyebilir, dikkatli kullanın)
Sunucunun dinleyeceği IP adresi ve port. 0.0.0.0 tüm arayüzlerde dinlemeyi sağlar.
local-address=0.0.0.0
local-port=53
Rekürsif sorgulara izin verilip verilmeyeceği. Yetkili sunucu olduğumuz için 'no' olmalı.
allow-recursion=no
Eğer bu sunucu master DNS sunucusu olacaksa 'yes' olarak ayarlayın.
master=yes
Eğer bu sunucu slave DNS sunucusu olacaksa 'yes' olarak ayarlayın.
Hem master hem de slave olabiliyorsa ikisi de 'yes' olabilir.
Bu rehberde master olarak yapılandırıyoruz.
slave=no
Varsayılan SOA (Start of Authority) kaydında kullanılacak e-posta adresi ve isim sunucusu.
Bu değerler, veritabanına eklenen her yeni alan adı için varsayılan olarak kullanılır.
default-soa-name=ns1.example.com
default-soa-mail=admin.example.com
default-soa-serial=2023010101 # YYYYMMDDNN formatında, her değişiklikte artırılmalı
default-soa-refresh=10800 # 3 saat
default-soa-retry=3600 # 1 saat
default-soa-expire=604800 # 1 hafta
default-soa-minimum=3600 # 1 saat
DNSSEC desteği için gerekli modüller (isteğe bağlı, ileri seviye yapılandırma)
enable-dnssec=yes
gmysql-dnssec=yes
Web arayüzü veya API kullanımı için (isteğe bağlı)
webserver=yes
webserver-address=127.0.0.1
webserver-port=8081
api-key=your_api_key_here
GucluSifrenizBurayaGelecek kısmını MySQL için belirlediğiniz pdnsuser şifresiyle değiştirmeyi unutmayın. ns1.example.com ve admin.example.com gibi değerleri kendi alan adınıza ve iletişim bilgilerinize göre güncelleyin. Dosyayı kaydedin ve kapatın (:wq komutu ile vi/vim'de).
PowerDNS Servisini Başlatma ve Otomatik Başlangıca Ekleme
CentOS 6.3, SystemV init sistemini kullanır. PowerDNS'i bir servis olarak yönetmek için bir init script'i oluşturmamız gerekmektedir. PowerDNS kaynak kodunun içinde genellikle örnek bir init script bulunur.
Init Script Oluşturma
PowerDNS kaynak kodunu indirdiğiniz dizine gidin (örneğin, /usr/local/src/pdns-4.1.1/). contrib/init.d/pdns.init yolunda örnek bir init script bulacaksınız. Bu scripti /etc/init.d/ dizinine kopyalayın ve çalıştırılabilir hale getirin:
cp /usr/local/src/pdns-4.1.1/contrib/init.d/pdns.init /etc/init.d/pdns
chmod +x /etc/init.d/pdns
Şimdi bu servisi chkconfig ile sistem başlangıcına ekleyin:
chkconfig --add pdns
chkconfig pdns on
Servisi Başlatma ve Durum Kontrolü
Artık PowerDNS servisini başlatabilirsiniz:
service pdns start
Servisin başarıyla çalışıp çalışmadığını kontrol etmek için:
service pdns status
Ayrıca, PowerDNS'in 53 numaralı portu dinleyip dinlemediğini netstat ile kontrol edebilirsiniz:
netstat -tulnp | grep 53
Çıktıda udp ve tcp için 53 numaralı portu dinleyen pdns_server veya pdns sürecini görmelisiniz.
Firewall Ayarları
PowerDNS'in dışarıdan gelen DNS sorgularına yanıt verebilmesi için sunucunuzun güvenlik duvarında 53 numaralı TCP ve UDP portlarına izin vermeniz gerekmektedir. CentOS 6.3'te bu işlem iptables ile yapılır.
iptables yapılandırma dosyasını düzenlemek için:
vi /etc/sysconfig/iptables
--A INPUT -j REJECT --reject-with icmp-host-prohibited veya benzeri bir satırdan ÖNCE, aşağıdaki kuralları ekleyin:
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
Bu kurallar, yeni bağlantılar için 53 numaralı UDP ve TCP portlarına gelen trafiğe izin verir. Dosyayı kaydedin ve kapatın.
Değişikliklerin etkili olması için iptables servisini yeniden başlatın:
service iptables restart
İlk Alan Adını Ekleme
PowerDNS artık çalışıyor ve dışarıdan gelen sorgulara yanıt vermeye hazır. Ancak henüz hiçbir alan adı kaydı içermiyor. İlk alan adımızı veritabanına ekleyelim.
MySQL komut istemine pdnsuser olarak bağlanın:
mysql -u pdnsuser -p powerdns
example.com alan adını ekleyelim. Bu alan adını kendi alan adınızla değiştirmeyi unutmayın.
-- 1. Alan adını ekle
INSERT INTO domains (name, type) VALUES ('example.com', 'NATIVE');
-- Eklenen alan adının ID'sini al (bir sonraki adımlarda kullanılacak)
SELECT id FROM domains WHERE name='example.com';
-- Çıktı olarak bir ID alacaksınız, örneğin 1. Bu ID'yi aşağıdaki komutlarda kullanın.
-- 2. SOA kaydını ekle (Start of Authority)
-- domain_id kısmına yukarıdaki SELECT komutundan aldığınız ID'yi yazın.
INSERT INTO records (domain_id, name, type, content, ttl, prio) VALUES (1, 'example.com', 'SOA', 'ns1.example.com admin.example.com 2023010101 10800 3600 604800 3600', 3600, 0);
-- 3. NS kaydını ekle (Name Server)
INSERT INTO records (domain_id, name, type, content, ttl, prio) VALUES (1, 'example.com', 'NS', 'ns1.example.com', 3600, 0);
-- 4. A kaydını ekle (Adres kaydı - Name Server'ınızın IP'si)
-- 'YOUR_SERVER_IP' yerine PowerDNS sunucunuzun IP adresini yazın.
INSERT INTO records (domain_id, name, type, content, ttl, prio) VALUES (1, 'ns1.example.com', 'A', 'YOUR_SERVER_IP', 3600, 0);
-- 5. Diğer A kayıtlarını ekle (örneğin, web sitesi için)
INSERT INTO records (domain_id, name, type, content, ttl, prio) VALUES (1, 'www.example.com', 'A', 'YOUR_SERVER_IP', 3600, 0);
-- 6. MX kaydını ekle (Mail Exchanger - E-posta sunucusu için)
INSERT INTO records (domain_id, name, type, content, ttl, prio) VALUES (1, 'example.com', 'MX', 'mail.example.com', 3600, 10);
INSERT INTO records (domain_id, name, type, content, ttl, prio) VALUES (1, 'mail.example.com', 'A', 'YOUR_SERVER_IP', 3600, 0);
-- MySQL'den çıkış yap
EXIT;
Veritabanına yeni kayıtlar ekledikten sonra PowerDNS'in bu değişiklikleri algılaması için servisi yeniden başlatmanız veya pdns_control reload komutunu kullanmanız gerekebilir:
service pdns restart
Veya belirli bir alan adını yeniden yüklemek için:
pdns_control reload-zone example.com
Test Etme
Alan adını ve kayıtları ekledikten sonra, PowerDNS sunucunuzun doğru yanıt verip vermediğini test edelim. dig komutunu kullanarak sorgular yapabilirsiniz. YOUR_SERVER_IP yerine PowerDNS sunucunuzun IP adresini yazın.
# SOA kaydını sorgula
dig @YOUR_SERVER_IP example.com SOA
www.example.com için A kaydını sorgula
dig @YOUR_SERVER_IP www.example.com A
example.com için MX kaydını sorgula
dig @YOUR_SERVER_IP example.com MX
Bu komutların çıktısında, veritabanına eklediğiniz kayıtları görmeniz gerekmektedir. Örneğin, dig @YOUR_SERVER_IP www.example.com A komutunun çıktısında ANSWER SECTION altında www.example.com. 3600 IN A YOUR_SERVER_IP benzeri bir satır olmalıdır.
Ayrıca, PowerDNS'in kendi aracı olan pdns_control ile alan adının yapılandırmasını kontrol edebilirsiniz:
pdns_control bind-check-zone example.com
Bu komut, alan adının PowerDNS tarafından doğru bir şekilde yüklendiğini ve BIND formatında herhangi bir sözdizimi hatası olup olmadığını kontrol eder.
Sonuç
Bu kapsamlı rehberde, CentOS 6.3 x64 işletim sistemi üzerine PowerDNS Authoritative Server'ı MySQL veritabanı arka ucuyla birlikte başarıyla kurdunuz ve yapılandırdınız. Sistem güncellemelerinden başlayarak, gerekli bağımlılıkların kurulumuna, MySQL veritabanının yapılandırılmasına, PowerDNS'in kaynak koddan derlenip kurulmasına, ana yapılandırma dosyasının düzenlenmesine, bir init scripti aracılığıyla servis yönetiminin sağlanmasına, güvenlik duvarı kurallarının ayarlanmasına ve son olarak ilk alan adınızın eklenerek test edilmesine kadar tüm adımları tamamladık.
Artık internet üzerinde kendi alan adlarınız için yetkili DNS hizmeti verebilen, esnek ve performanslı bir PowerDNS sunucusuna sahipsiniz. Bu kurulum, küçük ve orta ölçekli web sitelerinden, büyük ve dinamik DNS ortamlarına kadar çeşitli ihtiyaçlara cevap verebilecek sağlam bir temel oluşturmaktadır.
Sonraki Adımlar ve İyileştirmeler:
* Yüksek Erişilebilirlik (Redundancy): Tek bir DNS sunucusu, tek hata noktası oluşturur. Yüksek erişilebilirlik sağlamak için en az bir PowerDNS Slave sunucusu kurarak DNS kayıtlarınızın yedekliliğini sağlamanız şiddetle tavsiye edilir. Bu, bir sunucunun arızalanması durumunda hizmet kesintisini önleyecektir.
* DNSSEC (Domain Name System Security Extensions): DNSSEC, DNS sorgularının güvenliğini artırmak için dijital imzalar kullanır. PowerDNS, DNSSEC'i destekler ve alan adlarınız için DNSSEC'i etkinleştirmek, güvenlik seviyenizi önemli ölçüde artıracaktır.
* PowerDNS Recursor: Eğer sunucunuzun hem yetkili hem de rekürsif DNS hizmeti vermesini istiyorsanız, PowerDNS Recursor'ı ayrı bir bileşen olarak kurmanız gerekebilir. Yetkili sunucu (Authoritative) sadece kendi alan adları hakkında bilgi verirken, rekürsif sunucu (Recursor) diğer alan adları hakkındaki bilgileri internetten toplayıp istemcilere iletir.
* Web Tabanlı Yönetim Arayüzü (Poweradmin): PowerDNS kayıtlarını veritabanı üzerinden doğrudan yönetmek yerine, Poweradmin gibi web tabanlı arayüzler kullanarak alan adı yönetimini çok daha kolay ve görsel hale getirebilirsiniz.
* Performans İzleme: Sunucunuzun performansını ve DNS sorgu yükünü izlemek için Prometheus, Grafana veya benzeri araçları entegre edebilirsiniz. PowerDNS, SNMP ve diğer metrik çıkışlarını destekler.
* Güvenlik ve Bakım: Sunucunuzu düzenli olarak güncel tutun, güvenlik duvarı kurallarınızı gözden geçirin ve PowerDNS yapılandırmanızı periyodik olarak kontrol edin. Güçlü şifreler kullanmaya devam edin ve yalnızca gerekli portları açık bırakın.
Bu rehber, PowerDNS ile ilk adımınızı atmanıza yardımcı oldu. DNS dünyası geniş ve karmaşık olabilir, ancak PowerDNS'in sunduğu esneklik ve kontrol ile ihtiyaçlarınıza özel, güvenilir bir DNS altyapısı kurabilirsiniz.