Cara buat Private Nameserver dengan PowerDNS

Sep 14, 2020 Hosting

Cara membuat Private Nameserver dengan PowerDNS

Apa itu PowerDNS

Untuk cara membuat Private Nameserver biasanya dibutuhkan sebuah DNS Server, salah satu DNS Server yang sering digunakan adalah PowerDNS. PowerDNS merupakan DNS Server program yang di buat dengan menggunakan bahasa pemrograman C++ dan berlisensi GPL (General Public License), versi PowerDNS terbaru hingga saat ini versi 4.3.0 yang di rilis pada 7 April 2020.

Dan untuk install PowerDNS di butuhkan Server/VPS yang mempunyai IP Public Static. IP Public Static dari Server/VPS ini nantinya digunakan untuk di daftarkan ke Registrar Domain sebagai IP dari Private Nameserver. Nah, langsung saja ke langkah-langkah Cara membuat Private Nameserver menggunakan PowerDNS.

Cara Install PowerDNS

Dalam membuat Private Nameserver langkah pertama yang di persiapkan adalah menyiapkan DNS Server. Di sini kita akan menggunakan PowerDNS sebagai DNS Server yang nantinya kita gunakan untuk membuat Private Nameserver. Untuk install PowerDNS di VPS/Server kalian bisa ikuti langkah-langkah berikut ini :

  1. Install MariaDB/MySQL

Untuk install PowerDNS di VPS/Server pribadi terdapat beberapa dependency yang harus terinstall. Karena di artikel kali ini untuk PowerDNS akan menggunakan PowerDNS yang menggunakan backend MySQL/MariaDB maka kalian perlu install MariaDB/MySQL terlebih dahulu.

Untuk install MariaDB/MySQL di VPS/Server CentOS 8 caranya, kalian bisa jalankan command berikut ini :

yum install -y mariadb mariadb-server

Defaultnya untuk service MariaDB/MySQL ini belum berjalan, untuk menjalankannya kalian bisa jalankan command ini :

systemctl start mariadb
systemctl enable mariadb

Setelah MariaDB/MySQL berhasil terinstall dan servicenya telah berjalan, selanjutnya anda bisa melakukan pengamanan dasar untuk MariaDB/MySQL dengan menjalankan command berikut ini :

mysql_secure_installation

ketika kalian menjalankan command diatas maka akan muncul beberapa pertanyaan yang memerlukan konfirmasi seperti berikut ini :

...
...
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
...
...
Remove anonymous users? [Y/n] y
...
...
Disallow root login remotely? [Y/n]
...
...
Remove test database and access to it? [Y/n] y
...
...
Reload privilege tables now? [Y/n] y

Jika sudah selanjutnya kalian bisa ke tahap berikutnya yaitu install PowerDNSnya.

  1. Install PowerDNS

Agar dapat menginstall PowerDNS di CentOS 8 kalian perlu menambahkan repository external selain repository bawaan yang telah ada. Untuk menambahkan repository ini kalian bisa jalankan command berikut ini :

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Apabila sudah ditambahkan, selanjutnya untuk install PowerDNS di VPS/Server Pribadi kalian dapat jalankan command berikut ini :

yum install -y pdns pdns-backend-mysql

Di sini nanti kita akan menggunakan PowerDNS yang menggunakan backend MySQL. Kenapa memilih PowerDNS yang menggunakan backend MySQL? Nah, ini karena MySQL disini akan berfungsi sebagai database penyimpanan settingan DNS kalian.

Sebelum setting ke konfigurasi PowerDNS kalian perlu buat Database yang nanti akan digunakan PowerDNS terlebih dahulu. Untuk membuat database yang di perlukan PowerDNS, kalian dapat ikuti langkah-langkah berikut ini :

mysql -u root -p

Setelah login ke Database dengan menggunakan user root kalian perlu buat database baru dan user baru dengan grant privilege pada database baru tersebut, untuk command-commandnya kalian bisa ikuti command berikut ini :

create database powerdns;
grant all privileges on powerdns.* to 'powerdns'@'localhost' identified by 'yourpassworduserdatabasepowerdnshere';

Sampai disini, kalian telah berhasil membuat database baru dan user untuk PowerDNS. Namun ini belum selesai, kalian perlu membuat isi table powerdns. Untuk tablenya apa saja kalian bisa ikuti command berikut untuk membuatnya.

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)
);

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(6) DEFAULT NULL,
   content VARCHAR(255) DEFAULT NULL,
   ttl INT DEFAULT NULL,
   prio INT DEFAULT NULL,
   disabled TINYINT(1) DEFAULT 0,
   change_date INT DEFAULT NULL,
   primary key(id)
);

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

CREATE TABLE supermasters (
   ip VARCHAR(25) NOT NULL,
   nameserver VARCHAR(255) NOT NULL,
   account VARCHAR(40) DEFAULT NULL
);

