Membuat DNS Server menggunakan PowerDNS pada Centos7
DNS Server tidak mungkin dipisahkan di era internet saat ini dimana server ini dibutuhkan sebagai penyimpan record-record DNS pada domain seperti A Record, TXT Record, MX Record dll, detail dapat dilihat pada laman berikut Penjelasan DNS Record.
Suatu IP Server tidak mudah dikenali apabila tidak dikenalkan sebagai nama domain, hal tersebut membutuhkan DNS Server sebagai penghubung diantara keduanya. PowerDNS (pdns) yang merupakan Open Source DNS Server yang berbasis C++ merupakan salah satu pilihan untuk membuat DNS Server. PowerDNS Authoritative server dapat dikonfigurasikan melalui backend yang berbeda seperti file Bind, RDBMS MySQL, PostgreSQL, SQLite3 atau LDAP.
Pada kali ini penulis akan membuat PowerDNS server Authoritative server dengan MariaDB sebagai databasenya dan menggunakan Poweradmin sebagai portal manajemen DNS nya pada Centos7
Persiapan
- Server/instance Centos7 (pada kali ini menggunakan spesifikasi 1 core 2 GB RAM)
Penyelesaian
Langkah 1 â Install EPEL dan Remi Repositories
Sebelum melakukan penginstallan silakan anda dapat melakukan update terlebih dahulu pada server.
1
2
$ sudo âi
# yum update ây
Selanjutnya anda dapat melakukan penginstalan dependecies untuk PHP 7.2.
1
2
# yum -y install epel-release
# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Setelah menginstall dependecies lakukan penginstallan âyum-utilsâ dan enable PHP 7.2 Repository.
1
2
# yum -y install yum-utils
# yum-config-manager --enable remi-php72
Langkah 2 - Install dan Konfigurasi MariaDB
MariaDB disini akan diperuntukkan sebagai database server yang berfungsi menyimpan data DNS Record yang nanti akan dibuat. Lakukan penginstalan MariaDB dengan menggunakan command berikut :
Install MariaDB using the following yum command.
1
# yum -y install mariadb mariadb-server
Setelah instalasi sukses jalankan service MariaDB
1
2
3
# systemctl start mariadb
# systemctl enable mariadb
# systemctl status mariadb
Selanjutya lakukan konfigurasi root password pada MariaDB, anda dapat menggunakan tool âmysql_secure_installationâ
1
# mysql_secure_installation
Silakan dapat dilakukan konfigurasi password baru pada MariaDB dengan password yang kuat.
1
2
3
4
5
6
7
8
Set root password? [Y/n] Y
New password:
Re-enter new password:
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
Apabila telah selesai silakan dapat membuat database baru pada MariaDB. Silakan dapat login terlebih dahulu dan buat database baru.
1
# mysql -u root âp
Berikut contoh pembuatan database âpowerdnsâ yang memberikan semua privileges kepada user âpdnsâ
1
2
3
4
create database powerdns;
grant all privileges on powerdns.* to pdns@localhost identified by 'pdnspassword123';
flush privileges;
exit;
Setelah itu alankan query pada MySQL/MariaDB untuk membuat Tabel dan Kolom data seperti berikut ini:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
use powerdns;
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);
quit;
Langkah 3 - Install PowerDNS
Setelah menginstall database maka silakan dapat dilanjukan menginstall service PowerDNS
1
# yum -y install pdns pdns-backend-mysql bind-utils
Setelah diinstall silakan dapat membuka file /etc/pdns/pdns.conf menggunakan editor kesayangan anda seperti berikut:
1
# vi /etc/pdns/pdns.conf
Sesuaikan dan tambah baris data seperti berikut ini:
1
2
3
4
5
6
7
#launch=bind
launch=gmysql
gmysql-host=localhost
gmysql-user=pdns
gmysql-password=pdnspassword123
gmysql-dbname=powerdns
*Sesuaikan nama user dan password yang anda konfigurasikan sebelumnya pada langkah 2
Simpan dan tutup editor.
Setelah ditambahkan silakan jalankan service PowerDNS.
1
2
3
# systemctl start pdns
# systemctl enable pdns
# systemctl status pdns
Setelah itu anda perlu melakukan pembukaan port TCP 53 agar dapat diakses secara public. Pada kali ini penulis menggunakan fitur pada virtualisasi openstack dengan menambahkan rule TCP 53 seperti berikut: Anda dapat menyesuaikan dengan service/fitur firewall yang anda gunakan dengan membukan port TCP 53.
Untuk memastikan service PowerDNS berjalan silakan lakukan pengecekan degan command berikut:
1
2
netstat -tap | grep pdns
netstat -tulpn | grep 53
Apabila berjalan dengan baik maka akan tampil output sebagai berikut:
Langkah 4 - Install Poweradmin
Setelah service PDNS telah berjalan maka kita perlu menginstall Poweradmin dimana berfungsi sebagai portal DNS manajemen dimana nanti kita akan melakukan konfigurasi DNS seperti penambahan record DNS dan lainnya.
Silakan dapat menginstall httpd web server dan PHP packages terlebih dahulu.
1
2
# 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
# yum -y install php-pear-DB php-pear-MDB2-Driver-mysqli
Setelah instalasi sukses selanjutnya dapat dijalankan service httpd yang telah diinstall.
1
2
3
# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd
Selanjutnya silakan menuju folder /var/www/html dan download source code untuk poweradmin.
1
2
3
# cd /var/www/html/
# yum install wget -y
# wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
Lakukan ekstrak dan rename filder tersebut.
1
2
# tar xvf poweradmin-2.1.7.tgz
# mv poweradmin-2.1.7/ poweradmin/
Setelah itu anda perlu melakukan pembukaan port TCP 80 & 443 agar dapat diakses secara public. Pada kali ini penulis menggunakan fitur pada virtualisasi openstack dengan menambahkan rule TCP 80 & 443 seperti berikut:
Anda dapat menyesuaikan dengan service/fitur firewall yang anda gunakan dengan membukan port TCP 80 & 443.
langkah 5 â Konfigurasi Poweradmin
Buka browser dan ketik server IP ditambah /poweradmin/install/ seperti contoh berikut :
http://IP-ADDRESS/poweradmin/install/
Pilih bahasa lalu klik âGo to Step 2â.
Pilih âGo to Step 3â.
Selanjutnya lakukan konfigurasi database, silakan dapat dimasukkan data seperti pada langkah 2. Setelah selesai bisa dilanjutkan dengan klik âGo to Step 4â.
*Catatan
Hostname = localhost
Username = pdns
Password = pdnspassword123
DBname = powerdns
Port = 3306
Poweradmin administrator password = bebas, password ini digunakan pada saat login poweradmin.
Setelah itu buatlah user baru yang memilki privileges terbatas dan server name sesuai hostname server anda juga primary & secondary name server yang akan digunakan. Setelah selesai dapat diklik tombol âGo to Step 5â.
Selanjutnya pada halaman ini anda perlu menyalin command yang diberikan dan menjalankannya pada MySQL/MariaDB anda.
Salin lalu login pada MySQL/MariaDB anda sebagai root lalu paste.
1
2
mysql -u root -p
PASSWORD
1
2
3
4
5
GRANT SELECT, INSERT, UPDATE, DELETE
ON powerdns.*
TO 'fauzi1976'@'localhost'
IDENTIFIED BY 'YOUR_PASSWORD;
flush privileges;
Setelah selesai selanjutnya dapat kembali ke browser lalu klik âGo to Step 6â. Pada halaman ini anda perlu menambahkan code PHP seperti dibawah ini pada file /var/www/html/poweradmin/inc/config.inc.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$db_host = 'localhost';
$db_user = 'fauzi1976';
$db_pass = 'YOURPASSWORD';
$db_name = 'powerdns';
$db_type = 'mysql';
$db_layer = 'PDO';
$session_key = 'tcK0GU232RjGG33r1v81h3RRH8tKSqLZhWdCyxzQP#2tMS';
$iface_lang = 'en_EN';
$dns_hostmaster = 'server.koalabiru.my.id';
$dns_ns1 = 'ns1.koalabiru.my.id';
$dns_ns2 = 'ns2.koalabiru.my.id';
1
# vi /var/www/html/poweradmin/inc/config.inc.php
Lakukan copy file htaccess apabila anda ingin URL dapat digunakan pada Dynamic providers lainnya dan lakukan penghapusan directory install.
1
2
3
# cd /var/www/html/poweradmin
# cp install/htaccess.dist .htaccess
# rm -rf /var/www/html/poweradmin/install
Kembali lagi pada web browser dan login pada portal poweradmin menggunakan user admin dan password yang dibuat sebelumnya.
http://IP-Address/poweradmin/
*Catatan
Username = admin
Password = Poweradmin administrator password
Berikut tampilan Poweradmin dashboard
Langkah 6 - Membuat Zone dan DNS Records
Pada kali ini kita akan mencoba membuat DNZ Zone untuk domain âzetenzet.my.idâ. Pada Poweradmin dashboard pilih menu âAdd master zoneâ.
Isi Zone Name dengan domain yang akan dibuat âzetenzet.my.idâ lalu klik âAdd zoneâ.
Apabila telah dibaut silakan dapat pilih menu âList zonesâ lalu klik tombol âeditâ untuk Zone âzetenzet.my.idâ.
Setelah itu tambah DNS Record pada kali ini penulis menambahkan A Record setelah itu dapat klik âAdd recordâ untuk menyimpannya
Jangan lupa tambahkan record NS sesuai alamat Name Server yang telah dibuat.
Langkah 7 â Mengatur Name Server pada Domain
Sebelum itu lakukan pointing Name Server yang telah dibuat sebelumnya pada DNS Management domain ke IP Public server Powerdns yang telah dibuat.
*Progasi penambahan DNS Record berlangsung masksimal 1x24 jam
Apabila propagasi telah selesai kita bisa melakukan pengaturan Name Server domain âzetenzet.my.idâ pada portal domain berada.
*Progasi perubahan Name Server berlangsung masksimal 2x24 jam
Apabila propagasi telah selesai kita bisa melakukan pengecekan A Record yang ditambahkan pada domain âzetenzet.my.idâ pada laman https://dnschecker.org/.
Apabila dilihat A Record mulai terpropagasi pada domain âzetenzet.my.idâ
Referensi : https://www.howtoforge.com/how-to-install-powerdns-and-poweradmin-on-centos-7/