0

Instalasi dan Konfigurasi DNS Server di Debian 7

DNS Server adalah sebuah layanan yang berfungsi untuk mengkonversi nama domain ke alamat IP, dan juga sebaliknya dari alamat IP ke nama domain. Didalam internet banyak sekali nama-nama domain, tanpa DNS bisa dibayangkan ada banyak sekali nama-nama domain dan kita perlu menghafal satu persatu alamat IP dari domain tersebut.

Tentu sangat sulit bukan untuk menghafalnya? oleh karena itu dengan adanya DNS ini kita lebih mudah untuk mengunjungi suatu website hanya dengan mengetikkan nama domainnya saja, tanpa perlu susah payah mencatat setiap alamat IP dari website tersebut.

Aplikasi populer yang biasa digunakan untuk DNS Server adalah BIND9, aplikasi gratis ini berjalan diatas platform *nix/linux. Untuk itu disini akan dijelaskan bagaimana instalasi dan konfigurasi DNS Server di debian yang menggunakan BIND9. Untuk tutorial ini kita asumsikan ada 3 alamat IP dan 4 nama domain sebagai berikut:

192.168.7.10 = ns.cubnetwork.local (dns server lokal)
192.168.7.20 = www.cubnetwork.local (web server lokal)
192.168.7.20 = mail.cubnetwork.local (mail server lokal)
192.168.7.30 = printer.cubnetwork.local (printer sharing)

Alamat IP diatas hanyalah contoh untuk tutorial dns server ini, Anda bisa menggantinya dan menyesuaikan dengan konfigurasi jaringan anda. Ada beberapa tahapan cara konfigurasi DNS Server Debian 7:

Instalasi BIND9

Untuk menginstal BIND9 di debian menggunakan perintah dibawah ini.

# apt-get install bind9

atau bisa juga menggunakan perintah aptitude.

# aptitude install bind9

Eksplorasi BIND9

Selanjutnya kita mengeksplorasi apa-apa saja yang terdapat pada BIND9.

  • /usr/sbin/named = file binary untuk menjalankan bind9
  • /etc/init.d/bind9 = file init untuk memudahkan start/stop/restart named
  • /etc/bind/ = direktori utama yang menyimpan semua file konfigurasi bind9
  • /etc/bind/named.conf = file konfigurasi utama bind9
  • /etc/bind/named.conf.options = file untuk mengatur forwarder untuk keperluan cache nameserver
  • /etc/bind/named.conf.local = file yang isinya adalah konfigurasi lokal dns server, disini kita akan meletakkan zona lokal.
  • /etc/bind/named.conf.default-zones = file yang isinya default zones (db.local, db.0, db.127, db.255)

Diatas hanya sebagian saja yang dijelaskan, jika ingin lebih lengkap silahkan ketikkan perintah dibawah ini untuk melihat paket/aplikasi apa saja yang berhubungan dengan bind9.

# dpkg -L bind9

Konfigurasi Cache NameServer

Konfigurasi ini berguna untuk meng-cache setiap query yang dilakukan, dan saat kita melakukan query yang sama tidak akan memakan waktu yang lama.

Selain itu fungsi dari cache ini adalah untuk menghemat bandwidth, karna dns server lokal kita sudah menyimpan cachenya. Untuk konfigurasi cache nameserver kita akan modifikasi file named.conf.options yang terletak didalam direktori /etc/bind/.

Didalam file named.conf.options ada baris yang terlihat seperti ini:

// forwarders {
        //      0.0.0.0;
        // };

Baris tersebut masih berupa komentar, jadi hapus tanda “//” lalu ubah menjadi seperti dibawah ini.

 forwarders {
              8.8.8.8;
              8.8.4.4;
         };

Disini saya menggunakan dns google sebagai forwarder apabila alamat yang dituju tidak ada di dns server lokal, dan juga berfungsi sebagai cache nameserver.

Alasan menggunakan dns google karna alamat ip nya mudah diingat, dan juga google merupakan perusahaan raksasa yang menurut saya dns server nya juga bagus dan juga biasa digunakan oleh banyak orang.

Setelah selesai, selanjutnya restart service bind9 dan kita uji coba dengan melakukan query ke cubnetwork.com. Untuk query kita menggunakan perintah dig dan memakai dns server lokal yang kita bangun.

# dig @127.0.0.1 cubnetwork.com

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @127.0.0.1 cubnetwork.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24592
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 0

;; QUESTION SECTION:
;cubnetwork.com.            IN  A

;; ANSWER SECTION:
cubnetwork.com.     10493   IN  A   50.22.185.177

;; AUTHORITY SECTION:
.           15162   IN  NS  j.root-servers.net.
.           15162   IN  NS  f.root-servers.net.
.           15162   IN  NS  e.root-servers.net.
.           15162   IN  NS  k.root-servers.net.
.           15162   IN  NS  a.root-servers.net.
.           15162   IN  NS  b.root-servers.net.
.           15162   IN  NS  h.root-servers.net.
.           15162   IN  NS  m.root-servers.net.
.           15162   IN  NS  d.root-servers.net.
.           15162   IN  NS  c.root-servers.net.
.           15162   IN  NS  i.root-servers.net.
.           15162   IN  NS  l.root-servers.net.
.           15162   IN  NS  g.root-servers.net.

;; Query time: 286 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Oct 21 08:27:03 2014
;; MSG SIZE  rcvd: 259

Lakukan sekali lagi, dan lihat perbedaan waktunya.

# dig @127.0.0.1 cubnetwork.com

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @127.0.0.1 cubnetwork.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2111
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 0

;; QUESTION SECTION:
;cubnetwork.com.            IN  A

;; ANSWER SECTION:
cubnetwork.com.     10447   IN  A   50.22.185.177

