Powerdns Nedir? 

PowerDNS (pdns), C ++ ile yazılmış ve GPL Lisansı altında yayınlanan açık kaynaklı bir DNS sunucusudur. Daha iyi performans ve düşük bellek gereksinimleri ile tasarlanmış geleneksel DNS sunucusu Bind için iyi bir alternatif haline geldi. PowerDNS, Yetkili sunucu ve Recursor olmak üzere iki ürün sunar. PowerDNS Yetkili sunucusu, düz Bind bölge dosyaları, MySQL, PostgreSQL, SQLite3 veya LDAP gibi RDBMS gibi farklı arka uçlar üzerinden yapılandırılabilir.Bu eğitimde, bir PowerDNS Yetkili sunucunun bir arka uç olarak MariaDB veritabanı sunucusuyla nasıl kurulacağını ve yapılandırılacağını ve kolay DNS yönetimi için Poweradmin’in nasıl kullanılacağını göstereceğim.

Her şeyden önce, PowerDNS kurulumu için bir kaç repo kurmamız gerekiyor. EPEL veri havuzunu ve PHP 7.2 için REMI kurulumunu kuracağız.

Bu işlem için aşağıdaki komutu kullanıyoruz. 

#yum -y install epel-release
#yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Bu depolar sisteme eklendiğinde, ‘yum-utils’ paketini kuruyoruz.

#yum -y install yum-utils

Ve aşağıdaki komutu kullanarak PHP 7.2 Remi deposunu etkinleştirin.

#yum-config-manager --enable remi-php72

Powerdns için veritabını kurulumu 

PowerDNS Yetkili sunucusu, MySQL / MariaDB veritabanı sunucusu da dahil olmak üzere farklı bir arka uç desteğine sahiptir. ‘Arka uç’ terimleri, sunucunun DNS kayıtlarını (ve bazı meta verileri) içeren danışacağı bir veri deposudur. Bu örnek için, MariaDB’yi arka uç olarak kullanacağız. Aşağıdaki komut ile veritabanını indiriyoruz. 

#yum -y install mariadb mariadb-server

İndirme tamamlandığında, MariaDB hizmetini başlatın ve başlangıç önyüklemesine ekleyiniz.

#systemctl start mariadb
#systemctl enable mariadb

Ardından, ‘mysql_secure_installation’ adlı komutu kullanarak MariaDB’nin root parolasını yapılandıracağız. Bu işlem için aşağıdaki komutu kullabiliriz. 

#mysql_secure_installation

Default ta herhangi bir şifre yoktur buna istinaden direk enter diyip giriş yapıyoruz. Enter yaptıktan sonra ise yeni bir şifre yazmanızı istecektir. Yeni bir şifre belirleyiniz. Bu işlemden sonra karşınıza aşağıdaki gibi sorular gelecektir.

Bunlara y tuşuna basarak yes diyoruz. 

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Bu işlemler den sonra powerdns için yeni bir kullanıcı ve veritabanı oluşturuyoruz. Aşağıdaki komutla mariadb’ye giriş yapıyoruz. 

#mysql -u root -p

Password’u yazıp enter’e basıyoruz. Şimdi ‘powerdns’ adında yeni bir veritabanı oluşturuyoruz ve ‘pdnspassword2020’ şifresi ile ‘pdns’ adlı yeni bir kullanıcıya tüm veritabanı yetkilerini veriyoruz. 

#create database powerdns; // Veritabanı oluşturmak komutu  
#grant all privileges on powerdns.* to pdns@localhost identified by 'pdnspassword2020'; //kullanıcı ayarları 
#flush privileges;

Bu işlemlerden sonra ise aşağıdaki MySQL sorgularını çalıştırarak powerdns veritabanı için tablo yapıları oluşturuyoruz. Aşağıdaki komut ile veritabanı seciyoruz. 

#use powerdns;

Bu komutlar ile veritabı için gerekli tabloları oluşturuyoruz.

