Konfigurasi DNS Server Master Slave pada Debian 7

DNS kepanjangan dari Domain Name System adalah sistem penamaan pada Jaringan komputer untuk memberikan nama pada host atau komputer yang tadinya menggunakan alamat IP yang berupa angka (seperti 192.168.56.22) menjadi huruf dan kata-kata yang mudah dimengerti, dengan DNS kita dimudahkan untuk mengakses suatu host atau komputer hanya menggunakan kata kata atau tulisan yang mudah dimengerti yang disebut dengan URL , seperti kita mengakses situs web blogger.com, sebenarnya alamat situs tersebut bukanlah blogger.com , alamat dengan huruf tersebut hanya mewakili saja dari alamat IP server asli blogger.com tersebut, bisa saja alamat URL blogger.com dimiliki oleh banyak alamat IP server.

Src : cdn.keycdn.com

Pada DNS terdapat komputer yang bertindak sebagai Server bisa juga disebut dengan DNS Server, tugasnya adalah menerima permintaan DNS dari komputer DNS Client, permintaannya berupa alamat IP dari suatu nama domain atau URL, misalnya Client meminta data alamat IP dari URL blogger.com maka DNS Server menjawabnya dengan alamat IP 192.X.X.X. DNS Server menggunakan protokol UDP pada port 53 sebagai transport protocolnya.

Dalam server DNS terdiri dari beberapa nama domain seperti blogger.com, google.com, facebook.com, dll itu adalah nama domain utama, kita dapat membagi nama domain utama menjadi beberapa sub-domain atau anakannya seperti www.blogger.com, mail.google.com, dll. Sub domain itu dicatat atau dimasukan di dalam database Record tiap nama domain utama. untuk sub-domain, jenis record yang digunakan adalah A Record, selain itu ada beberapa macam jenis record dalam DNS diantaranya :

  • (A) Record : fungsi dari A Record ini adalah untuk mapping atau memetakan antara alamat IP dengan nama domain utama maupun sub-domain, server akan menjawab permintaan DNS dengan record ini jika Client menanyakan alamat IP dari suatu URL (URL ubah ke IP).
  • (PTR) Record : Hampir sama dengan A tetapi ini adalah sebaliknya, server akan menjawab dengan PTR jika Client menanyakan alamat URL dari suatu alamat IP (IP ubah ke URL).
  • (NS) Record : Fungsinya sebagai informasi nama server yang memberikan jawaban DNS pada Client.
  • (SOA) Record : Berisi server DNS yang menyediakan data nama domain yang ada pada jaringan.
  • (MX) Record : untuk memetakan alamat domain dari sebuah email pada email server tujuan.

Pada kali ini kita akan melakukan konfigurasi DNS Server pada Sistem Operasi Server Debian, versi debian yang saya gunakan adalah versi 7.8.0, aplikasi yang melayani DNS pada Debian adalah BIND9. Terdapat dua server Master dan Slave, yang Master adalah yang utama sedangkan yang Slave adalah cadangan.

Kita akan buat dua domain yaitu server1.xyz dan server2.xyz, dan domain tersebut akan kita buat beberapa sub-domain. kita lanjut pada konfigurasinya :

DNS Server Master

