Pada tutorial sebelumnya kami telah menjelaskan dan membuat sebuah DNS Server mandiri menggunakan service BIND di VPS dengan sistem operasi CentOS 7.

Nah khusus tutorial kali ini kami akan membahas tentang DNS Master – Slave.

Apa sih itu DNS Master Slave ?

DNS Master – Slave, kata Master (primary) artinya utama, sedangkan Slave (secondary) yang artinya yang kedua yang bisanya digunakan sebagai cadangan atau backup.

DNS Master – Slave juga bisa dibilang pembagian node Nameserver pada DNS, dengan pembagian ini maka kita akan mempunyai sebuah backup atau cadangan sebuah record Nameserver.

Apa itu Nameserver (NS) ?

Name server merupakan database dari record – record DNS. Semua record DNS mulai dari record A, MX, TXT dan yang lainnya disimpan di Nameserver.

Keuntungan yang didapatkan dari DNS Master Slave ini sendiri yaitu jika sewaktu – waktu server DNS Master mengalami kendala misalnya (Down) maka domain yang menggunakan Nameserver dari DNS Master – Slave tersebut tidak akan mengalami yang namanya down (tidak bisa akses domain) karena apabila server Master down domain Anda akan langsung di handle oleh server Slave yang berfungsi sebagai backup si Master. Dengan demikian domain Anda masih bisa diakses dengan normal

Bagi Anda yang ingin mengikuti tutorial ini silakan siapkan terlebih dahulu amunisinya hehehe, diantaranya sebagai berikut :

Bagi Anda yang ingin menggunakan sistem operasi selain CentOS 7 sangat diperbolehkan sesuai dengan keinginan Anda, nantinya Anda hanya perlu menyesuaikan konfigurasi dan zonenya saja.

Apakah harus Server Master Mengguanakan CentOS dan Server Slave Menggunakan CentOS 7 juga ?

Tidak, Anda dapat menggunakan Debian atau Ubuntu untuk Server Master dan Slave Anda dapat menggunakan CentOS dan sebaliknya.

Oke langsung saja ketahapan instalasi dan kofigurasi DNS Master Slave di CentOS 7.

Instalasi Dan Konfigurasi Server Master (primary)

Pertama, silakan login ke VPS Anda masing – masing dan melakukan pembaharuan sistem terlebih dahulu dengan menjalankan perintah

[[email protected] ~]# yum update -y

Silakan tunggu proses update sampai selesai, jika sudah selanjutnya Anda silakan install service bind dengan menjalankan perintah berikut

[[email protected] ~]# yum install bind bind-utils -y

Silakan tunggu proses install service bind tersebut sampai selesai.

Kedua, melakukan konfigurasi dns master, file konfigurasinya sendiri berada di /etc/named.conf untuk membuka file konfigurasi tersebut Anda dapat menggunakan teks editor nano ataupun vim sesuai dengan keinginan Anda.

[[email protected] ~]# vim /etc/named.conf 

Silakan menambahkan IP server Master seperti berikut

