Konfigurasi DNS Master-Slave di Debian



DNS Server merupakan sebuah server yang menjalankan layanan DNS (Domain Name System) untuk jaringannya. Ketika ada host yang ingin mengakses sebuah host yang lain dengan menggunakan nama domain, maka host tersebut akan berkomunikasi dahulu dengan server dns untuk mendapatkan alamat ip dari host yang ingin dituju.

Dalam penerapannya, dikenal dua jenis server DNS, yakni Primary Server atau disebut juga DNS Master, dan Secondary Server atau disebut juga DNS Slave.

DNS Master merupakan server dns yang dapat melakukan read and write terhadap konfigurasi dns. Di server inilah konfigurasi dns dibuat, seperti zona dan record file.

Sedangkan DNS Slave merupakan server dns yang hanya bisa melakukan read (read) terhadap konfigurasi dns. Server dns slave difungsikan sebagai server cadangan (backup). Apabila server utama mengalami down, maka layanan dns masih dapat berjalan dan akan di-handle oleh dns slave.

DNS Master akan melakukan transfer konfigurasi (file record) kepada dns slave. Kemudian dns slave akan menggunakan record tersebut sebagai acuan untuk melayani request dns dari client.

Gambar ilustrasi dns master-slave

Pada tutorial kali ini kita akan melakukan konfigurasi DNS Master dan Slave. Primary server (master) menggunakan sistem operasi debian 9. Sementara secondary server (slave) bisa menggunakan debian 9, debian 8 atau yang lainnya. Akan tetapi di sini saya menggunakan debian 8 untuk dns slave.

Topologi yang digunakan seperti berikut :

Gambar topologi dns master-slave

Konfigurasi DNS Master

Tahap pertama adalah melakukan instalasi dan konfigurasi pada server dns master. Untuk cara menginstal dan konfigurasinya silahkan kawan-kawan baca pada postingan tentang cara mengkonfigurasi dns server di debian.

Apabila server dns sudah dikonfigurasi seperti pada tutorial di atas, maka selanjutnya kita edit kembali file named.conf.local.
nano /etc/bind/named.conf.local

Tambahkan konfigurasi allow-transfer seperti di bawah ini :
zone "domainqu.co" {
        type master;
        file "/etc/bind/domainqu.co.forward";
        allow-transfer {192.168.7.95;};
        also-notify {192.168.7.95;};
};

zone "7.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/domainqu.co.reverse";
        allow-transfer {192.168.7.95;};
        also-notify {192.168.7.95;};
};

allow-transfer berfungsi untuk mengijinkan dns master melakukan transfer record ke server cadangan.

Tambahkan juga konfigurasi also-notify yang berguna untuk memberikan notifikasi kepada DNS Slave ketika ada pembaruan zona.

Ganti ip 192.168.7.95 dengan ip DNS slave milik kalian. Kemudian simpan konfigurasi.

Selanjutnya adalah mengedit konfigurasi file forward.
nano /etc/bind/domainqu.co.forward

