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:
Database qoşulmaq üçün parametrləri doldururuq:
Bu hissəni boş saxlayırıq:
/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:
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 <<>> client.technet.local ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- 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.