Saturday, 25 May 2019

[LAB 2][Debian] - Instalasi dan Konfigurasi DNS Server


DNS Server adalah server yang memberi layanan penerjemahan domain ke IP Address. Pendahulu DNS adalah file hosts, Cara kerjanya sama seperti DNS, yakni menerjemahkan domain ke IP, namun yang membedakan ialah cakupan pelayanan translasi. Jika hosts hanya melayani penerjamahan ke komputer lokal (Tunggal), maka DNS Server dapat melayani penerjemahan secara massal dari atau ke banyak komputer.
Karena kelemahan hosts ini, setiap ada domain baru maka setiap komputer harus menambahkan domain tersebut ke file hosts untuk dapat mengakses domain tersebut. Berbeda dengan DNS yang mana jika terdapat domain baru, yang ditambahkan hanya DNS Server dan client hanya perlu terhubung dengan DNS Server agar dapat mengakses domain baru tersebut.

Mekanisme simple DNS ialah ketika kalian mengakses google.com pada url, client akan melakukan kontak terlebih dahulu ke dns server untuk mengetahui ip address dari server google. Setelah mendapatkan IP, barulah client dapat meminta halaman web langsung dari server google, dan terjadilah kontak antara client dan server google.

Apa manfaat dari DNS ini? Sangat membantu (pakai kuadrat pangkat kubik) untuk pengingatan identitas setiap komputer, semisal kita ingin membuka web Google Search, sangat sulit bukan jika kita harus mengingat ip address hanya untuk membuka web tersebut, belum lagi web lain seperti Facebook, Google, Blog infosapu, dan lainnya. Baguslah jika kita bisa mengingat IPv4 seperti 192.168.1.1, Lalu bagaimana jika IP nya IPv6 seperti 2001:0db8:85a3:0000:0000:8a2e:0370:7334, ah.. sudah pasti niat buka web jadi luntur :D

Sudah cukup pembukaannya, langsung To The Point saja min! Hmm, oke.

Dikarenakan saya tidak memiliki real device, maka saya menggunakan media virtualisasi berupa GNS3 dipadu dengan Virtualbox.

Pastikan kalian login sebagai akun root. Jika belum memiliki password untuk akun root, bisa melakukan cara ini,
  • Membuat password untuk akun root, dengan perintah sudo passwd
  • Meminjam hak akses root, dengan cara menyisipkan perintah sudo di awal setiap perintah yang ingin digunakan. Contoh : sudo apt update

Berikut ialah Topologi DNS Server yang saya buat

Kasus yang saya buat dalam mengerjakan DNS Server ialah sebagai berikut,
  • Client dapat mengakses Domain publik, jadi tidak hanya Domain lokal
  • Domain milik DNS Server diberi infosapu.id
  • Server B dipasang sub domain, misalnya smkbisa.infosapu.id

Server A Side

Instalasi DNS Server

Lakukan update repository serta install paket DNS Server
root@infosapu:~# apt update && apt install bind9

Atur Bind khusus untuk IPv4

Default nya bind dapat menerjemahkan kedua tipe IP, yakni IPv4 dan IPv6. Karena saya tidak menggunakan IPv6, maka bind saya khususkan untuk menerjemahkan IPv4. Edit konfigurasi bind9,
root@infosapu:~# nano /etc/default/bind9

Tambahkan "-4" pada akhir parameter. Maka akan terlihat seperti ini..
...
OPTIONS="-u bind -4"
Save lalu exit,

Mulai ulang servis bind untuk menerapkan perubahan yang sudah dibuat
root@infosapu:~# systemctl restart bind9

Konfigurasi DNS Server

Konfigurasi BIND memiliki beberapa file konfigurasi, dimulai dari main configuration (Konfigurasi utama) yakni named.conf. Alasan dinamakan named.conf karena kependekan dari servis BIND itu sendiri (domain name daemon), Kita mulai dengan konfigurasi Option File

Konfigurasi Option File

Dalam konfigurasi ini, kita akan buat DNS Server dapat meneruskan permintaan domain publik dari client. Dengan kata lain, meski client hanya terhubung dengan DNS Server lokal milik kita, client tetaplah dapat mengakses domain publik (Internet). Uncomment teks berikut pada /etc/bind/named.conf.options
...
        // forwarders {
        //      0.0.0.0;
        // };
...
Sehingga menjadi,
...
        forwarders {
                8.8.8.8;
                8.8.4.4;
        };
...
Save lalu exit.

Konfigurasi Local File

Kita akan menambahkan deklarasi domain yang akan digunakan pada server. Misalnya saya ingin membuat domain server infosapu.id. Tambahkan teks berikut pada /etc/bind/named.conf.local
...
// Forward Zone
zone "infosapu.id" {
        type master;
        file "/etc/bind/infosapu/fwd.zone";
};

// Reverse Zone
zone "4.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/infosapu/rev.zone";
};
Save lalu exit,
Pada bagian Reverse zone, di isi dengan network IP kalian, tapi dibalik. Contohnya pada kasus diatas saya menggunakan network 192.168.4.0/24. Jika kalian menggunakan network 192.168.4.0/16 maka akan menjadi "168.192.in-addr.arpa".

Membuat Forward Zone

Sesuaikan dengan direktori serta nama yang sudah diatur dalam Local file. Buat direktori terlebih dahulu
root@infosapu:~# mkdir /etc/bind/infosapu
Lalu copy base file ke direktori yang sudah dibuat,
root@infosapu:~# cd /etc/bind
root@infosapu:/etc/bind# cp db.local infosapu/fwd.zone
Oke, sekarang mari kita edit file yang sudah di copy
root@infosapu:~# nano /etc/bind/infosapu/fwd.zone
Maka akan terlihat isinya seperti ini,
;
; 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

Ganti teks berwarna hijau dengan domain anda, lalu beri comment (;) pada teks yang saya tandai dengan warna oren. Maka akan menjadi seperti ini,
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     infosapu.id. root.infosapu.id. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
;@      IN      NS      localhost.
;@      IN      A       127.0.0.1
;@      IN      AAAA    ::1

Selanjutnya tambahkan NS records agar domain milik server dapat dikenali,
; Name servers - NS Records
        IN      NS      infosapu.id.

Tambahkan juga A record untuk server, isi dengan domain serta ip address server kalian
; Name servers - A records
infosapu.id.    IN      A       192.168.4.1

Oke, dengan NS dan A record, sekarang server sudah dapat dikenali. Selanjutnya tambahkan A Record untuk Server B, simpel nya kita akan mendaftarkan domain smkbisa.infosapu.id untuk Server B.
; Subdomain - A records
smkbisa.infosapu.id.    IN      A       192.168.4.2

Baiklah, semua konfigurasi pada Forward zone sudah dilakukan. Maka hasil konfigurasi finalnya akan seperti ini,
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     infosapu.id. root.infosapu.id. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
;@      IN      NS      localhost.
;@      IN      A       127.0.0.1
;@      IN      AAAA    ::1

; Name servers - NS Records
        IN      NS      infosapu.id.

; Name servers - A records
infosapu.id.    IN      A       192.168.4.1

; Subdomain - A records
smkbisa.infosapu.id.    IN      A       192.168.4.2

Membuat Reverse Zone

Sesuaikan juga letak file Reverse zone dengan konfigurasi yang sudah dibuat pada Local file. Karena direktori tadi sudah dibuat, maka kita hanya perlu menyalin base file ke direktori tersebut
root@infosapu:~# cd /etc/bind/
root@infosapu:/etc/bind# cp db.127 infosapu/rev.zone

Sekarang mari kita mulai edit isi yang ada pada file rev.zone
root@infosapu:~# nano /etc/bind/infosapu/rev.zone

Akan terlihat konfigurasi default filenya, seperti ini
;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
1.0.0   IN      PTR     localhost.

Ganti teks berwarna hijau dengan domain anda, lalu beri comment (;) pada teks yang saya tandai dengan warna oren. Sehingga akan menjadi seperti ini,
;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     infosapu.id. root.infosapu.id. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
;@      IN      NS      localhost.
;1.0.0  IN      PTR     localhost.

Selanjutnya tambahkan NS Records untuk server
; Name servers - NS Records
        IN      NS      infosapu.id.

Lalu tambahkan PTR Records, yang disesuaikan dengan Forward zone
; PTR Records
1       IN      PTR     infosapu.id.
2       IN      PTR     smkbisa.infosapu.id.
Pada teks yang saya warnai dengan oren. Itu merupakan bilangan oktaf ke 4 dari ip address yang didaftarkan pada domain tersebut. Kenapa yang di ambil oktaf ke 4? Karena network yang sudah di deklarasikan pada Local file merupakan network kelas C.

Selesai untuk konfigurasi Reverse zone, konfigurasi final nya terlihat seperti ini
;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     infosapu.id. root.infosapu.id. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
;@      IN      NS      localhost.
;1.0.0  IN      PTR     localhost.