CREATE TABLE domains (
   id                    INT AUTO_INCREMENT,
   name                  VARCHAR(255) NOT NULL,
   master                VARCHAR(128) DEFAULT NULL,
   last_check            INT DEFAULT NULL,
   type                  VARCHAR(6) NOT NULL,
   notified_serial       INT DEFAULT NULL,
   account               VARCHAR(40) DEFAULT NULL,
   PRIMARY KEY (id)
 ) Engine=InnoDB;

 CREATE UNIQUE INDEX name_index ON domains(name);


 CREATE TABLE records (
   id                    BIGINT AUTO_INCREMENT,
   domain_id             INT DEFAULT NULL,
   name                  VARCHAR(255) DEFAULT NULL,
   type                  VARCHAR(10) DEFAULT NULL,
   content               VARCHAR(64000) DEFAULT NULL,
   ttl                   INT DEFAULT NULL,
   prio                  INT DEFAULT NULL,
   change_date           INT DEFAULT NULL,
   disabled              TINYINT(1) DEFAULT 0,
   ordername             VARCHAR(255) BINARY DEFAULT NULL,
   auth                  TINYINT(1) DEFAULT 1,
   PRIMARY KEY (id)
 ) Engine=InnoDB;


 CREATE INDEX nametype_index ON records(name,type);
 CREATE INDEX domain_id ON records(domain_id);
 CREATE INDEX recordorder ON records (domain_id, ordername);


 CREATE TABLE supermasters (
   ip                    VARCHAR(64) NOT NULL,
   nameserver            VARCHAR(255) NOT NULL,
   account               VARCHAR(40) NOT NULL,
   PRIMARY KEY (ip, nameserver)
 ) Engine=InnoDB;



 CREATE TABLE comments (
   id                    INT AUTO_INCREMENT,
   domain_id             INT NOT NULL,
   name                  VARCHAR(255) NOT NULL,
   type                  VARCHAR(10) NOT NULL,
   modified_at           INT NOT NULL,
   account               VARCHAR(40) NOT NULL,
   comment               VARCHAR(64000) NOT NULL,
   PRIMARY KEY (id)
 ) Engine=InnoDB;


 CREATE INDEX comments_domain_id_idx ON comments (domain_id);
 CREATE INDEX comments_name_type_idx ON comments (name, type);
 CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);


 CREATE TABLE domainmetadata (
   id                    INT AUTO_INCREMENT,
   domain_id             INT NOT NULL,
   kind                  VARCHAR(32),
   content               TEXT,
   PRIMARY KEY (id)
 ) Engine=InnoDB;


 CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);


 CREATE TABLE cryptokeys (
   id                    INT AUTO_INCREMENT,
   domain_id             INT NOT NULL,
   flags                 INT NOT NULL,
   active                BOOL,
   content               TEXT,
   PRIMARY KEY(id)
 ) Engine=InnoDB;


 CREATE INDEX domainidindex ON cryptokeys(domain_id);


 CREATE TABLE tsigkeys (
   id                    INT AUTO_INCREMENT,
   name                  VARCHAR(255),
   algorithm             VARCHAR(50),
   secret                VARCHAR(255),
   PRIMARY KEY (id)
 ) Engine=InnoDB;

 CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);

Şuanlık veritabından işlemlerimiz bitti o yüzden quit komutu kullanarak çıkış yapıyoruz. 

Powerdns Kurulumu 

PowerDNS ve gereken tüm paketleri aşağıdaki komutu kullanarak yüklüyoruz.

#yum -y install pdns pdns-backend-mysql bind-utils

PowerDNS paketlerini kurduktan sonra, '/etc/pdns/' dizinine gidiyoruz vi veya nano düzenleyicisini kullanarak 'pdns.conf' yapılandırma dosyasını düzenliyoruz.

#cd  /etc/pdns
#vi  pdns.conf

Varsayılan olarak, PowerDNS arka uç olarak 'bind' kullanır. Bu nedenle, 'launch = bind' yapılandırması bulup önüne açıklama '#' yazın ve MySQL arka uç yapılandırmasını aşağıdaki gibi yapıştırın.

#launch=bind

launch=gmysql
gmysql-host=localhost
gmysql-user=pdns
gmysql-password=pdnspassword2020
gmysql-dbname=powerdns

Dosyayı kaydedip cıkıyoruz.
Şimdi aşağıdaki komut ile pdns hizmetini başlatıyor ve başlangıç önyüklemesine ekliyoruz.

#systemctl start pdns
#systemctl enable pdns

Ben sunucunun firewall'ı tamamen kapattıp, eger siz kapatmadıysanız aşağıdaki komut ile izin verebilirsiniz.

#firewall-cmd --add-service=dns --permanent
#firewall-cmd --reload

PowerDNS hizmeti çalışıp veya çalışmadığını, aşağıdaki komutu kullanarak kontrol ediyoruz. Bunun için öncelikle net-tools’u indirmeniz gerekiyor.

#yum -y install net-tools

Kontrolü ise bu komutlar ile yapıyoruz

#netstat -tap | grep pdns
#netstat -tulpn | grep 53
#dig @10.34.27.100 (Sunucu iç local ipsi)