exit;

Setelah selesai membuat table database diatas, kalian bisa melakukan setting PowerDNSnya. Untuk setting PowerDNS kalian bisa edit file /etc/pdns/pdns.conf dan langkah-langkahnya sebagai berikut ini :

vim /etc/pdns/pdns.conf

Pada file ini silakan kalian cari baris

launch=bind

Lalu ubah menjadi seperti ini

launch=gmysql

Dan di baris berikutnya kalian bisa tambahkan baris konfigurasi/setting berikut ini :

gmysql-host=localhost
gmysql-user=powerdns
gmysql-password=powerdnsPassword
gmysql-dbname=powerdns
   

Seperti halnya MariaDB default service PowerDNS ini belum berjalan, untuk menjalankan servicenya kalian perlu menjalankan command berikut ini :

systemctl start pdns
systemctl enable pdns
   

Untuk mempermudah setting Private Nameservernya, kalian perlu menginstall PowerAdmin. PowerAdmin ini adalh web interface dari PowerDNS yang sangat bermanfaat untuk membantu kalian dalam setting DNS Server kalian hingga pembuatan Private Nameserver. Untuk PowerAdmin akan di jelaskan di bagian selanjutnya.

  1. Install PowerAdmin

Nah, karena sudah di jelaskan sebelumnya tentang PowerAdmin. Di tahap ini kita akan melakukan Installasi PowerAdmin dan konfigurasinya.

Sebelum menginstall PowerAdmin kalian perlu menambahkan repository REMI untuk repository package PHPnya, kalian bisa jalankan command berikut ini untuk menambahkan repositorynya :

rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Selanjutnya karena PowerAdmin ini merupakan sebuah website panel PowerDNS, maka untuk install PowerAdminnya memerlukan Web Server. Untuk Web server di artikel ini akan menggunakan Nginx, untuk install web servernya kalian bisa ikuti langkah-langkah berikut ini :

yum install -y nginx php-fpm php-cli php-mysqlnd php72-php-pecl-mcrypt php-json

Kemudian jika web servernya sudah terinstall kalian perlu melakukan beberapa konfigurasi di web servernya. Yang pertama untuk NGINX akan menggunakan PHP-FPM sebagai socket yang digunakan untuk manage proses PHP yang ada nantinya. Untuk setting socket PHP-FPMnya kalian bisa jalankan perintah berikut ini :

vim /etc/php-fpm/www.conf

Cari baris berikut ini :

listen = 127.0.0.1:9000

Dan ubah menjadi berikut ini :

listen = /run/php-fpm/www.sock

Lalu kalian perlu mengubah owner permission pada folder /var/lib/php/session ke user apache, dengan command ini :

chown apache:apache /var/lib/php/session

Jika sudah tahap berikutnya kalian bisa buat konfigurasi VirtualHost untuk PowerAdminnya. Misal, untuk PowerAdminnya kalian setting di subdomain dns.nimetech.com maka langkah-langkahnya seperti ini :

vim /etc/nginx/conf.d/dns.nimetech.com.conf

Pada file konfigurasi VirtualHost diatas kalian bisa isikan konfigurasinya seperti berikut ini :


server {
   server_name dns.nimetech.com;
   listen 80;

   root /var/www/html/dns.nimetech.com;
   access_log /var/log/nginx/dns.nimetech.com_access.log;
   error_log /var/log/nginx/dns.nimetech.com_error.log;

   index index.php;

   location / {
      try_files $uri $uri/ /index.php?query_string;
   }

   location ~ \.php$ {
      fastcgi_index index.php;
      fastcgi_split_path_info ^(.+\.php)(.*)$;
      fastcgi_keep_conn on;
      include /etc/nginx/fastcgi_params;
      fastcgi_pass unix:/run/php-fpm/www.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }

   location ~/\.ht {
      deny all;
   }

}

Berikutnya apabila file konfigurasinya sudah kalian buat dan setting, untuk pengujian konfigurasinya benar atau tidak kalian bisa jalankan command berikut ini :

nginx -t

dan nanti kalau berhasil akan muncul output seperti ini :

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

systemctl restart nginx

Jika sudah sukses setting VirtualHostnya, kalian bisa download file PowerAdminnya dengan langkah-langkah ini :


