Power DNS

Domain Name System Server (DNS Server)

Apa itu DNS? DNS adalah sebuah program client-server yang digunakan untuk translasi domain ke ip address dan juga sebaliknya. DNS menggunakan port 53/udp untuk resolver dan port 53/tcp untuk zone transfer.

Cara Kerja Domain Name System

Topologi

Tipe Records Pada DNS

RecordFungsi
AUntuk mengarahkan domain/label ke ipv4
AAAAUntuk mengarahkan domain/label ke ipv6
NSUntuk mengarahkan ke nameserver mana yang menyimpan record dns
CNAMEUntuk alias dari domain/subdomain ke domain lain
SOAMenyimpan informasi admin domain
PTRUntuk memberikan jawaban reverse-lookup (merubah ip ke suatu domain)
MXUntuk mengarahkan email ke mail server

Konfigurasi Recursive DNS

Recursive DNS berfungsi untuk mencari jawaban dari authoritative server. 

  • Kita pastikan pdns-recursor dan utilitasnya sudah terinstall di ns1 dan ns2.
ns1 & ns2
[sysadmin@ns1 ~]$ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm[sysadmin@ns1 ~]$ sudo dnf install -y pdns-recursor
[sysadmin@ns2 ~]$ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm[sysadmin@ns2 ~]$ sudo dnf install -y pdns-recursor

1. Konfigurasi Recursive pada Master DNS (ns1).

  • Masuk ke direktori ‘/etc/pdns-recursor’ dan set ‘local-address=0.0.0.0’ dan ‘dnssec=off’ di file ‘recursor.conf’.
ns1
[sysadmin@ns1 ~]$ cd /etc/pdns-recursor/[sysadmin@ns1 pdns-recursor]$ sudo nano recursor.conf
/etc/pdns-recursor/recursor.conf
. . .
local-address=0.0.0.0dnssec=off
. . .
  • Setelah itu restart service pdns-recursor. Lalu ubah resolver dns ke ip address 192.168.72.11. Dan uji coba dig untuk mengetahui ip address dari google.com dan ping ke domain google.com. Jika ping reply maka konfigurasi recursive sudah berhasil, seperti dibawah ini.
ns1
[sysadmin@ns1 pdns-recursor]$ sudo systemctl restart pdns-recursor.service[sysadmin@ns1 pdns-recursor]$ sudo echo nameserver 192.168.72.11 | sudo tee /etc/resolv.conf [sysadmin@ns1 pdns-recursor]$ dig google.com +short; ping google.com -c 374.125.68.10274.125.68.10174.125.68.10074.125.68.13874.125.68.13974.125.68.113PING google.com (74.125.68.139) 56(84) bytes of data.64 bytes from sc-in-f139.1e100.net (74.125.68.139): icmp_seq=1 ttl=128 time=20.0 ms64 bytes from sc-in-f139.1e100.net (74.125.68.139): icmp_seq=2 ttl=128 time=18.1 ms64 bytes from sc-in-f139.1e100.net (74.125.68.139): icmp_seq=3 ttl=128 time=23.6 ms
— google.com ping statistics —3 packets transmitted, 3 received, 0% packet loss, time 2003msrtt min/avg/max/mdev = 18.096/20.556/23.586/2.277 ms

2. Konfigurasi Recursive pada Slave DNS (ns2).

  • Masuk ke direktori ‘/etc/pdns-recursor’ dan set ‘local-address=0.0.0.0’ dan ‘dnssec=off’ di file ‘recursor.conf’.
ns2
[sysadmin@ns2 ~]$ cd /etc/pdns-recursor/[sysadmin@ns2 pdns-recursor]$ sudo nano recursor.conf
/etc/pdns-recursor/recursor.conf
. . .
local-address=0.0.0.0dnssec=off
. . .
  • Setelah itu restart service bind9. Lalu ubah resolver dns ke ip address 192.168.72.12. Dan uji coba dig untuk mengetahui ip address dari google.com dan ping ke domain google.com. Jika ping reply maka konfigurasi recursive sudah berhasil, seperti dibawah ini.
ns2
[sysadmin@ns2 pdns-recursor]$ sudo systemctl restart pdns-recursor.service[sysadmin@ns2 pdns-recursor]$ sudo echo nameserver 192.168.72.12 | sudo tee /etc/resolv.conf [sysadmin@ns2 pdns-recursor]$ dig google.com +short; ping google.com -c 3142.251.12.100142.251.12.101142.251.12.102142.251.12.139142.251.12.113142.251.12.138PING google.com (142.251.12.138) 56(84) bytes of data.64 bytes from se-in-f138.1e100.net (142.251.12.138): icmp_seq=1 ttl=128 time=19.0 ms64 bytes from se-in-f138.1e100.net (142.251.12.138): icmp_seq=2 ttl=128 time=18.8 ms64 bytes from se-in-f138.1e100.net (142.251.12.138): icmp_seq=3 ttl=128 time=18.8 ms— google.com ping statistics —3 packets transmitted, 3 received, 0% packet loss, time 2002msrtt min/avg/max/mdev = 18.802/18.869/18.971/0.072 ms

