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,
Berikut ialah Topologi DNS Server yang saya buat
Kasus yang saya buat dalam mengerjakan DNS Server ialah sebagai berikut,
Tambahkan "-4" pada akhir parameter. Maka akan terlihat seperti ini..
Mulai ulang servis bind untuk menerapkan perubahan yang sudah dibuat
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".
Ganti teks berwarna hijau dengan domain anda, lalu beri comment (;) pada teks yang saya tandai dengan warna oren. Maka akan menjadi seperti ini,
Selanjutnya tambahkan NS records agar domain milik server dapat dikenali,
Tambahkan juga A record untuk server, isi dengan domain serta ip address server kalian
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.
Baiklah, semua konfigurasi pada Forward zone sudah dilakukan. Maka hasil konfigurasi finalnya akan seperti ini,
Sekarang mari kita mulai edit isi yang ada pada file rev.zone
Akan terlihat konfigurasi default filenya, seperti ini
Ganti teks berwarna hijau dengan domain anda, lalu beri comment (;) pada teks yang saya tandai dengan warna oren. Sehingga akan menjadi seperti ini,
Selanjutnya tambahkan NS Records untuk server
Lalu tambahkan PTR Records, yang disesuaikan dengan Forward zone
Selesai untuk konfigurasi Reverse zone, konfigurasi final nya terlihat seperti ini
Tidak hanya dengan konfigurasi, kita juga dapat mengecek apakah domain yang sudah didaftarkan itu sudah terdaftar atau belum,
Ketika tidak ada error ketika kalian melakukan pengecekan, maka kalian harus melakukan restart pada service bind.
Pastikan status service bind nya sudah running, seperti ini
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.
Terimakasih dan sampai jumpa dilain post..! :D
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..
...Save lalu exit,
OPTIONS="-u bind -4"
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 FileKonfigurasi 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...Sehingga menjadi,
// forwarders {
// 0.0.0.0;
// };
...
...Save lalu exit.
forwarders {
8.8.8.8;
8.8.4.4;
};
...
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...Save lalu exit,
// 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";
};
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 dahuluroot@infosapu:~# mkdir /etc/bind/infosapuLalu copy base file ke direktori yang sudah dibuat,
root@infosapu:~# cd /etc/bindOke, sekarang mari kita edit file yang sudah di copy
root@infosapu:/etc/bind# cp db.local infosapu/fwd.zone
root@infosapu:~# nano /etc/bind/infosapu/fwd.zoneMaka 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 tersebutroot@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 RecordsPada 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.
1 IN PTR infosapu.id.
2 IN PTR smkbisa.infosapu.id.
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 iniroot@infosapu:~# named-checkconf /etc/bind/named.conf.localJika 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.zoneatau untuk mengecek zona reverse zone
/etc/bind/infosapu/fwd.zone:20: ignoring out-of-zone data (infosapu.id)
zone smkbisa.infosapu.id/IN: loaded serial 2
OK
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