Tambahkan record domain untuk DNS slave.
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     domainqu.co. root.domainqu.co. (
                      210120191         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.domainqu.co.
@       IN      NS      ns2.domainqu.co.
@       IN      A       192.168.7.97
www     IN      A       192.168.7.97
ns1     IN      A       192.168.7.96
ns2     IN      A       192.168.7.95

Pada file konfigurasi di atas, kita menambahkan subdomain ns2  untuk server dns slave. Subdomain tersebut dipetakan ke ip address 192.168.7.95 (IP DNS slave).

Kita juga menambahkan record name server yakni :
@  IN   NS  ns2.domainqu.co

Dengan begitu, terdapat dua buah server dns, yang pertama yakni ns1.domainqu.co (DNS master) dan yang kedua adalah ns2.domainqu.co (DNS slave).

Kemudian edit juga pada file reverse-nya. Lakukan tambahan konfigurasi seperti di bawah ini.
# nano /etc/bind/domainqu.co.reverse

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     domainqu.co. root.domainqu.co. (
                      210120191         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.domainqu.co.
@       IN      NS      ns2.domainqu.co.
96      IN      PTR     ns1.domainqu.co.
97      IN      PTR     domainqu.co.
97      IN      PTR     www.domainqu.co.
95      IN      PTR     ns2.domainqu.co.

Simpan file konfigurasi, lalu restart service dns.
systemctl restart bind9

atau
service bind9 restart

Terkahir, edit file /etc/resolv.conf lalu tambahkan ip address server dns slave.
# nano /etc.resolv.conf

nameserver 192.168.7.96
nameserver 192.168.7.95

Konfigurasi DNS Slave

Konfigurasi yang dilakukan pada dns slave adalah mendefinisikan zona seperti pada server dns master. Akan tetapi sebelum melakukan konfigurasi, instal dahulu service dns servernya.
apt install bind9

Selanjutnya edit file named.conf.local.
nano /etc/bind/named.conf.local

Tambahkan konfigurasi berikut :
zone "domainqu.co" {
        type slave;
        file "domainqu.co.forward";
        masters {192.168.7.96;};
};

Konfigurasi di atas adalah mendefinisikan zona "domainqu.co". Karena ini adalah DNS slave, maka type yang digunakan adalah slave. Kemudian kita tambahkan DNS masternya pada bagian,
masters {192.168.7.96;};

Silahkan ganti ip tersebut dengan ip dari DNS master kalian.

Pada konfigurasi di atas, kita hanya mendefinisikan forward zone, sedangkan reverse zone-nya tidak ada. Hal ini dikarenakan DNS slave tidak melakukan backup atau caching terhadap file reverse. Sehingga nanti hanya akan ada file forward saja yang akan diterima dari DNS master.

Kita juga tidak mendefinisikan direktori tempat menyimpan file forward-nya. Secara default, direktori yang akan digunakan untuk menyimpan file tersebut adalah /var/cache/bind.

Langkah berikutnya adalah mengedit file /etc/resolv.conf lalu menambahkan ip DNS master dan DNS slave.
# nano /etc/resolv.conf

nameserver 192.168.7.96
nameserver 192.168.7.95

Kemudian merestart service dns.
systemctl restart bind9

atau
service bind9 restart

Verifikasi

Cek pada direktori /var/cache/bind apakah sudah ada file forward dari DNS master.
# ls /var/cache/bind/
db.10  domainqu.co.forward  managed-keys.bind

Kalian juga bisa melihat proses yang terjadi pada server slave ketika melakukan restart service dns.
# tail -f /var/log/syslog
....
Jan 21 10:56:03 dnsslave named[1438]: zone domainqu.co/IN: Transfer started.
Jan 21 10:56:03 dnsslave named[1438]: transfer of 'domainqu.co/IN' from 192.168.7.96#53: connected using 192.168.7.95#47918
Jan 21 10:56:03 dnsslave named[1438]: zone domainqu.co/IN: transferred serial 210120191
Jan 21 10:56:03 dnsslave named[1438]: transfer of 'domainqu.co/IN' from 192.168.7.96#53: Transfer completed: 1 messages, 8 records, 210 bytes, 0.003 secs (70000 bytes/sec)
Jan 21 10:56:03 dnsslave named[1438]: zone domainqu.co/IN: sending notifies (serial 210120191)
^C

Selanjutnya kita coba melakukan nslookup dari dns slave (dns master masih aktif).
root@dnsslave:~# nslookup ns2.domainqu.co
Server:         192.168.7.96
Address:        192.168.7.96#53

Name:   ns2.domainqu.co
Address: 192.168.7.95

Kemudian kita coba matikan dns master-nya. Lalu lakukan nslookup lagi dari dns slave.
root@dnsslave:~# nslookup ns2.domainqu.co
Server:         192.168.7.95
Address:        192.168.7.95#53

Name:   ns2.domainqu.co
Address: 192.168.7.95

root@dnsslave:~#

Terlihat bahwa ip server berubah menjadi ip dari dns slave.

Lakukan nslookup dari client. Namun sebelum itu, pastikan client sudah mengkonfigurasi dns sekundernya dengan ip Server DNS Slave.

neslookup dari client
nslookup dari client linux

Untuk client yang menggunakan sistem operasi windows kemungkinan besar akan gagal melakukan nslookup. Meski begitu client windows tetap bisa mengakses web server menggunakan nama domain.

mengakses web server dari client menggunakan nama domain
akses web server dari client windows

Demikianlah tutorial konfigurasi dns master-slave pada debian server. Dengan mengikuti tutorial ini kalian seharusnya sudah bisa membuat server dns primer dan sekunder.


Load Comments