Linux üzərindən DNS serverlər – BİND və PowerDNS – 2-ci hissə

Məqalənin 1-ci hissəsində BİND serverin yüklənməsi və sazlanması ilə tanış olduq. BU hissədə  PowerDNS-in sazlanması ilə məşğul olacağıq.

PowerDNS-i Centos-a yükləmək üçün ilk öncə repozitariy əlavə edirik:

[root@pdns1 ~]# cat /etc/yum.repos.d/pdns.repo 
# pdns.el7.repo
#
[pdns-MIND]
name=PowerDNS server packages for RHEL7
baseurl=https://www.monshouwer.eu/download/3rd_party/pdns/el7/$basearch/
gpgcheck=0
enabled=1

PowerDNS DNS recordların saxlanması üçün backend olaraq 1 çox məlum bazaları dəstəkləyir ( LDAP, MySQL, Postgre,sqlite və s.), biz mysql connectordan vasitəsilə MariaDB istifadə edəcəyik . Lazımi paketləri yükləyirik:

QEYD. Centos 7-ci versiyada repozitoriyalarda Mysql-i MariaDB ilə əvəzləyib.

[root@pdns1 ~]# yum install pdns pdns-tools pdns-backend-mysql mariadb-server mariadb -y

MariaDB-a qoşulub PowerDNS tərəfindən istifadə olunacaq istifadəçini yaradırıq – istifadəçi adını və şifrəni özünüz dəyişməniz məsləhət görülür :

[root@pdns1 ~]# mysql -u root

Bazanı yaradırıq

   MariaDB [(none)]> create database powerdns;

Istifadəçini yaradırıq və lazımi bazaya səlahiyyətləri veririk:

  MariaDB [(none)]> GRANT ALL ON powerdns.* TO ‘pdns’@’localhost’ IDENTIFIED BY ‘pdns_password’;

Sonra aşağıdakı skripti icra etməklə tələb olunan cədvəl və indeksləri yaradırıq:

</pre>
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 INT 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);
<pre>

Lazımi cədvəlləri yaratdıqdan sonra /etc/pdns/pdns.conf faylında mysql bazanın seçənəklərini daxil edirik:

</pre>
<strong>launch=gmysql</strong>
<strong>gmysql-host=127.0.0.1</strong>
<strong>gmysql-user=pdns</strong>
<strong>gmysql-dbname=powerdns</strong>
<strong>gmysql-password=pdns_password</strong>
<pre>

Servizi başladırıq:

root@pdns1 ~]# systemctl start pdns.service
[root@pdns1 ~]# systemctl status pdns.service
pdns.service - PowerDNS Authoritative Server
 Loaded: loaded (/usr/lib/systemd/system/pdns.service; disabled)
 Active: active (running) since Fri 2015-01-16 03:40:43 EST; 1s ago
 Process: 3382 ExecStart=/usr/sbin/pdns_server --daemon (code=exited, status=0/<span style="color: #00ff00;">SUCCESS</span>)
 Main PID: 3383 (pdns_server)
 CGroup: /system.slice/pdns.service
 └─3383 /usr/sbin/pdns_server --daemon

Jan 16 03:40:43 pdns1.technet.local systemd[1]: Started PowerDNS Authoritative Server.
Jan 16 03:40:43 pdns1.technet.local pdns[3383]: Listening on controlsocket in '/var/run/pdns.controlsocket'
Jan 16 03:40:43 pdns1.technet.local pdns[3383]: UDP server bound to 0.0.0.0:53
Jan 16 03:40:43 pdns1.technet.local pdns[3383]: TCP server bound to 0.0.0.0:53
Jan 16 03:40:43 pdns1.technet.local pdns[3383]: PowerDNS Authoritative Server 3.4.1 ([email protected]) (C) 2001-2014 PowerDNS.COM BV
Jan 16 03:40:43 pdns1.technet.local pdns[3383]: Using 64-bits mode. Built on 20141030151615 by [email protected], gcc 4.8.2 20140120 (Red Hat 4.8.2-16).
Jan 16 03:40:43 pdns1.technet.local pdns[3383]: PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.
Jan 16 03:40:43 pdns1.technet.local pdns[3383]: Creating backend connection for TCP
Jan 16 03:40:43 pdns1.technet.local pdns[3383]: About to create 3 backend threads for UDP
Jan 16 03:40:44 pdns1.technet.local pdns[3383]: Done launching threads, ready to distribute questions</em>