Aşıdaki gibi çıktı alıyorsanız işlemler doğrudur.

PowerAdmin Kurulumu 

PowerDNS için 'Poweradmin' adlı DNS yönetimini kuracağız. PHP tabanlı bir web uygulamasıdır, bu yüzden uygulamayı çalıştırmak için PHP ve web sunucusu kurmamız gerekir. 
Aşağıdaki komutu kullanarak bir httpd web sunucusu ve PHP paketleri yüklüyoruz.

#yum -y install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext

Kurulumdan sonra ek PHP Armut paketleri kurmamız gerekiyor. Aşağıdaki komutu çalıştırın.

#yum -y install php-pear-DB php-pear-MDB2-Driver-mysqli

Httpd ve PHP kurulumu tamamlandığında, httpd hizmetini başlatıyoruz ve başlangıç önyüklemesine ekliyoruz.

#systemctl start httpd

ve

#systemctl enable httpd

Ardından, '/var/www/html' dizinine gidin ve poweradmin kaynak kodunu indiriyoruz. Wget komutunu yum –y install wget yaparak inderebilirsiniz.

#cd /var/www/html/
#wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz

Sıkıştırılmış poweradmin dosyasını dışarıya cıkartıp yeniden adlandırıyoruz.

#tar xvf poweradmin-2.1.7.tgz
#mv poweradmin-2.1.7/ poweradmin/

Eger sizin açık ise firewall'a HTTP ve HTTPS protokollerini ekleyiniz.

#firewall-cmd --add-service={http,https} --permanent
#firewall-cmd --reload

Poweradmin Kurulum Sonrası

Web tarayıcınızı açın ve kurulum için sunucu IP adresini ve / poweradmin / install / path URL'sini yazın.

Benimki: http://10.34.27.100/poweradmin/install/

Tercih ettiğiniz dili seçin ve '2. Adıma Git' düğmesini tıklayın.

Şimdi '3. Adıma Git' düğmesini tıklayın.

Ve veritabanı yapılandırması için görüntülenir. Oluşturduğumuz PowerDNS veritabanı ayrıntılarını ve PowerDNS için yönetici parolasını yazın. 
'4. Adıma Git' düğmesini tıklayın.

Bundan sonra, doğru ayrıcalıkları sınırlandıracak yeni bir kullanıcı oluşturmanız gerekecektir. Ayrıntıları aşağıdaki gibi yazın ve kullanıcı, şifre vb. Kendiniz değiştirin.


Şimdi 'Adım 5'e Git' düğmesini tıklayın. Ve sayfayı aşağıdaki gibi göstereceksiniz.


Sunucuya tekrar bağlanıp root kullanıcısı ve parolası ile oturum açıyoruz. Ardından MySQL sorgularını sayfadaki gibi çalıştırıyoruz.

#mysql -u root -p PASSWORD

#GRANT SELECT, INSERT, UPDATE, DELETE
#ON powerdns.*
#TO 'agenc'@'localhost'
#IDENTIFIED BY '***********';

Şimdi web tarayıcısına geri dönün ve '6. Adıma Git' düğmesini tıklayın.

Ve sayfayı aşağıdaki gibi göstereceksiniz.
Yükleyici yeni bir '../inc/config.inc.php' yapılandırması oluşturamadı. Bu yüzden manuel olarak yaratmamız gerekiyor. Terminal sunucusuna geri dönün, '/var/www/html/ poweradmin' dizinine gidin ve 'inc/config.inc.php' adlı yeni bir yapılandırma dosyası oluşturun.

Şimdi sayfadaki PHP komut dosyasını içine yapıştırın.

Kaydedin ve kapatın, ardından tarayıcıya geri dönün ve düğmesine tıklayın

Ve kurulum tamamlandı.

İsteğe bağlı olarak: Diğer Dinamik sağlayıcılar tarafından kullanılan URL'leri desteklemek istiyorsanız, htaccess dosyasını kopyalayın.

#cd /var/www/html/poweradmin
#cp install/htaccess.dist .htaccess

Bundan sonra, 'install' dizinini kaldırmanız GEREKİR.

rm -rf /var/www/html/poweradmin/install

Tekrar web tarayıcınıza geri dönün ve URL'yi aşağıdaki gibi kullanarak Power Admin kontrol paneline giriş yapın.,

http://10.34.27.100/poweradmin/

Powerdns başarılı bir şekilde kurulmuştur. Bir sonraki makalede görüşmek üzere 🙂 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir