Linux Ubuntu - Setup Power DNS dengan MySQL server

PowerDNS adalah server DNS sumber terbuka dan sebagai server nama otoritatif canggih dan berkinerja tinggi yang kompatibel dengan banyak backend. PowerDNS dapat menggunakan file konfigurasi BIND, membaca informasi dari MariaDB, MySQL, Oracle, PostgreSQL, dan banyak database lainnya. Backend dapat dengan mudah ditulis dalam bahasa apa pun. 

PowerDNS menawarkan berbagai fitur, seperti penangan kueri yang dapat disesuaikan, dukungan DNSSEC, database tertanam, dan banyak lagi. Ini dapat digunakan sebagai server DNS yang berdiri sendiri, atau sebagai frontend untuk database atau layanan bersama seperti MySQL atau PostgreSQL. 

Artikel ini menjelaskan instalasi dan konfigurasi awal server DNS PowerDNS. Anda mungkin bertanya, mengapa Bind tidak lebih populer saat ini? Power DNS berbeda dengan itu karena mengambil data zona dari database. Kita akan praktekkan cara menginstal dan mengkonfigurasi PowerDNS di Ubuntu, menggunakan MySQL untuk menyimpan data DNS, serta mengkonfigurasi DNSSEC dan Round Robin. Di akhir tutorial ini, Anda akan memiliki server nama PowerDNS yang berfungsi yang dapat Anda gunakan untuk menghosting DNS untuk sejumlah domain.





1. Install PowerDNS

Yang harus anda perhatikan, systemd-resolve pada Ubuntu harus di nonaktifkan, karena sistem ini mengikat ke port 53 yang akan bertentangan dengan port PowerDNS. Jalankan perintah berikut untuk menonaktifkan layanan systemd-resolve.

Disable systemd-resolve
root@runtu:~# systemctl disable systemd-resolved
root@runtu:~# systemctl stop systemd-resolved
Hapus juga file resolv.conf yang terhubung dengan symlink.

Hapus symlink resolv.conf
root@runtu:~# systemctl disable systemd-resolved
root@runtu:~# unlink /etc/resolv.conf
Setelah anda menghapus symlink resolv.conf, buat file resolv.conf baru dan ketikkan DNS Google atau DNS Yandex.

Buat file resolv.conf
root@runtu:~# echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
Kemudian, anda dapat melakukan pemasangan PowerDNS. Anda dapat menginstal PowerDNS dari repositori resmi aptUbuntu atau dari repositori PowerDNS. Untuk menginstal dari repositori apt, jalankan perintah berikut.

Install PowerDNS
root@runtu:~# apt install pdns-server pdns-backend-mysql


2. Buat Database Untuk PowerDNS

Langkah selanjutnya adalah membuat database untuk PowerDNS. Seperti keterangan di atas, artikel ini menggunakan database MySQL. Kami beranggapan anda telah menginstall MySQL Server pada Ubuntu. Jadi kami tidak akan menjelaskan cara nginstall MySQL. Bila server Ubuntu anda belum terinstall MySQL server, anda dapat membaca artikel kami sebelumnya.

Belajar Cara Install MySQL Server Di Linux Ubuntu

Untuk membuat database baru, anda dapat mengikuti perintah di bawah ini.

Buat database
root@runtu:~# mysql -u root -p
mysql> CREATE DATABASE powerdns;
mysql> CREATE USER 'userpowerdns'@'127.0.0.1' IDENTIFIED BY 'anjani123';
mysql> GRANT ALL PRIVILEGES ON powerdns.* TO 'userpowerdns'@'127.0.0.1';
mysql> FLUSH PRIVILEGES;
Kita gunakan database powerdns untuk membuat tabel baru yang akan digunakan untuk menyimpan query PowerDNS.

Buat tabel baru
mysql> USE powerdns;
Setelah anda mengubah menu shell MySQL ke database powerdns, lanjutkan dengan mengetikkan perintah di bawah ini.

Buat tabel baru
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 UNSIGNED DEFAULT NULL,
  account               VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

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 CHARACTER SET 'latin1';

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


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


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) CHARACTER SET 'utf8' DEFAULT NULL,
  comment               TEXT CHARACTER SET 'utf8' NOT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';

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 CHARACTER SET 'latin1';

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 CHARACTER SET 'latin1';

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 CHARACTER SET 'latin1';

CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
Anda dapat melihat atau melakukan pengecekanl dari pembuatan tabel di atas, dengan perintah berikut.

Periksa tabel
mysql> show tables;
+--------------------+
| Tables_in_powerdns |
+--------------------+
| comments           |
| cryptokeys         |
| domainmetadata     |
| domains            |
| records            |
| supermasters       |
| tsigkeys           |
+--------------------+
7 rows in set (0.00 sec)
Sekarang anda telah memiliki database dan tabel kosong. PowerDNS sekarang seharusnya dapat dijalankan dengan database MySQL.


3. Cara Konfigurasi PowerDNS dengan backend MySQL

Secara default file konfigurasi PowerDNS terletak di folder /etc/powerdns. Buka folder pdns.d, dan buat file baru bernama "pdns_dengan_mysql.conf". Ikuti panduan di bawah ini untuk membuat file tersebut.

/etc/powerdns/pdns.d
root@runtu:~# touch /etc/powerdns/pdns.d/pdns_dengan_mysql.conf
root@runtu:~# chmod 777 /etc/powerdns/pdns.d/pdns_dengan_mysql.conf
Setelah itu, kita lanjutkan dengan mengetikkan skrip di bawah ini pada file "pdns_dengan_mysql.conf" tersebut. Gunakan editor nano.

/etc/powerdns/pdns.d
root@runtu:~# cd /etc/powerdns/pdns.d
root@runtu:/etc/powerdns/pdns.d# nano pdns_dengan_mysql.conf
# MySQL Configuration
# Launch gmysql backend
launch+=gmysql
# gmysql parameters
gmysql-host=127.0.0.1
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=userpowerdns
gmysql-password=anjani123
gmysql-dnssec=yes
# gmysql-socket=
Langkah berikutnya adalah mengaktifkan dan menjalankan PowerDNS.

Aktifkan PowerDNS
root@runtu:/etc/powerdns/pdns.d# systemctl enable pdns
root@runtu:/etc/powerdns/pdns.d# systemctl restart pdns
PowerDNS adalah server DNS yang sangat fleksibel dan kuat. Dengan PowerDNS yang telah terinstall di server Ubuntu, memudahkan Anda untuk mengkonfigurasi DNS records, menggunakan database MySQL untuk menyimpan data, memakai DNSSEC untuk melindungi dari serangan hacker, dan menggunakan metode penyeimbangan beban atau DNS Round Robin. Menginstal dan mengkonfigurasi PowerDNS di Ubuntu adalah proses sederhana dan cepat, karena memang PowerDNS diciptakan dengan kesederhanaan tapi juga handal dan tangguh. Anda dapat menggunakan antarmuka pengguna untuk mengelola data DNS, menambahkan data baru, dan memperbarui data yang sudah ada.
Next Post Previous Post
No Comment
Add Comment
comment url