Fungsi dari Server Master ini adalah untuk menyimpan semua database nama domain utama seperti record-record atau catatan-catatan, dan yang akan menjadi Server yang paling pertama yang akan diakses oleh Client.
  • Pertama kita lakukan konfigurasi IP Address pada Interface server ini, sesuaikan dengan keadaan network atau jaringan masing-masing jika berbeda dengan topologi diatas.

  • File konfigurasi Interface ada di /etc/network/interfaces , kita buka file tersebut dengan editor nano.
    root@masterdns:~# nano /etc/network/interfaces 
    
    Cari tulisan seperti ini, jika tidak ada lewati saja.
    allow-hotplug eth0
    iface eth0 inet dhcp
    
    Ganti tulisan diatas dengan tulisan dibawah ini.
    auto eth0
    iface eth0 inet static
            address 192.168.56.10
            netmask 255.255.255.0
            gateway 192.168.56.1
            dns-namservers 192.168.56.10
    
    • address adalah alamat IP server
    • netmask adalah subnet mask dari alamat IP server
    • gateway adalah alamat IP Router atau perangkat yang menghubungkan ke Internet sebagai gateway
    Setelah itu simpan file tersebut dengan menekan tombol CTRL + O, dan restart layanan network untuk memperbarui konfigurasi IP Address pada interface Server ini.
    root@masterdns:~# /etc/init.d/networking restart
    
  • Aplikasi atau repository yang dibutuhkan untuk mengkonfigurasi DNS Server pada Debian adalah bind9, maka kita harus install paket bind9 pada server ini.
  • root@masterdns:~# apt-get install bind9
    
  • Kemudian kita pindah pada direktori yang isinya file konfiguras bind9 pada /etc/bind
  • root@masterdns:~# cd /etc/bind/
    root@masterdns:/etc/bind# ls
    bind.keys  db.0  db.127  db.255  db.empty  db.local  db.root  named.conf  named.conf.default-zones  named.conf.local  named.conf.options  rndc.key  zones.rfc1918
    
  • Edit file named.conf.default-zones kemudian cari zone localhost dan 127.
  • zone "localhost" {
            type master;
            file "/etc/bind/db.local";
    };
    
    zone "127.in-addr.arpa" {
            type master;
            file "/etc/bind/db.127";
    };
    
    kita dapat menggantinya dengan zone nama domain utama yang akan kita buat, ganti tulisan tersebut menjadi seperti dibawah ini.
    zone "server1.xyz" {
            type master;
            file "/etc/bind/db.server1";
            allow-transfer {192.168.56.20;};
    };
    
    zone "56.168.192.in-addr.arpa" {
            type master;
            file "/etc/bind/db.56";
            allow-transfer  {192.168.56.20;};
    };
    
    • zone "xxxxx" isinya adalah zone forward DNS atau nama domain utama yang akan kita buat, untuk mengubah dari nama domain menjadi alamat IP .
    • zone "xx.xx.xx.in-addr.arpa" isinya adalah alamat IP network yang dimiliki oleh setiap nama domain utama, tetapi cara penulisannya dibalik.
    • type master; artinya zone tersebut data data nya berada langsung di server tersebut, bisa diganti menjadi slave.
    • file "/xx/xx/xx" tempat menyimpan file yang isinya record-record dari domain utama, seperti sub-domain.
    • allow-transfer isinya alamat IP server DNS Slave atau server yang diperbolehkan transfer data domain utama tersebut.
    Itu baru untuk satu nama domain utama server1.xyz, tambahkan lagi untuk server2.xyz pada baris paling bawah.
    zone "server2.xyz" {
            type master;
            file "/etc/bind/db.server2";
            allow-transfer {192.168.56.20;};
    };
    
    Simpan file tersebut.
  • Copy file database record dari contoh yang ada di directory /etc/bind , untuk file database dari nama domain yang akan kita buat.
  • root@masterdns:/etc/bind# cp db.local db.server1
    root@masterdns:/etc/bind# cp db.local db.server2
    root@masterdns:/etc/bind# cp db.127 db.56
    
  • Edit ketiga file tersebut untuk kita isikan record untuk mapping antara domain dan sub-domain dengan alamat IP. pertama kita mulai dari file db.server1
  • ;
    ; BIND data file for local loopback interface
    ;
    $TTL    604800
    @       IN      SOA     localhost. root.localhost. (
                                  2         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;
    @       IN      NS      localhost.
    @       IN      A       127.0.0.1
    @       IN      AAAA    ::1
    
    Tulisan diatas adalah isi awal dari file db.server1, kita harus mengubahnya seperti localhost diganti menjadi nama domain utama server1.xyz, dan yang dibawahnya adalah database record seperti NS, A, dll kita dapat langsung membuat sub-domain.
    ;
    ; BIND data file for local loopback interface
    ;
    $TTL    604800
    @       IN      SOA     server1.xyz. root.server1.xyz. (
                                  2         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;
    @       IN      NS      server1.xyz.
    @       IN      A       192.168.56.10
    www     IN      A       192.168.56.10
    web     IN      A       192.168.56.10
    data    IN      A       192.168.56.10
    ftp     IN      A       192.168.56.10
    mail    IN      A       192.168.56.10
    smb     IN      A       192.168.56.10
    IN      MX      10      mail.server1.xyz.
    
    seperti inilah hasilnya, tulisan yang ditebalkan adalah sub domain yang telah kita map pada alamat IP. Kemudian lanjut pada file yang lainnya lagi.

    File db.server2

    ;
    ; BIND data file for local loopback interface
    ;
    $TTL    604800
    @       IN      SOA     server2.xyz. root.server2.xyz. (
                                  2         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;
    @       IN      NS      server2.xyz.
    @       IN      A       192.168.56.20
    www     IN      A       192.168.56.20
    web     IN      A       192.168.56.20
    data    IN      A       192.168.56.20
    ftp     IN      A       192.168.56.20
    smb     IN      A       192.168.56.20
    mail    IN      A       192.168.56.20
    IN      MX      10      mail.server2.xyz.
    

    File db.56

    ;
    ; BIND reverse data file for local loopback interface
    ;
    $TTL    604800
    @       IN      SOA     server1.xyz. root.server1.xyz. (
                                  1         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;
    @       IN      NS      server1.xyz.
    10      IN      PTR     server1.xyz.
    10      IN      PTR     www.server1.xyz.
    10      IN      PTR     web.server1.xyz.
    10      IN      PTR     data.server1.xyz.
    10      IN      PTR     ftp.server1.xyz.
    10      IN      PTR     smb.server1.xyz.
    10      IN      PTR     mail.server1.xyz.
    20      IN      PTR     server2.xyz.
    20      IN      PTR     www.server2.xyz.
    20      IN      PTR     web.server2.xyz.
    20      IN      PTR     data.server2.xyz.
    20      IN      PTR     ftp.server2.xyz.
    20      IN      PTR     smb.server2.xyz.
    20      IN      PTR     mail.server2.xyz.
    
    File ini berfungsi untuk map alamat IP menjadi nama domain, angka 10, 20 adalah alamat IP Host atau oktet terakhir IP dari pemilik domain/sub-domain tersebut.
  • Kemudian restart layanan bind9 dan pastikan berhasil tidak menemukan tulisan fail.
  • root@masterdns:/etc/bind# /etc/init.d/bind9 restart
    [ ok ] Stopping domain name service...: bind9.
    [ ok ] Starting domain name service...: bind9.
    
    Jika terjadi error atau fail coba cek file named.conf.default-zones mungkin saja ada tulisan yang kurang seperti ";".
  • Setelah itu testing hasil DNS Server dengan melakukan nslookup domain pada Server.
  • root@masterdns:/etc/bind# nslookup server1.xyz
    Server:  127.0.0.1
    Address: 127.0.0.1#53
    
    Name: server1.xyz
    Address: 192.168.56.10
    
    root@masterdns:/etc/bind# nslookup server2.xyz
    Server:  127.0.0.1
    Address: 127.0.0.1#53
    
    Name: server2.xyz
    Address: 192.168.56.20
    
    Lalu nslookup dengan IP Address.
    root@masterdns:/etc/bind# nslookup 192.168.56.10
    Server:  127.0.0.1
    Address: 127.0.0.1#53
    
    10.56.168.192.in-addr.arpa name = smb.server1.xyz.
    10.56.168.192.in-addr.arpa name = web.server1.xyz.
    10.56.168.192.in-addr.arpa name = www.server1.xyz.
    10.56.168.192.in-addr.arpa name = data.server1.xyz.
    10.56.168.192.in-addr.arpa name = mail.server1.xyz.
    10.56.168.192.in-addr.arpa name = server1.xyz.
    10.56.168.192.in-addr.arpa name = ftp.server1.xyz.
    
    root@masterdns:/etc/bind# nslookup 192.168.56.20
    Server:  127.0.0.1
    Address: 127.0.0.1#53
    
    20.56.168.192.in-addr.arpa name = web.server2.xyz.
    20.56.168.192.in-addr.arpa name = www.server2.xyz.
    20.56.168.192.in-addr.arpa name = data.server2.xyz.
    20.56.168.192.in-addr.arpa name = mail.server2.xyz.
    20.56.168.192.in-addr.arpa name = server2.xyz.
    20.56.168.192.in-addr.arpa name = ftp.server2.xyz.
    20.56.168.192.in-addr.arpa name = smb.server2.xyz.
    

DNS Server Slave

Server slave fungsinya sebagai cadangan dari Server Master, pada server slave kita tidak perlu mengkonfigurasi database record (sub-domain) karena server slave ini akan mengimpornya atau mentransfer dari server master, jika server master mati maka server slave akan mengantikannya.
  • Pertama kita konfigurasi IP Address pada interface server ini, edit file /etc/network/interfaces
  • root@dnsslave:~# nano /etc/network/interfaces 
    auto eth0
    iface eth0 inet static
            address 192.168.56.20
            netmask 255.255.255.0
            gateway 192.168.56.20
            dns-nameservers 192.168.56.20
    
  • Kemudian install paket bind9
  • root@dnsslave:~# apt-get install bind9
    
  • Pindah ke directory /etc/bind yang berisi file konfigurasi DNS.
  • root@dnsslave:~# cd /etc/bind/
    
  • Kemudian edit file named.conf.default-zones untuk menambahkan zones atau domain utama.
  • root@dnsslave:/etc/bind# nano named.conf.default-zones
    
    Seperti biasa kita ganti localhost menjadi seperti ini, langsung saja.
    zone "server1.xyz" {
            type slave;
            masters {192.168.56.10;};
    };
    
    zone "server2.xyz" {
            type slave;
            masters {192.168.56.10;};
    };
    
    zone "56.168.192.in-addr.arpa" {
            type slave;
            masters {192.168.56.10;};
    };
    
    Entri masters adalah alamat IP Server yang memiliki database dari zone tersebut atau server master. Setelah itu simpan file tersebut.
  • Kemudian restart layanan bind9, dan pastikan tidak terjadi kegagalan atau failed.
  • root@dnsslave:/etc/bind# /etc/init.d/bind9 restart
    [ ok ] Stopping domain name service...: bind9.
    [ ok ] Starting domain name service...: bind9.
    
  • Coba lakukan nslookup pada server apakah sudah berhasil.
  • root@dnsslave:/etc/bind# nslookup server1.xyz
    Server:  127.0.0.1
    Address: 127.0.0.1#53
    
    Name: server1.xyz
    Address: 192.168.56.10
    

Testing Client

Kita uji coba client untuk mengakses data DNS dari kedua server tersebut, Client yang saya gunakan adalah Ubuntu 16.04, untuk mendaftarkan DNS Server pada Client adalah :
  • edit file /etc/resolv.conf
  • dzikra@dz-ux455lf:~$ sudo nano /etc/resolv.conf 
    
  • Lalu tambahkan alamat IP kedua server tersebut di baris paling atas.
  • nameserver 192.168.56.10
    nameserver 192.168.56.20
    
  • Kita uji coba nslookup nama domain utama.
  • dzikra@dz-ux455lf:~$ nslookup server1.xyz
    Server:  192.168.56.10
    Address: 192.168.56.10#53
    
    Name: server1.xyz
    Address: 192.168.56.10
    
    dzikra@dz-ux455lf:~$ nslookup server2.xyz
    Server:  192.168.56.10
    Address: 192.168.56.10#53
    
    Name: server2.xyz
    Address: 192.168.56.20
    
    Kemudian nslookup dengan alamat IP
    dzikra@dz-ux455lf:~$ nslookup 192.168.56.10
    Server:  192.168.56.10
    Address: 192.168.56.10#53
    
    10.56.168.192.in-addr.arpa name = www.server1.xyz.
    10.56.168.192.in-addr.arpa name = data.server1.xyz.
    10.56.168.192.in-addr.arpa name = mail.server1.xyz.
    10.56.168.192.in-addr.arpa name = server1.xyz.
    10.56.168.192.in-addr.arpa name = ftp.server1.xyz.
    10.56.168.192.in-addr.arpa name = smb.server1.xyz.
    10.56.168.192.in-addr.arpa name = web.server1.xyz.
    
    dzikra@dz-ux455lf:~$ nslookup 192.168.56.20
    Server:  192.168.56.10
    Address: 192.168.56.10#53
    
    20.56.168.192.in-addr.arpa name = data.server2.xyz.
    20.56.168.192.in-addr.arpa name = mail.server2.xyz.
    20.56.168.192.in-addr.arpa name = server2.xyz.
    20.56.168.192.in-addr.arpa name = ftp.server2.xyz.
    20.56.168.192.in-addr.arpa name = smb.server2.xyz.
    20.56.168.192.in-addr.arpa name = web.server2.xyz.
    20.56.168.192.in-addr.arpa name = www.server2.xyz.
    
  • Untuk menguji apakah DNS Slave dapat menggantikan master coba kita matikan server master.
  • root@masterdns:/etc/bind# init 0
    
    tunggu hingga server tersebut mati.
  • Kita coba nslookup pada client apakah masih dapat dilakukan.
  • dzikra@dz-ux455lf:~$ nslookup server1.xyz
    Server:  192.168.56.20
    Address: 192.168.56.20#53
    
    Name: server1.xyz
    Address: 192.168.56.10
    
    terlihat yang menjawab sekarang adalah DNS Slave.

Komentar