PowerDNS (pdns) adalah server DNS open source yang ditulis dalam C++ dan dirilis di bawah Lisensi GPL. Ini telah menjadi alternatif yang baik untuk server DNS tradisional Bind, dirancang dengan kinerja yang lebih baik dan kebutuhan memori yang rendah. PowerDNS menyediakan dua produk, server Authoritative, dan Recursor. Server PowerDNS Authoritative dapat dikonfigurasi melalui backend yang berbeda, termasuk file zona Bind biasa, RDBMS seperti MySQL, PostgreSQL, SQLite3 atau LDAP.
Dalam tutorial ini, saya akan menunjukkan cara menginstal dan mengonfigurasi server PowerDNS Authoritative dengan server database MariaDB sebagai Backend dan menggunakan Poweradmin untuk pengelolaan DNS yang mudah.
Prasyarat
- Server CentOS 7
- Hak istimewa root
Apa yang akan kami lakukan:
- Instal Repositori EPEL dan Remi
- Instal dan Konfigurasi MariaDB
- Instal PowerDNS
- Instal Poweradmin
- Pasca-Instalasi Poweradmin
- Buat Zona Sampel
Langkah 1 - Instal Repositori EPEL dan Remi
Pertama-tama, kita perlu menginstal dependensi untuk instalasi PowerDNS. Kita akan menginstal repositori EPEL dan REMI untuk instalasi PHP 7.2.
Instal repositori EPEL dan PHP Remi menggunakan perintah berikut.
yum -y install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Setelah repositori ini ditambahkan ke sistem, instal paket 'yum-utils'.
yum -y install yum-utils
Dan aktifkan repositori PHP 7.2 Remi menggunakan perintah berikut.
yum-config-manager --enable remi-php72
Langkah 2 - Instal dan Konfigurasi MariaDB
Server PowerDNS Authoritative memiliki dukungan untuk backend yang berbeda, termasuk server database MySQL/MariaDB. Istilah 'backend' adalah penyimpanan data yang akan dikonsultasikan oleh server yang berisi catatan DNS (dan beberapa meta-data). Dan untuk panduan ini, kita akan menggunakan MariaDB sebagai backend.
Instal MariaDB menggunakan perintah yum berikut.
yum -y install mariadb mariadb-server
Setelah penginstalan selesai, mulai layanan MariaDB dan tambahkan ke waktu boot startup.
systemctl start mariadb
systemctl enable mariadb
Selanjutnya, kita akan mengonfigurasi kata sandi root untuk MariaDB menggunakan alat interaktif bernama 'mysql_secure_installation'.
Jalankan perintah di bawah ini.
mysql_secure_installation
Dan Anda akan diminta untuk mengonfigurasi kata sandi root dari server database. Ketik 'Y' untuk menyiapkan kata sandi root dan ketik kata sandi yang kuat.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Untuk yang lainnya, ketik saja 'Y' untuk ya.
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
Hasilnya, Anda telah menginstal server database MariaDB dan menyiapkan kata sandi root untuk otentikasi.
Selanjutnya, kita akan membuat database dan user baru untuk instalasi PowerDNS. Masuk ke shell MySQL dengan root pengguna dan kata sandi Anda.
Jalankan perintah MySQL di bawah ini.
mysql -u root -p
PASSWORD
Sekarang buat database baru bernama 'powerdns' dan berikan semua hak istimewa database kepada pengguna baru bernama 'pdns' dengan kata sandi 'pdnspassword2018'.
create database powerdns;
grant all privileges on powerdns.* to [email protected] identified by 'pdnspassword2018';
flush privileges;
Setelah itu, buat struktur tabel untuk database PowerDNS dengan menjalankan query MySQL berikut di bawah ini.
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;
Hasilnya, database MySQL/MariaDB dan pengguna untuk instalasi PowerDNS telah dibuat.
Langkah 3 - Instal PowerDNS
Instal PowerDNS dan semua paket yang diperlukan menggunakan perintah berikut.
yum -y install pdns pdns-backend-mysql bind-utils
Setelah menginstal paket PowerDNS, buka direktori '/etc/pdns/' dan edit file konfigurasi 'pdns.conf' menggunakan editor vim.
cd /etc/pdns/
vim pdns.conf
Secara default, PowerDNS menggunakan 'bind' sebagai backend. Jadi, ketik komentar '#' di depan konfigurasi 'launch=bind' dan tempel konfigurasi backend MySQL seperti di bawah ini.
#launch=bind
launch=gmysql
gmysql-host=localhost
gmysql-user=pdns
gmysql-password=pdnspassword2018
gmysql-dbname=powerdns
Simpan dan tutup.
Sekarang mulai layanan pdns dan tambahkan ke waktu boot startup.
systemctl start pdns
systemctl enable pdns
Setelah itu, tambahkan layanan DNS ke firewall.
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
Dan layanan PowerDNS aktif dan berjalan, periksa menggunakan perintah berikut.
netstat -tap | grep pdns
netstat -tulpn | grep 53
dig @10.9.9.10
Hasilnya, Anda akan mendapatkan layanan pdns aktif dan berjalan pada port 53 dan mendapatkan respons dari server PowerDNS.
Langkah 4 - Instal Poweradmin
Pada langkah ini, kita akan menginstal manajemen DNS untuk PowerDNS yang disebut 'Poweradmin'. Ini adalah aplikasi web berbasis PHP, jadi kita perlu menginstal PHP dan server web untuk menjalankan aplikasi.
Instal server web httpd dan paket PHP menggunakan perintah berikut.
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
Setelah instalasi, kita perlu menginstal paket PHP Pear tambahan. Jalankan perintah berikut.
yum -y install php-pear-DB php-pear-MDB2-Driver-mysqli
Setelah instalasi httpd dan PHP selesai, mulai layanan httpd dan tambahkan ke waktu boot startup.
systemctl start httpd
systemctl enable httpd
Selanjutnya, buka direktori '/var/www/html' dan unduh kode sumber poweradmin.
cd /var/www/html/
wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
Ekstrak file terkompresi poweradmin dan ganti namanya.
tar xvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7/ poweradmin/
Setelah itu, tambahkan protokol HTTP dan HTTPS ke firewall.
firewall-cmd --add-service={http,https} --permanent
firewall-cmd --reload
Dan kami siap untuk pasca-instalasi poweradmin.
Langkah 5 - Pasca-Instalasi Poweradmin
Buka browser web Anda dan ketik alamat IP server plus URL jalur /poweradmin/install/ untuk penginstalan. Milik saya adalah:
http://10.9.9.10/poweradmin/install/
Pilih bahasa pilihan Anda dan klik tombol 'Pergi ke Langkah 2'.
Sekarang cukup klik tombol 'Pergi ke Langkah 3'.
Dan Anda akan ditampilkan untuk konfigurasi database. Ketik detail database PowerDNS yang telah kita buat dan kata sandi admin untuk PowerDNS.
Klik tombol 'Pergi ke Langkah 4'.
Setelah itu, Anda perlu membuat pengguna baru dengan hak akses terbatas. Ketik detail seperti berikut dan ubah pengguna, kata sandi, dll dengan milik Anda.
Sekarang klik tombol 'Pergi ke Langkah 5'.
Dan Anda akan ditampilkan halaman seperti di bawah ini.
Buka lagi terminal server Anda, login dengan user root dan password. Kemudian jalankan query MySQL seperti pada halaman.
mysql -u root -p
PASSWORD
GRANT SELECT, INSERT, UPDATE, DELETE
ON powerdns.*
TO 'hakase'@'localhost'
IDENTIFIED BY 'hakase-labs123';
Sekarang kembali ke browser web dan klik tombol 'Pergi ke Langkah 6'.
Dan Anda akan ditampilkan halaman seperti di bawah ini.
Pemasang tidak dapat membuat konfigurasi baru '../inc/config.inc.php'. Jadi, kita perlu membuatnya secara manual.
Kembali ke server terminal, masuk ke direktori '/var/www/html/poweradmin' dan buat file konfigurasi baru 'inc/config.inc.php'.
cd /var/www/html/poweradmin
vim inc/config.inc.php
Sekarang rekatkan skrip PHP pada halaman ke dalamnya.
<?php $db_host = 'localhost'; $db_user = 'hakase'; $db_pass = 'hakase-labs123'; $db_name = 'powerdns'; $db_type = 'mysql'; $db_layer = 'PDO'; $session_key = '[email protected]=uetwJeD2#uApgO)2Ekj+S#oN1Khhoj'; $iface_lang = 'en_EN'; $dns_hostmaster = 'server.hakase-labs.io'; $dns_ns1 = 'ns1.hakase-labs.io'; $dns_ns2 = 'ns2.hakase-labs.io';
Simpan dan tutup, lalu kembali ke browser dan klik tombolnya.
Dan instalasi selesai.
Opsional:
Jika Anda ingin mendukung URL yang digunakan oleh penyedia Dinamis lainnya, salin file htaccess.
cd /var/www/html/poweradmin
cp install/htaccess.dist .htaccess
Setelah itu, Anda HARUS menghapus direktori 'install'.
rm -rf /var/www/html/poweradmin/install
Kembali lagi ke browser web Anda dan masuk ke dasbor Poweradmin menggunakan URL seperti di bawah ini.
http://10.9.9.10/poweradmin/
Masuk dengan pengguna default 'admin' dan kata sandi, klik tombol 'Go'.
Dan sebagai hasilnya, Anda akan diperlihatkan dasbor Poweradmin dan instalasi selesai.
Langkah 6 - Buat Zona Sampel dan Data DNS
Pada tahap ini, kita akan menguji instalasi PowerDNS dan Poweradmin dengan membuat zona DNS baru untuk domain bernama 'emma.io'.
Pada dasbor Poweradmin, klik menu 'Tambahkan zona master'.
Tetapkan nama zona dengan nama domain 'emaa.io' dan klik tombol 'Tambahkan zona'.
Klik menu 'Daftar zona' untuk mendapatkan semua zona yang tersedia. Dan klik tombol 'edit' untuk zona 'emma.io'.
Klik menu 'Daftar zona' untuk mendapatkan semua zona yang tersedia. Dan klik tombol 'edit' untuk zona 'emma.io'.
Sekarang klik tombol 'Add record' dan kita berhasil menambahkan DNS zone dan DNS record untuk domain bernama 'emma.io'.
Selanjutnya, kita akan menguji domain 'emma.io' menggunakan perintah utilitas DNS 'dig'.
Periksa server nama atau catatan ns dari domain 'emma.io'.
dig NS emma.io @10.9.9.10
Periksa catatan DNS A dari domain 'emma.io'.
dig A emma.io @10.9.9.10
Dan Anda akan ditampilkan domain 'emma.io' memiliki server nama dari server DNS kami 'ns1.hakase-labs.io', dan 'A' dari nama domain itu sesuai dengan konfigurasi kami di atas dengan alamat IP server '10.9.9.11'.
Akhirnya, instalasi dan konfigurasi PowerDNS dan Poweradmin pada CentOS 7 telah berhasil diselesaikan.