Firewall-dan lazımi portları açırıq:

[root@pdns1 ~]# firewall-cmd --permanent --zone public --add-service=dns

[root@pdns1 ~]# firewall-cmd --zone public --add-service=dns

Zonalar yaratmaq üçün birbaşa mysql bazaya qeydlər daxil edə bilərsiniz və ya  PowerAdmin web-interfeysini yükləməklə internet bələdçiniz vasitəsilə PowerDNS-i idarə edə bilərsiniz.

Web-interfeysi aktivləşdirmək  üçün aşağıdakı addımları yerinə yetiririk:

EPEL reposunu əlavə edirik:

root@pdns1 inc]# cat /etc/yum.repos.d/epel.repo
# epel.repo
 #

[epel]
name=epel
baseurl=http://dl.fedoraproject.org/pub/epel/7/x86_64/
gpgcheck=0
enabled=1

Paketləri yükləyirik:

[root@pdns1 ~]# yum -y install php php-mcrypt php-pdo php-mysql httpd 

PowerDNS-in yükləmə paketini endiririk və yükləyirik:

[root@pdns1 ~]# wget http://cznic.dl.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz

[root@pdns1 ~]# tar xvfz poweradmin-2.1.7.tgz

[root@pdns1 ~]# mv poweradmin-2.1.7 /var/www/html/

[root@pdns1 ~]# systemctl start httpd 

Brauzerde PowerAdminin installasiya səhifəsini açırıq ( http://server_unvani/install) və şəkillərdə gördüyümüz ardıcıllıqla sazlayırıq:

1

Database qoşulmaq üçün parametrləri  doldururuq:

3

 

Bu hissəni boş saxlayırıq:

Selection_079

 

Selection_080

 

 

Selection_081

 

 

/var/www/html/inc/config.inc.php faylını açırıq ( yoxdusa yaradırıq) və axırıncı şəkildə göstərilən informasiyanı ora daxil edirik ( DB_USER və DB_PASS-ı düzgün qeyd etməklə,təbii ki).

Web-interfeyse /var/www/html/install direktoriyasını  silirik, əks halda növbəti dəfə interfeyse daxil olmaq istədikdə, avtomatik olaraq install səhifəsi açılacaq:

[root@pdns1 ~]# rm -Rvf  /var/www/html/install/

Bundan sonra http://serverin_ip-si ünvanına keçməklə interfeyse daxil ola bilərik.

1 master zona və record yaradaq və serverin işləməsini yoxlayırıq:

Selection_083

Selection_087

Selection_088

Hər hansı maşından yeni yaratdığımız record-u sorğulayırıq:

[root@localhost ~]# dig client.technet.local

DiG 9.9.4-RedHat-9.9.4-8.fc20 &lt;&lt;&gt;&gt; client.technet.local
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 49692
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;client.technet.local. IN A

;; ANSWER SECTION:
client.technet.local. 86400 IN A 192.168.0.106

;; AUTHORITY SECTION:
technet.local. 86400 IN NS pdns1.technet.local.

;; ADDITIONAL SECTION:
dnssrv2.technet.local. 86400 IN A 192.168.122.150

;; Query time: 2 msec
;; SERVER: 192.168.122.150#53(192.168.122.150)
;; WHEN: Thu Jan 15 08:08:15 EST 2015
;; MSG SIZE rcvd: 141

PowerDNS-in sazlanmasının da bitdiyini qeyd edə bilərik.

Səs: +40. Bəyənilsin Zəifdir

Müəllif: Fərid Səmədov

Şərh yazın