mkdir -p /var/www/html/dns.nimetech.com
chown -R apache:apache /var/www/html/dns.nimetech.com
cd var/www/html/dns.nimetech.com
git clone https://github.com/poweradmin/poweradmin.git
mv poweradmin/* . && rm -rf poweradmin/

Apabila sudah terdownload dengan baik dan benar, selanjutnya kalian bisa coba akses URL installasi PowerAdminnya di http://dns.nimetech.com/install. Oh ya, karena kalian belum setting DNS record yang di arahkan ke subdomain kalian. Sebagai alternatifnya apabila kalian akses dari PC/Laptop yang menggunakan Windows/Linux kalian bisa setting di file /etc/hosts untuk setting sementara agar bisa akses subdomainnya PowerAdmin kalian.

Setelah berhasil akses url installasi PowerAdmin (http://dns.nimetech.com/install), tampilan awal installasi akan muncul sepert screenshot di bawah ini.

Pada Installation Step 1 kalian akan disuruh untuk memilih bahasa terlebih dahulu. Silakan kalian pilih yang paling atas untuk menggunakan English dalam installationnya. Lalu klik Go to Step 2

Di Step 2 ini kalian akan di mintakan persetujuan apabila sebelumnya pernah melakukan installasi PowerAdmin, maka di proses installasi ini akan menghapus seluruh database yang pernah di gunakan. Karena ini proses pertama kali kalian install maka langsung saja klik Go to Step 3

Pada Step 3 kalian akan di minta untuk mengisi detail Username(user database), Password(password database), Database Type, Hostname, Port, Database (nama database).

Nah, pada kolom isiannya kalian isi sesuai dengan database yang kalian buat di tahap sebelumnya. Jika sudah kalian isi selanjutnya kalian bisa klik Go to Step 4

Step 4 ini kalian akan di minta untuk mengisi username, password hostmaster, Primary Nameserver dan Secondary Nameserver.

Untuk username dan password bisa kalian bisa isi sesuai dengan keperluan anda. Kemudian untuk bagian Hostmaster ini bisa di isikan dengan Hostname Server kalian misalkan yang seperti yang di screenshot diatas adalah nacht.manageserver.my.id dan Primary serta Secondary Nameservernya yaitu chrono.manageserver.my.id dan yami.manageserver.my.id lalu jika sudah klik Go to Step 5

Saat di Step 5 ini kalian di minta untuk membuat user MySQL, karena kalian sebelumnya telah membuat user MySQLnya maka langkah ini bisa di skip. Atau jika di awal kalian belum pernah membuat user databasenya kalian bisa jalankan command create user MySQLnya, seperti yang tertera di step 5 ini.

Jika sudah kalian bisa lanjut dengan klik Go to Step 6

Dan di Step 6 ini kalian di minta untuk membuat file config.inc.php dimana filenya berada di folder virtualhost kalian misalkan di /var/www/html/nacht.manageserver/inc kalian bisa buat filenya config.inc.php dengan command

vim /var/www/html/nacht.manageserver/inc/config.inc.php

Lalu kalian isi filenya dengan konfigrasi yang ada di screenshot ini.

Ingat pada bagian db_pass kalian isi dengan password database kalian ya. Jika sudah kalian bisa klik Go to Step 7

Langkah terakhir pada Step 7 kalian di minta untuk menghapus folder install yang berada di folder virtualhost kalian.

Untuk menghapus folder install ini kalian bisa jalankan command

rm -rf /var/www/html/nacht.manageserver.my.id/install

Sampai di sini untuk proses Install PowerAdmin telah selesai, selanjutnya kalian bisa mengikuti langkah berikutnya untuk membuat Private Nameserver dengan menggunakan PowerDNS dan PowerAdmin.

Cara membuat Private Nameserver

Untuk membuat Private Nameserver dengan menggunakan PowerDNS dan PowerAdmin langkah-langkahnya sangat mudah. Di bagian ini kami akan menunjukan cara membuat private nameserver step by step dengan lampiran screenshot.

Pertama, silakan kalian login ke PowerAdmin kalian pada url misalkan http://dns.nimetech.com. Untuk username default biasanya menggunakan admin dan password yang kalian input di step 4 saat Installation PowerAdmin sebelumnya.

Setelah kalian login biasanya untuk tampilan PowerAdmin seperti screenshot berikut ini :

Nah, untuk membuat Private Nameserver pertama kalian bisa ke menu Add Master Zone.

Di bagian Add Master Zone nanti muncul tampilannya kurang lebih seperti ini. Defaultnya untuk bagian Zone name hanya muncul 1 kolom saja, untuk menambahkan kolom berikutnya kalian bisa klik Add Another Domain

Pada 2 kolom isian Zone name kalian bisa masukan pada kolom pertama yaitu nama domain kalian misal example.com dan kolom kedua kalian isikan untuk PTR recordnya biasanya formatnya yaitu 3 digit pertama IP Public kalian misal IP Publicnya 192.10.10.1, maka yang diambil 3 digit pertama dan dimasukan terbalik seperti ini 10.10.192.in-addr.arpa. Untuk IP Public ini bisa kalian sesuaikan dengan IP Public VPS/Server kalian ya. Selanjutnya tinggal kalian klik Add Zone

Selanjutnya kalian bisa ke menu List Zones, untuk ke menu tersebut kalian klik saja menu yang ada di atas untuk ke List Zonesnya dan nanti di List Zones akan muncul list seperti ini kurang lebihnya.

Untuk membuat Private nameserver misalnya di domain nimetech.com kalian bisa klik icon pensil pada domain nimetech.com.

Lalu akan muncul tampilan Edit Zone "nimetech.com" seperti berikut ini, setelah klik icon pensil di domain nimetech.com. Defaultnya di Edit Zone ini belum ada DNS Record apapun dan hanya ada 1 record di baris paling awal saja.
cara membuat private nameserver
Nah, untuk membuat Private nameservernya kalian perlu menambahkan dns zone dari kotak merah yang di bawah. Untuk record yang kalian perlu tambahkan antara lain kurang lebih seperti ini:


Name                      Type    Content            Priority    TTL
nimetech.com        IN    NS      ns1.nimetech.com   0           3600
nimetech.com        IN    NS      ns2.nimetech.com   0           3600

nimetech.com        IN    A       192.10.10.1        0           3600
ns1.nimetech.com    IN    A       192.10.10.1        0           3600
ns2.nimetech.com    IN    A       192.10.10.1        0           3600
www.nimetech.com    IN    CNAME   nimetech.com       0           3600
nimetech.com        IN    MX      nimetech.com       0           3600

Jika sudah kalian tambahkan kalian bisa balik lagi ke menu List Zone kemudian klik icon pensil pada Zone 10.10.192.in-addr.arpa yang digunakan untuk PTR recordnya. Dan nanti untuk Zone PTR Recordnya muncul tampilan seperti ini kurang lebih, namun untuk defaultnya masih kosongan sama dengan yang di Zone nimetech.com

Di bagian PTR Record ini kalian perlu tambahkan DNS record untuk PTR di kotak merah dengan record yang perlu di tambahkan antara lain seperti.


Name                            Type      Content           Priority     TTL
1.10.10.192.in-addr.arpa   IN   PTR       nimetech.com      0            3600
1.10.10.192.in-addr.arpa   IN   PTR       ns1.nimetech.com  0            3600
1.10.10.192.in-addr.arpa   IN   PTR       ns2.nimetech.com  0            3600

Untuk proses membuat Private Nameserver sudah selesai, selanjutnya tinggal mendaftarkan Private Nameservernya ke Domain Registrar atau tempat kalian membeli domain.

Cara mendaftarkan Private Nameserver Domain

Nah, karena sudah selesai membuat Private Nameserver di DNS Server kalian bisa melanjutkannya ke mendaftarkan Private Nameservernya di Domainnya. Di artikel ini karena kami membeli domain di Domainesia sebagai Penyedia Domain & Hosting Murah jadi untuk panduan mendaftarkan Private Nameservernya bisa kalian sesuaikan dengan Penyedia Domain kalian ya.

Jika kalian menggunakan Domainesia juga sebagai Penyedia Domain, maka kalian bisa ikuti langkah-langkah ini.

Pertama, login dahulu ke client area Domainesia kalian, jika sudah kalian bisa ke menu Domains > Klik Nama domain kalian. Dan untuk tampilannya kurang lebih nanti seperti ini

Selanjutnya kalian bisa ke menu Settings, untuk mendaftarkan Private Nameserver. Dan di menu ini kalian bisa klik Private Nameservers

Lalu akan muncul tampilan kolom-kolom seperti ini di dalam menu Private Nameserversnya. Untuk mendaftarkan Private Nameserver pertama kali, kalian masukan nameservernya di bagian Register a Nameserver Name pada kolom Nameserver kalian isikan Private Nameserver pertama kalian misalkan ns1.nimetech.com dan IP Address bisa kalian isikan IP VPS/Server kalian. Kemudian jika sudah kalian klik Save Changes dan ulangi lagi untuk mendaftarkan Private Nameserver keduanya yaitu yang ns2.nimetech.com kemudian klik Save Changes lagi.

Jika sudah kalian bisa tunggu dahulu 2x24jam untuk Propagasi Private Nameservernya. Dan jika sudah kalian bisa ubah nameserver pada domain kalian ke Private Nameserver kalian masing-masing.

Conclusion

Biasanya untuk para developer website ataupun jasa developer ingin menggunakan Private Nameserver sendiri untuk menyembunyikan informasi DNS record dari sebuah domain. Dimana untuk nameserver ini biasanya bisa menampilkan dimana websitenya di Hostingkan. Selain itu Private Nameserver juga digunakan untuk mengarahkan domain ke Web Server Pribadi tanpa harus setting DNS Record satu-persatu di domain untuk mengarahkan ke IP VPSnya.