options {
	listen-on port 53 { 127.0.0.1;  117.53.45.53; };
//	#listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt";
	memstatistics-file "/var/named/data/named_mem_stats.txt";
	recursing-file  "/var/named/data/named.recursing";
	secroots-file   "/var/named/data/named.secroots";

Apabila Anda ingin menambahkan caching-nameserver silakan tambahkan konfigurasi berikut

allow-query     { 127.0.0.1; 117.53.45.53; any; };
allow-query-cache { 127.0.0.1; 117.53.45.53; any; };

Untuk keamanan agar terhindar dari indikasi abuse Flooding DNS yang pernah saya pribadi alami heheheh 🙂 dengan begitu saya akan melakukan disable recursion dns, karena dns kita tidak diperuntukkan sebagai DNS resolver sepertihalnya DNS google (8.8.8.8 , 8.8.4.4)

*/
recursion no;

Apabila recursion diatas kita yes (aktif) maka, DNS kita akan menjadi DNS resolver layaknya DNS Google (8.8.8.8 , 8.8.4.4) apabila DNS kita menjadi DNS resolver akan sangat banyak permintaan akses ke DNS kita dan banyaknya akses tersebut yang akan membuat Abuse Flooding DNS terjadi 🙂

Selanjutnya marilah kita membuat zone untuk Master, disini saya akan membuat zone forward saja, dimana zone forward inilah yang nantinya melakukan pemetaan dari nama domain (hamim.web.id) ke alamat IP (117.53.45.53).

Kenapa tidak membuat zone reverse ?

Zone reverse ini kebalikannya zone forward dimana fungsi dari zone reverse yaitu untuk memetakan IP ke domain. Biasanya dibilang dengan rDNS atau PTR, jika Anda pengguna VPS dan Anda ingin membangun DNS di VPS, Anda tidak perlu membuat zone reverse ini karena yang mempunyai sebuah kewenganan untuk mengelola sebuah zone reverse hanyalah pengelola IP. Dan apabila penyedia VPS Anda mempunyai block IP sendiri maka Anda nantinya apabila membutuhkan rDNS atau PTR silakan melakukan request untuk penambahan rDNS ke penyedia Hosting atau VPS Anda masing – masing. Dan yang paling sering biasanya rDNS ini digunakan untuk setup mail server.

Contohnya disini saya menggunakan VPS CloudKilat jadi apabila saya membutuhkan record PTR atau rDNS untuk kebutuhan mail server, saya hanya perlu request/meminta ke CloudKilat untuk membuatkan rDNS atau PTR untuk IP VPS saya.

Berikut contoh pembuatan zone forward untuk Master

zone "hamim.web.id" IN {
	type master;
	file "/etc/named/forward-hamim.zone";
	allow-update { none; };
	allow-transfer { 103.23.20.126; };
	also-notify { 103.23.20.126; };
	notify yes;
	};

Berikut beberapa keterangan dari zone forward diatas :

  • zone : Digunakan untuk penamaan zone dari domain Anda
  • IN : Internet
  • Type : Sesuaikan dengan skema DNS Server Yang ingin Anda gunakan, jika DNS Servernya diperuntukkan untuk Master silakan isikan master jika slave silakan sisikan slave
  • File : Letak dimana database record dari domain hamim.web.id berada
  • allow-update : Digunakan untuk recursive, jika tidak diaktifkan silakan berikan keterangan none;
  • allow-transfer : Digunakan untuk melakukan transfer database record master (primary) ke server Slave. Silakan isikan IP dari Server Slave
  • also-notify dan notify yes : Digunakan untuk notifikasi setiap perubahan di sisi zone master dan akan diinformasikan ke Slave. Namun apabila tidak menggunakannya hal tersebut tidak apa – apa dikarenakan secara default bind sudah melakukan notifikasi perubahan ke host slave.

Berikut contoh lengkap dari konfigurasi zone forward disisi Master

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
	listen-on port 53 { 127.0.0.1;  117.53.45.53; };
//	#listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt";
	memstatistics-file "/var/named/data/named_mem_stats.txt";
	recursing-file  "/var/named/data/named.recursing";
	secroots-file   "/var/named/data/named.secroots";

	allow-query     { 127.0.0.1; 117.53.45.53; any; };
	allow-query-cache { 127.0.0.1; 117.53.45.53; any; };

	/* 
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable 
           recursion. 
         - If your recursive DNS server has a public IP address, you MUST enable access 
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification 
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface 
        */
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "hamim.web.id" IN {
	type master;
	file "/etc/named/forward-hamim.zone";
	allow-update { none; };
	allow-transfer { 103.23.20.126; };
	also-notify { 103.23.20.126; };
	notify yes;
	};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Silakan simpan konfigurasi zone forward tersebut.

Ketiga, membuat record dns untuk domain “hamim.web.id” silakan sesuaikan letak file record yang ingin disimpan, pada pembuatan zone forward sebelumnya kita telah menentukan letaknya yaitu di direktori /etc/named/ dengan nama file forward-hamim.zone .

[[email protected] ~]# vim /etc/named/forward-hamim.zone 

Berikut contoh record forward :

$TTL    86400
@       IN      SOA             hamim.web.id. root.hamim.web.id.(
                2019111919      ;Serial
                3600            ;Refresh
                1800            ;Retry
                604800          ;Expire
                86400           ;Minimum TTL
)

@               IN      NS      ns1.hamim.web.id.
@               IN      NS      ns2.hamim.web.id.
ns1             IN      A       117.53.45.53
ns2             IN      A       103.23.20.126  
@               IN      A       117.53.45.53
www             IN      CNAME   hamim.web.id.

Sesuai dengan topologi sebelumnya dimana NS1.HAMIM.WEB.ID akan menggunakan IP Master (117.53.45.53) sedangkan NS2.HAMIM.WEB.ID akan menggunakan IP Slave (103.23.20.126).

Silakan sesuaikan dengan IP VPS Anda masing – masing dan mengenai keterangan – kerangan record DNS diatas Anda dapat merujuk pada tautan berikut : Record – Record DNS Server Yang Sering Digunakan

Silakan simpan file forward tersebut.

Berikutnya, silakan start dan enable service bind, dan pastikan semua service bind berjalan dengan normal dengan menggunakan perintah

[[email protected] ~]# systemctl start named
[[email protected] ~]# systemctl enable named
[[email protected] ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
   Active: active (running) since Kam 2019-02-21 18:23:50 WIB; 1 day 5h ago
 Main PID: 4483 (named)
   CGroup: /system.slice/named.service
           └─4483 /usr/sbin/named -u named -c /etc/named.conf

Oke apabila semua telah berjalan dengan sempurna, mari kita lanjut ke server Slave

Instalasi Dan Konfigurasi Server Slave

Untuk installasi disisi Slave tidaklah ada perubahan yang sangat signifikan dan hampir sama dengan cara install disisi Master tadi, namun perbedaannya di Slave Anda tidak perlu membuat atau nenambahkan record forward kembali, Anda hanya perlu membuat zone dengan type slave dan menentukan letak penyimpanan file dari record master.

Silakan install service bind sepertihalnya install Master sebelumnya.

Jika sudah, silakan melakukan konfigurasi slave di /etc/named.conf

[[email protected] ~]# vim /etc/named.conf 

Untuk konfigurasi silakan sesuaikan dengan konfigurasi master

options {
        listen-on port 53 { 127.0.0.1;  103.23.20.126; };
//      listen-on-v6 port 53 { none; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";

        allow-query     { 127.0.0.1; 103.23.20.126; any; };
        allow-query-cache { 127.0.0.1; 103.23.20.126; any; };

        /* 

Berikut contoh zone forward disisi Slave :

zone "hamim.web.id" IN {
        type slave;
        masters { 117.53.45.53; };
        file "slaves/forward-hamim.zone";
        masterfile-format text;
        notify no;
        };

Berikut beberapa keterangan dari zone forward diatas :

  • zone : Digunakan untuk penamaan zone dari domain Anda
  • IN : Internet
  • Type : Sesuaikan dengan skema DNS Server Yang ingin Anda gunakan, jika DNS Servernya diperuntukkan untuk Slave silakan isikan Slave jika Master silakan sisikan Master
  • masters : Silakan isikan IP Master
  • File : Letak dimana hasil backup database record dari domain hamim.web.id.
  • Masterfile-format text : Digunakan untuk menerjemahkan binari ke teks

Jika sudah, silakan save konfigurasi named.conf tersebut, dan silakan start dan enable named seperti perintah yang sebelumnya.

Hasilnya secara otomatis Anda akan mendapatkan database record untuk backup yang dikirimkan oleh si master.

Untuk melihatnya silakan pindah direktori ke /var/named/slaves/

[[email protected] ~]# cd /var/named/slaves/
[[email protected] slaves]# ls
db-06eRySfx  db-C57a5DlK  db-kIGPzEJP  db-xo4j3baV  forward-hamim.zone 
[[email protected] slaves]# 

Oke secara otomatis akan ada file forward yang dimana itulah file backupnya

Secara default isi dari forward-hamim.zone berbentuk binari bukan teks,

Kenapa binari ?

Berdasarkan hasil dari beberapa referensi karena dari segi keamanan.

Namun hal tersebut dapat diatasi dengan cara menambahkan masterfile-format text; di zone forward di slave.

Harap diperhatikan apabila Anda telah menambahkan konfigurasi baru atau melakukan perubahan konfigurasi Anda wajib melakukan restart atau reload service bind dengan perintah

[[email protected] slaves]# 
[[email protected] slaves]# systemctl restart named
[[email protected] slaves]# cat forward-hamim.zone 
$ORIGIN .
$TTL 86400	; 1 day
hamim.web.id		IN SOA	hamim.web.id. root.hamim.web.id. (
				2019111919 ; serial
				3600       ; refresh (1 hour)
				1800       ; retry (30 minutes)
				604800     ; expire (1 week)
				86400      ; minimum (1 day)
				)
			NS	ns1.hamim.web.id.
			NS	ns2.hamim.web.id.
			A	117.53.45.53
$ORIGIN hamim.web.id.
analis			A	117.53.45.53
beddol			A	117.53.45.53
bowok			A	117.53.45.53
cobacoba		A	117.53.45.53
hai			A	103.53.45.53
hello		        A	117.53.45.53
mail			A	117.53.45.53
ns1			A	117.53.45.53
ns2			A	103.23.20.126
Ommku			A	117.53.45.53
www			CNAME	hamim.web.id.
[[email protected] slaves]# 

Namun penambahan masterfile-format text; tidak disarankan apabila DNS Anda digunakan untuk banyak domain atau zone untuk domain.

Dengan demikian kami sarankan Anda untuk menonaktifkan atau tidak menggunakan masterfile-format text; apabila memang nantinya membutuhkan hasil backup record barulah Anda dapat mengaktifkannya kembali.

Berikut merupakan log slave apabila terdapat perubahan record misalnya penamabahan atau pengurunganan record contohnya record untuk subdomain dan yang lainnya

Dan berikut log dari sisi Master,

Pada log diatas kita sangat jelas melihat peran also-notify dan notify yes;

Harap dicatat setiap menambahkan record baru di sisi Master misalnya Anda ingin menambahkan subdomain setiap menambahkan subdomain maka Anda perlu merubah Serial apabila Anda tidak merubah serial maka si Slave tidak akan melakukan perubahan apapun dan subdomain yang telah Anda tambahkan di Master tidak akan resolve ke Slave.

PERCOBAAN

NS1.HAMIM.WEB.ID : 117.53.45.53
NS2.HAMIM.WEB.ID : 103.23.20.12

Sebelumnya saya telah membuat subdomain subdomainbro

Pengecekan Domain Utama HAMIM.WEB.ID

[email protected]:~$ dig hamim.web.id +short
117.53.45.53
[email protected]:~$ dig @ns1.hamim.web.id hamim.web.id +short
117.53.45.53
[email protected]:~$ dig @ns2.hamim.web.id hamim.web.id +short
117.53.45.53
[email protected]:~$ dig ns1.hamim.web.id +short
117.53.45.53
[email protected]:~$ dig ns2.hamim.web.id +short
103.23.20.126
[email protected]:~$

Pengecekan Sub Domain Utama SUBDOMAINBRO.HAMIM.WEB.ID

[email protected]:~$ dig subdomainbro.hamim.web.id +short
117.53.45.53
[email protected]:~$ dig @ns1.hamim.web.id subdomainbro.hamim.web.id +short
117.53.45.53
[email protected]:~$ dig @ns2.hamim.web.id subdomainbro.hamim.web.id +short
117.53.45.53
[email protected]:~$ dig ns1.hamim.web.id +short
117.53.45.53
[email protected]:~$ dig ns2.hamim.web.id +short
103.23.20.126
[email protected]:~$ 

Sebagai tambahan apabila Anda ingin menambahkan domai baru silakan membuat zone baru untuk domain baru Anda tersebut disisi Master dan Slave.

Selamat mencoba semoga bermanfaat 🙂