--- --- DNS Server (BIND9) di Ubuntu 18.04 --- ---
---[00] Pendahuluan---
Pada tutorial ini, kita akan membangun DNS Server menggunakan Ubuntu 18.04, sehingga client dapat mengakses domain:
(misal) 'julkanaya.id' tanpa harus menggunakan alamat IP-nya, tapi langsung menggunakan nama domain.
Nanti setelah berhasil, 'ping 192.168.1.215' dapat diganti dengan:
$ ping julkanaya.id
Atau jika ada server web (situs) 'julkanaya.id', dapat diakses dengan memanggil nama domainnya:
http://julkanaya.id
Kita mulai dengan memasang Ubuntu 18.04 di VirtualBox.
---[01] Penginstalan Ubuntu 18.04---
Seperti pada pada video "Installing Ubuntu 18.04.02 to Simple Flask Web Application"
(https://www.youtube.com/watch?v=jDkdPe4WUKo), instal Ubuntu (sebagai guest-os di VirtualBox) dengan kebutuhan yg sesuai
dengan ketersediaan spesifikasi komputer yang digunakan.
Jika RAM terbatas, bisa memberikan ukuran RAM ke guest-os: 256 s.d 512 MB.
---[02] Matikan guest-os---
Setelah penginstalan Ubuntu 18.04 selesai dilakukan, lakukukan:
1. Login sebagai user yang sudah dibuat saat instalasi, 2. Matikan guest-os:
$ sudo shudown -h now
---[03] Tambahkan Dua Perangkat Jaringan (enp0s8 dan enp0s9)---
Setelah guest-os dipastikan non-aktif, tambahkan 2 perangkat jaringan baru:
a. Adaptor 2 sebagai: "Adaptor Hanya-host" atau "Host-only adaptor", dan b. Adaptor 3 sebagai: "Adaptor Ter-bridge" atau "Bridged adaptor".
---[04] Properti IPv4 untuk enp0s8 dan enp0s9--- 1. Aktifkan kembali guest-os.
2. Login.
3. Modifikasi berkas '/etc/netplan/50-cloud-init.yaml' dengan menggunakan program penyunting-teks: "vim".
Lakukan:
$ sudo vim /etc/netplan/50-cloud-init.yaml
Modifikasi hingga isinya seperti (mulai dengan menekan tombol: 'i') : network:
ethernets:
enp0s3:
addresses: []
dhcp4: true nameservers:
addresses: [192.168.1.215]
enp0s8:
addresses: [192.168.56.215/24]
enp0s9:
addresses: [192.168.1.215/24]
version: 2
4. Simpan dengan menekan tombol: 'Esc', lalu: ':' 'w' 'q' 'Enter' 5. Aktifkan dengan menjalankan:
$ sudo netplan apply
6. Jika tidak ada pesan galat/error, periksa hasil modifikasi di atas dengan perintah:
$ ip a s enp0s8 Contoh keluaran:
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:eb:90:12 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.215/24 brd 192.168.56.255 scope global enp0s8 valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:feeb:9012/64 scope link valid_lft forever preferred_lft forever
$ ip a s enp0s9 Contoh keluaran:
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:55:33:e4 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.215/24 brd 192.168.1.255 scope global enp0s9 valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe55:33e4/64 scope link valid_lft forever preferred_lft forever
---[05] Login dari komputer Host menggunakan PuTTY---
1. Kita lakukan 'remote server', login ke guest-host (server Ubuntu) dari komputer Host menggunakan PuTTY,
seperti yang didemokan di video sebelumnya: "Installing Ubuntu 18.04.02 to Simple Flask Web Application"
(https://www.youtube.com/watch?v=jDkdPe4WUKo)
2. Di video ini, saya melakukan login dari terminal bawaan Linux.
---[06] Memasang Paket DNS Server---
1. Setelah berhasil melakukan login dari PuTTY, selanjutnya adalah memutakhiran basis-data apt:
$ sudo apt update 2. Instal paket DNS Server:
$ sudo apt install bind9 bind9utils bind9-doc
3. Tambahkan baris di bawah ini ke berkas '/etc/default/bind9' (pergunakan program 'vim' seperti sebelumnya):
OPTIONS="-u bind -4"
4. Jalankan-ulang layanan dns-server:
$ sudo systemctl restart bind9
5. Pastikan layanan sudah aktif tanpa ada galat/error:
$ sudo systemctl status bind9 Contoh keluaran:
...
Active: active (running) ...
6. Jika sudah "active (running)", maka tahapan ini berhasil. Lanjutkan ke tahapan berikutnya.
---[07] Mengonfigurasi File Pengaturan BIND Local---
1. Modifikasi (pergunakan 'vim') isi berkas '/etc/bind/named.conf.local' sehingga berisi seperti di bawah ini:
zone "julkanaya.id" { type master;
file "/var/lib/bind/db.julkanaya.id";
};
zone "1.168.192.in-addr.arpa" { type master;
file "/var/lib/bind/db.192.168.1";
};
---[08] Membuat File 'Forward Zone'---
File ini merupakan 'record DNS' saat terjadi lookup DNS, yaitu saat klien yang melakukan permintaan (query) nama domain
(misal: www.julkanaya.id) ke DNS Server ini, DNS Server akan membaca berkas 'Forward Zone' berikut untuk mendapatkan
(resolve) alamat IP dari 'www.julkanaya.id'.
1. Agar akurat, buat duplikasi berkas '/etc/bind/db.local' ke '/etc/bind/zones/db.julkanaya.id':
$ sudo cp /etc/bind/db.local /etc/bind/zones/db.julkanaya.id
2. Modifikasi berkas '/etc/bind/zones/db.julkanaya.id' sehinga isinya menjadi:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.julkanaya.id. admin.julkanaya.id. ( 3 ; Serial
604800 ; Refresh 86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.julkanaya.id.
julkanaya.id. IN A
192.168.1.215
ns1.julkanaya.id. IN A
192.168.1.215
www.julkanaya.id. IN CNAME
ns1.julkanaya.id.
Pergunakan program 'vim' kembali, jika sudah selesai, simpan, lalu keluar dari 'vim'.
---[09] Membuat File 'Reverse Zone'--- 1. Buat duplikasi berkas '/etc/bind/db.127' ke '/etc/bind/zones/db.192.168.1':
$ sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.168.1
2. Modifikasi berkas '/etc/bind/zones/db.192.168.1' sehinga isinya menjadi:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.julkanaya.id. admin.julkanaya.id. ( 3 ; Serial
604800 ; Refresh 86400 ; Retry 2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.julkanaya.id.
215 IN PTR ns1.julkanaya.id.
Pergunakan program 'vim' kembali, jika sudah selesai, simpan, lalu keluar dari 'vim'.
---[10] Pemeriksaan Konfigurasi BIND---
1. Periksa sintaks semua berkas konfigurasi DNS Server di atas dengan cara:
$ sudo named-checkconf
Jika tidak ada pesan apapun, maka sintaks konfigurasi sudah tepat.
2. Periksa kedua file zone di atas dengan cara:
[a] $ sudo named-checkzone julkanaya.id /var/lib/bind/db.julkanaya.id
Keluaran (yang tepat):
zone julkanaya.id/IN: loaded serial 3 OK
[b]
$ sudo named-checkzone 1.168.192-in.addr.arpa /var/lib/bind/db.192.168.1
Keluaran (yang tepat):
zone 1.168.192-in.addr.arpa/IN: loaded serial 3 OK
3. Pastikan keluaran dari ketiga perintah di atas tepat (OK), dan tidak ada pesan galat/error.
---[11] Pengujian DNS Server dari Klien---
Jika sudah tepat, di sisi klien dapat melakukan 'ping' , 'host', atau 'dig' terhadap nama domain 'julkanaya.id' ini:
[a]
$ host www.julkanaya.id Contoh keluran (yang tepat):
www.julkanaya.id is an alias for ns1.julkanaya.id.
ns1.julkanaya.id has address 192.168.1.215
[b]
$ dig @192.168.1.215 www.julkanaya.id
Contoh keluran (yang tepat):
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> @192.168.1.215 www.julkanaya.id
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1189
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 826b596faaec7525ff76c4095cd2622135e31b2ed57bd1b5 (good)
;; QUESTION SECTION:
;www.julkanaya.id. IN A
;; ANSWER SECTION:
www.julkanaya.id. 604800 IN CNAME ns1.www.julkanaya.id.
ns1.julkanaya.id. 604800 IN A 192.168.1.215
;; AUTHORITY SECTION:
julkanaya.id. 604800 IN NS ns1.www.julkanaya.id.
;; Query time: 0 msec
;; SERVER: 192.168.1.215#53(192.168.1.215)
;; WHEN: Wed May 08 04:59:13 UTC 2019
;; MSG SIZE rcvd: 129
[c]
$ ping www.julkanaya.id
Jika ada 'reply' maka DNS Server sudah bekerja seperti seharusnya.