; Name servers - NS Records
        IN      NS      infosapu.id.

; PTR Records
1       IN      PTR     infosapu.id.
2       IN      PTR     smkbisa.infosapu.id.

Cek konfigurasi pada Bind

Dalam bind, terdapat tools untuk mengecek apakah konfigurasi yang sudah kita buat sudah benar atau belum. Misalnya mengecek konfigurasi pada named.conf.local, maka lakukan command ini
root@infosapu:~# named-checkconf /etc/bind/named.conf.local
Jika tidak terdapat error, maka tidak akan ada output yang dikeluarkan. Jadi hanya akan mengeluarkan output jika terdapat error

Tidak hanya dengan konfigurasi, kita juga dapat mengecek apakah domain yang sudah didaftarkan itu sudah terdaftar atau belum,
root@infosapu:~# named-checkzone smkbisa.infosapu.id /etc/bind/infosapu/fwd.zone
/etc/bind/infosapu/fwd.zone:20: ignoring out-of-zone data (infosapu.id)
zone smkbisa.infosapu.id/IN: loaded serial 2
OK
atau untuk mengecek zona reverse zone
root@infosapu:~# named-checkzone 4.168.192.in-addr.arpa /etc/bind/infosapu/rev.zone
zone 4.168.192.in-addr.arpa/IN: loaded serial 1
OK

Ketika tidak ada error ketika kalian melakukan pengecekan, maka kalian harus melakukan restart pada service bind.

Restart Bind

Perintah untuk memulai ulang service bind :
root@infosapu:~# systemctl restart bind9

Pastikan status service bind nya sudah running, seperti ini
root@infosapu:~# systemctl status bind9
● bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-05-25 13:51:08 WIB; 1s ago
     Docs: man:named(8)
  Process: 2863 ExecStop=/usr/sbin/rndc stop (code=exited, status=0/SUCCESS)
 Main PID: 2868 (named)
    Tasks: 4 (limit: 4915)
   CGroup: /system.slice/bind9.service
           └─2868 /usr/sbin/named -f -u bind -4

May 25 13:51:08 infosapu named[2868]: managed-keys-zone: journal file is out of date: removing journal file
May 25 13:51:08 infosapu named[2868]: managed-keys-zone: loaded serial 2
May 25 13:51:08 infosapu named[2868]: zone 0.in-addr.arpa/IN: loaded serial 1
May 25 13:51:08 infosapu named[2868]: zone 4.168.192.in-addr.arpa/IN: loaded serial 1
May 25 13:51:08 infosapu named[2868]: zone 127.in-addr.arpa/IN: loaded serial 1
May 25 13:51:08 infosapu named[2868]: zone 255.in-addr.arpa/IN: loaded serial 1
May 25 13:51:08 infosapu named[2868]: zone localhost/IN: loaded serial 2
May 25 13:51:08 infosapu named[2868]: zone infosapu.id/IN: loaded serial 2
May 25 13:51:08 infosapu named[2868]: all zones loaded
May 25 13:51:08 infosapu named[2868]: running

Verifikasi

Setelah semuanya sudah dilakukan dan service bind sudah jalan, sekarang saat nya kita verifikasi apakah client dapat mengenali domain lokal (smkbisa.infosapu.id) dan domain publik atau tidak.

Atur ip address supaya terhubung dengan Server A, dan atur dns pada client dengan ip address Server A, seperti ini


Verifikasi Domain lokal
Sekarang mari kita tes ping ke domain infosapu.id, yakni domain milik Server A

Bisa dilihat, berhasil

Tidak hanya itu, sekarang mari kita tes ping ke domain milik Server B, yakni smkbisa.infosapu.id

Berhasil juga, selanjutnya verifikasi apakah client dapat mengakses domain publik

Verifikasi Domain publik
Untuk dapat terhubung ke domain publik, client harus terhubung terlebih dahulu dengan Internet (jaringan publik), maka dari itu Server A harus melakukan konfigurasi firewall NAT. Mari verifikasi dengan mengakses domain google

Wah.. Berhasil juga.. Jadi seperti itulah sekiranya.

Penutup

Semoga tutorial yang saya berikan dapat bermanfaat bagi pembaca, terutama bagi diri saya sendiri. Jika terdapat kesulitan dalam menerapkan hal diatas, jangan sungkan untuk menanyakan nya di kolom komentar..

Terimakasih dan sampai jumpa dilain post..! :D

Load comments