Konfigurasi Authoritative DNS

Authortitative DNS berfungsi untuk memberikan jawaban kepada Recursive atau resolver. 

  • Kita akan install mariadb server, power dns server dan power dns backend mysql. Lalu pastikan servicenya berjalan.
ns1 & ns2
[sysadmin@ns1 ~]$ sudo dnf install -y pdns pdns-backend-mysql mariadb-server[sysadmin@ns1 ~]$ sudo chmod g+r /etc/pdns/pdns.conf; sudo chgrp pdns -R /etc/pdns[sysadmin@ns1 ~]$ sudo systemctl enable –now pdns mariadb

[sysadmin@ns2 ~]$ sudo dnf install -y pdns pdns-backend-mysql mariadb-server[sysadmin@ns2 ~]$ sudo chmod g+r /etc/pdns/pdns.conf; sudo chgrp pdns -R /etc/pdns[sysadmin@ns2 ~]$ sudo systemctl enable –now pdns mariadb
  • Selanjutnya buat database ‘dbpdns’ , buat user database ‘sysadmin’ dan password ‘sysadmin’. Lalu import schema database pdns backend mysql ke dalam database ‘dbpdns’.
ns1
[sysadmin@ns1 ~]$ sudo mysql Welcome to the MariaDB monitor.  Commands end with ; or \g.Your MariaDB connection id is 12Server version: 10.5.22-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]> create database dbpdns;Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> create user ‘sysadmin’@’%’ identified by ‘sysadmin’;Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> grant all privileges on dbpdns.* to ‘sysadmin’@’%’;Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> flush privileges;Query OK, 0 rows affected (0.003 sec)
MariaDB [(none)]> quitBye
[sysadmin@ns1 ~]$ sudo mysql -u sysadmin -p -D dbpdns < /usr/share/doc/pdns-backend-mysql/schema.mysql.sql 
ns2
[sysadmin@ns2 ~]$ sudo mysql Welcome to the MariaDB monitor.  Commands end with ; or \g.Your MariaDB connection id is 12Server version: 10.5.22-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]> create database dbpdns;Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> create user ‘sysadmin’@’%’ identified by ‘sysadmin’;Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> grant all privileges on dbpdns.* to ‘sysadmin’@’%’;Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> flush privileges;Query OK, 0 rows affected (0.003 sec)
MariaDB [(none)]> quitBye
[sysadmin@ns2 ~]$ sudo mysql -u sysadmin -p -D dbpdns < /usr/share/doc/pdns-backend-mysql/schema.mysql.sql 

1. Konfigurasi Authoritative Master DNS.

  • Masuk ke direktori ‘/etc/pdns’ dan tambahkan konfigurasi seperti dibawah ini  di file ‘pdns.conf’.
ns1
[sysadmin@ns1 ~]$ cd /etc/pdns[sysadmin@ns1 pdns]$ sudo nano pdns.conf
/etc/pdns/pdns.conf
…#konfigurasi pdns ke databaselaunch=gmysqlgmysql-host=localhostgmysql-dbname=dbpdnsgmysql-user=asrulgmysql-password=asrul
#konfigurasi ns1 sebagai master, dan konfigurasi ip ns2 sebagai slave.primary=yesallow-axfr-ips=192.168.72.12also-notify=192.168.72.12…
  • Lalu restart service pdns. Dan install poweradmin sebagai frontend pdns beserta dependesi lainnya seperti http dan php.