;; AUTHORITY SECTION:
.           15116   IN  NS  f.root-servers.net.
.           15116   IN  NS  k.root-servers.net.
.           15116   IN  NS  c.root-servers.net.
.           15116   IN  NS  g.root-servers.net.
.           15116   IN  NS  e.root-servers.net.
.           15116   IN  NS  j.root-servers.net.
.           15116   IN  NS  h.root-servers.net.
.           15116   IN  NS  m.root-servers.net.
.           15116   IN  NS  l.root-servers.net.
.           15116   IN  NS  b.root-servers.net.
.           15116   IN  NS  i.root-servers.net.
.           15116   IN  NS  d.root-servers.net.
.           15116   IN  NS  a.root-servers.net.

;; Query time: 9 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Oct 21 08:27:49 2014
;; MSG SIZE  rcvd: 259

Terlihat bukan perbedaannya? Saat query pertama membutuhkan waktu 286 msec dan untuk yang query yang kedua hanya memerlukan waktu 9 msec.

Konfigurasi Master NameServer

Sekarang kita akan membuat dns server dengan domain cubnetwork.local. Tentu anda bertanya-tanya kenapa saya menggunakan .local, kenapa tidak menggunakan Top Level Domain (TLD) saja seperti .com, org, dll.

Itu karena untuk menghindari kesalahan apabila domain tersebut sudah ada di internet, kita juga bisa menggunakan reserved domain seperti .test, .example, .invalid atau .localhost untuk membuat dns server lokal (lengkapnya: http://tools.ietf.org/html/rfc2606).

Karena kita akan membangun dns server lokal, maka kita membuat forward zone dan reverse zone didalam file named.conf.local. Berikut isi file yang ditambahkan kedalam file named.conf.local.

zone "cubnetwork.local" {
        type master;
        file "/etc/bind/db.cubnetwork.local";
};

zone "7.168.192.in-addr.arpa" {
        type master;
        notify no;
        file "/etc/bind/db.192";
};

Konfigurasi File Forward Zone

Fungsi dari Forward Zone adalah mengkonversi nama domain ke alamat IP. Kita buat terlebih dahulu file db.cubnetwork.local sesuai dengan konfigurasi pada file named.conf.local.

# cd /etc/bind/
# cp db.local db.cubnetwork.local

Dan ubah isi file db.cubnetwork.local menjadi seperti dibawah ini.

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns.cubnetwork.local. admin.cubnetwork.local. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.cubnetwork.local.
@       IN      MX      10      mail.cubnetwork.local.

ns      IN      A       192.168.7.10
www     IN      A       192.168.7.20
mail    IN      A       192.168.7.20
printer IN      A       192.168.7.30

Catatan: untuk nilai Serial sebaiknya diganti dan ditambah 1 setiap melakukan perubahan pada file db.cubnetwork.local karna biasanya DNS Server menyimpan informasi zona berdasarkan nilai Serial.

Ini berguna jika ns.cubnetwork.local menjadi Primary DNS Server (Master), ketika terjadi perubahan maka Secondary DNS Server (Slave) akan melakukan update atau perubahan. Selama nilai Serial Primary DNS tidak berubah, maka Secondary DNS tidak akan melakukan update dan cache tidak berubah.

Konfigurasi File Reverse Zone

Fungsi dari Reverse Zone adalah mengkonversi alamat IP ke nama domain, selain itu reverse zone juga berguna untuk mail server agar email yang dikirim tidak dianggap spam apabila nama domain menunjuk alamat IP yang sesuai dengan mail server tersebut. Kita buat juga file reverse zone yang sesuai dengan konfigurasi didalam named.conf.local.

# cd /etc/bind/
# cp db.127 db.192

Dan ubah isi dari file db.192 menjadi seperti dibawah ini.

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns.cubnetwork.local. admin.cubnetwork.local. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.

10     IN      PTR     ns.cubnetwork.local.
20     IN      PTR     www.cubnetwork.local.
20     IN      PTR     mail.cubnetwork.local.
30     IN      PTR     printer.cubnetwork.local.

Note: Jangan lupa untuk mengganti dan menambahkan nilai Serial setiap melakukan perubahan pada file konfigurasi.

Pengujian Konfigurasi BIND9

Perintah berikut untuk menguji konfigurasi semua master zone yang ada dalam file named.conf

# named-checkconf -z

Perintah berikut untuk menguji forward zone dan reverse zone.

# named-checkzone cubnetwork.local db.cubnetwork.local
# named-checkzone 7.168.192.in-addr.arpa db.192

Jika tidak ada error, maka konfigurasi dns server debian 7 yang dilakukan sudah benar.

Pengujian DNS Server di Client

Untuk pengujiannya kita ganti dulu dns resolvernya agar saat melakukan query melewati dns server yang sudah kita bangun. Kebanyakan linux untuk menggunakan name server tertentu bisa didefinisikan didalam file /etc/resolv.conf.

# nano /etc/resolv.conf

search ns.cubnetwork.local
domain ns.cubnetwork.local
nameserver 192.168.7.10

Selanjutnya kita bisa menggunakan perintah dig atau nslookup. Berikut contoh penggunaan perintah nslookup.

Perintah untuk melihat pada alamat IP manakah ns.cubnetwork.local.

# nslookup ns.cubnetwork.local
# dig ns.cubnetwork.local

Perintah dibawah ini untuk melihat domain mana saja yang menunjuk ke alamat IP tersebut.

# nslookup 192.168.7.10
# dig -x 192.168.7.10

hazmi

Orangnya santai tapi rajin belajar. Selalu penasaran sama segala hal, apalagi kalau tentang doi :) Founder dari cubnetwork.

Leave a Reply