Takip et

CentOS 6.3 x64 Üzerine PowerDNS Kurulumu: Kapsamlı Bir Rehber

CentOS 6.3 x64 Üzerine PowerDNS Kurulumu: Kapsamlı Bir Rehber Giriş Alan Adı Sistemi (DNS), internetin temel yapı taşlarından biridir. İnsanl

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.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.