ns1
[sysadmin@ns1 ~]$ sudo systemctl restart pdns[sysadmin@ns1 ~]$ sudo dnf -y install http://rpms.remirepo.net/enterprise/remi-release-9.rpm[sysadmin@ns1 ~]$ sudo dnf module reset php -y[sysadmin@ns1 ~]$ sudo dnf module enable php:remi-8.1 -y[sysadmin@ns1 ~]$ sudo dnf install -y httpd php php-intl php-mysqlnd php-gettext php-openssl php-pdo 
[sysadmin@ns1 ~]$ wget https://github.com/poweradmin/poweradmin/archive/refs/tags/v3.7.0.zip[sysadmin@ns1 ~]$ unzip v3.7.0.zip [sysadmin@ns1 ~]$ chmod ug+rw -R poweradmin-3.7.0[sysadmin@ns1 ~]$ sudo chgrp apache -R poweradmin-3.7.0[sysadmin@ns1 ~]$ sudo mv poweradmin-3.7.0 /var/www/html/poweradmin[sysadmin@ns1 html]$ sudo semanage fcontext -a -t  httpd_sys_content_t ‘/var/www/html/poweradmin(/.*)?'[sysadmin@ns1 html]$ sudo restorecon -R /var/www/html/poweradmin/
  • Lalu akses melalui browser http://192.168.72.11/poweradmin/install dan lakukan setup poweradmin.


  • Setup koneksi database dan buat password untuk user admin.

  • Lalu setup akun dan name server.

  • Lalu jalankan command pada step 5 supaya poweradmin bisa update data tabel di dalam database dbpdns.

  • Setelah itu pada step 6. Buat script php sesuai intruksi.

  • Pada step 7, remove direktori ‘/var/www/html/powerdns/install’
  • Lalu login dengan user ‘admin’ dan password ‘admin’ di url http://192.168.72.11/poweradmin.

  • Selanjutnya kita akan buat master zone ‘idn-academy.id’ dan ‘72.168.192.in-addr.arpa’ dengan klik Add master zone.


  • Selanjutnya buat record untuk zone ‘idn-academy.id’ seperti gambar dibawah ini.
  • Buat juga record untuk zone ‘72.168.192.in-addr.arpa’ seperti gambar dibawah ini.

  • Di server ns1 kita ada dua zone yaitu ‘idn-academy.id’ dan ‘72.168.192.in-addr.arpa’.

 2. Konfigurasi Authoritative Slave DNS.

  • Masuk ke direktori ‘/etc/pdns’ dan tambahkan konfigurasi seperti dibawah ini  di file ‘pdns.conf’.
ns2
[sysadmin@ns2 ~]$ cd /etc/pdns[sysadmin@ns2 pdns]$ sudo nano pdns.conf
/etc/pdns/pdns.conf
…#konfigurasi pdns ke databaselaunch=gmysqlgmysql-host=localhostgmysql-dbname=dbpdnsgmysql-user=asrulgmysql-password=asrul#konfigurasi ns2 sebagai slave dan izinkan update dns dari ns1.secondary=yesallow-dnsupdate-from=192.168.72.11…
  • Lalu restart service pdns. Dan install poweradmin sebagai frontend pdns beserta dependesi lainnya seperti http dan php.
ns2
[sysadmin@ns2 ~]$ sudo systemctl restart pdns[sysadmin@ns2 ~]$ sudo dnf -y install http://rpms.remirepo.net/enterprise/remi-release-9.rpm[sysadmin@ns2 ~]$ sudo dnf module reset php -y[sysadmin@ns2 ~]$ sudo dnf module enable php:remi-8.1 -y[sysadmin@ns2 ~]$ sudo dnf install -y httpd php php-intl php-mysqlnd php-gettext php-openssl php-pdo 
[sysadmin@ns2 ~]$ wget https://github.com/poweradmin/poweradmin/archive/refs/tags/v3.7.0.zip[sysadmin@ns2 ~]$ unzip v3.7.0.zip [sysadmin@ns2 ~]$ chmod ug+rw -R poweradmin-3.7.0[sysadmin@ns2 ~]$ sudo chgrp apache -R poweradmin-3.7.0[sysadmin@ns2 ~]$ sudo mv poweradmin-3.7.0 /var/www/html/poweradmin[sysadmin@ns2 html]$ sudo semanage fcontext -a -t  httpd_sys_content_t ‘/var/www/html/poweradmin(/.*)?'[sysadmin@ns1 html]$ sudo restorecon -R /var/www/html/poweradmin/
  • Lalu akses melalui browser http://192.168.72.12/poweradmin/install dan lakukan setup poweradmin.


  • Setup koneksi database dan buat password untuk user admin.

  • Lalu setup akun dan name server.

  • Lalu jalankan command pada step 5 supaya poweradmin bisa update data tabel di dalam database dbpdns.

  • Setelah itu pada step 6. Buat script php sesuai intruksi.

  • Pada step 7, remove direktori ‘/var/www/html/powerdns/install’

  • Setelah login, klik Add supermaster. Dan tambahkan ip address server master dan hostname server slave.


  • Selanjutnya klik Add slave zone. Untuk zone ‘idn-academy.id’ dan ‘72.168.192.in-addr.arpa’.


  • Tunggu beberapa saat sampai records masing” zone terupdate.

Konfigurasi Firewall Sebelum Konfigurasi Authoritative dan Recursive.

  • Open port 53/tcp, 53/udp dan 80/tcp.
ns1 & ns2
[sysadmin@ns1 ~]$ sudo firewall-cmd –add-port=53/udp –permanent success[sysadmin@ns1 ~]$ sudo firewall-cmd –add-port=53/tcp –permanent success[sysadmin@ns1 ~]$ sudo firewall-cmd –add-port=80/tcp –permanent success[sysadmin@ns1 ~]$ sudo firewall-cmd –reload success

Tertarik mengikuti training di ID-Networkers? Kami menyediakan berbagai pilihan training yang bisa kamu ikuti. Klik disini untuk info lengkapnya.

Penulis : Achmad Alif Nasrulloh