Wednesday, February 1, 2017

Konfigurasi BIND9 untuk Domain Authority (Authoritative-Only DNS) di Local Network

  No comments
Assalamu'alaikum Wr. Wb.

a. Pengertian
DNS atau Domain Name System atau Sistem Penamaan Domain, adalah sebuah sistem yang menyimpan, mengontrol dan menerjemahkan sebuah Nama Domain menjadi Internet Protocol Address atau sebaliknya. DNS bekerja pada Protokol UDP Port 53.

Sedangkan BIND (Berkley Internet Name Domain) sendiri adalah salah-satu aplikasi DNS Server Open Source yang pertama kali dibuat pada tahun 1980-an oleh 4 orang siswa dari Universitas California. Dan mulai 2009 BIND dikembangkan oleh Internet Systems Consortium (ISC) dan versi BIND yang paling baru adalah BIND10

b. Latar Belakang
Dengan kemampuan manusia yang sulit untuk mengingat sebuah Internet Protocol Address, terlebih IPv6 yang mempunyai Alamat yang sangat panjang maka dipakailah Sistem Penamaan Domain ini yang dapat menerjemahkan sebuah nama menjadi IP ataupun sebaliknya.

c. Maksud dan Tujuan
Tujuan daripada DNS ini sendiri adalah untuk memudahkan Manusia dalam mengingat suatu alamat Host agar lebih mudah untuk mengaksesnya, yaitu dengan Nama Domain tidak dengan Alamat IP.

d. Jangka Waktu
Perkiraan waktu untuk melakukan konfigurasi ini +- 1 Jam

e. Alat dan Bahan
1. Aplikasi DNS Server BIND9
2. (Opsional) Dua buah Server, bisa berupa Fisik maupun Virtual
3. Distro Linux (Distro Server, Debian Prefered)

f. Langkah Kerja
Kita akan melakukan konfigurasi DNS Server BIND9 sebagai Authoritative-Only DNS dengan Konfigurasi sederhana yang akan kita pakai adalah sebagai berikut:



*Note: Semua perintah yang digunakan disini memerlukan akses level Super User, jadi pastikan teman-teman dapat memiliki akses tersebut dengan sudo ataupun login ke akun Root

Langkah-langkah:
1. Login ke Server Pertama yang akan dijadikan Master DNS Server. Bisa melalui beberapa cara, namun saya sarankan melalui SSH, karena lebih fleksibel menurut saya.

2. Konfigurasi Hosts untuk menyesuaikan Nama Domainnya nanti.
~# nano /etc/hosts

Ubah:
192.168.207.1 : Menjadi IP Server tersebut
ns1.smkn1pedan.id : Menjadi Full Hostname serta FQDN
ns1 : Ubah menjadi Hostname Server tersebut

Setelah diubah silahkan Save dengan menekan CTRL+X lalu y

3.Sesuaikan Hostname agar sama dengan yang dikonfigurasikan di /etc/hosts.
~# nano /etc/hostname
Ubah isinya sesuai dengan Hostname yang sudah kita setting, kemudian Reboot untuk memuat konfigurasi baru Hostnamenya atau mudahnya lakukan perintah berikut:
~# hostname -F /etc/hostname
4. Setelah Hostname sudah diubah, teman-teman dapat langsung menginstal BIND9 dan komponen tambahannya:
~# apt update
~# apt install bind9 bind9utils dnsutils
5. Setelah instalasi BIND selesai, hal yang pertama yang akan kita lakukan adalah mensetting agar BIND berjalan pada IP Versi 4 karena disini kita hanya akan menggunakan IPv4. File yang akan kita konfigurasi disini adalah file bind9 yang terletak di /etc/default
~# nano /etc/default/bind9
# run resolvconf?
RESOLVCONF=no

# startup options for the server
OPTIONS="-4 -u bind"
Tambahkan "-4" tanpa tanda kutip.

6. Selanjutnya kita mulai menambahkan data Forward & Reverse Zone untuk Master DNS. File konfigurasi yang terkait dengan ini adalah named.conf.local yang terletak di folder /etc/bind
~# cd /etc/bind
/etc/bind # nano named.conf.local
Tambahkan dan sesuaikan baris berikut:
// Data untuk Forward Zone, Ubah "smkn1pedan.id"
// dan IP allow-transfer menyesuaikan
// konfigurasi teman-teman

zone "smkn1pedan.id" {
        type master;
        file "/etc/bind/db.smkn1pedan.id";
        allow-transfer { 192.168.207.2; };
};


// Data untuk Reverse Zone, Ubah konfigurasi
// menyesuaikan dengan milik teman-teman

zone "168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192";
        allow-transfer { 192.168.207.2; };
};
*Info:
Untuk Reverse Zone, konfigurasi "168.192.in-addr.arpa" bukanlah sembarang penamaan. Penamaan dari Reverse Zone ini akan mempengaruhi bagaimana DNS bekerja memproses permintaan Reverse dan Forward Zone. Serta Konfigurasi ini berperan penting bagi DNS untuk melakukan Lookup Host yang sesuai dengan permintaan.

Jadi mengenai Reverse Zone, "168.192.in-addr.arpa". Sesuai dengan penamaannya Reverse, sehingga Konfigurasi memang dibuat Terbalik.

*ps: Ini hanya asumsi saya, sehingga saya sangat menerima masukan mengenai ini:
Saya belum mengerti betul tetapi karena konsep penamaan Nama Domain yang semakin ke Kiri maka nama tersebut akan semakin Spesifik atau Unique. Sedangkan IP Address semakin ke Kanan maka IP tersebut semakin Spesifik. Mungkin tujuan daripada Reverse Zone adalah untuk menyamakan kedua hal tersebut.

7. Kemudian kita akan mengkonfigurasi bagaimana BIND akan beroperasi, file yang terkait dengan ini adalah file named.conf.options yang juga terletak di /etc/bind
/etc/bind # nano named.conf.options
Ubah konfigurasinya dengan menambahkan:
options {
        directory "/var/cache/bind";
        recursion no;
        allow-transfer { none; };

        dnssec-validation auto;

        auth-nxdomain no;
        listen-on-v6 { none; };
};
Kenapa recursion no? Jangan lupa, kita membuat DNS Server dengan konfigurasi Authoritative-Only. Yang mana konfigurasi ini hanya akan merespon kepada Client yang meminta data mengenai domain yang kita setting. Dengan kata lain, apabila Server tidak memiliki data mengenai request yang diberikan, maka Authoritative Server akan memberikan pesan error atau melempar request tersebut ke Server DNS lain (contohnya ke Recursive Server atau malah menuju ke Root DNS untuk melakukan Lookup dari yang paling atas)

8. Setelah itu kita akan membuat masing-masing database mengenai Record dari masing-masing zone. Disini kita akan mencontoh file konfigurasi yang sudah ada sebelumnya. File yang akan kita contoh adalah db.local dan db.127.
/etc/bind # cp db.local db.smkn1pedan.id
/etc/bind # cp db.127 db.192
9. Kemudian kita konfigurasi file-file tersebut. Kita akan mulai dengan mengkonfigurasi Forward Zone yaitu db.smkn1pedan.id.
/etc/bind # nano db.smkn1pedan.id
Edit dan sesuaikan seperti berikut ini:
Untuk Value dari Serial, silahkan isi sesuai Standar Internasional yaitu YYYYMMDD atau Tahun Bulan Tanggal dari pembuatan Zone tersebut. Jangan lupa untuk setiap pengubahan, value dari Serial harus dinaikkan satu digit. Oleh karena itu akan lebih mudah apabila selain dengan YYYYMMDD kita tambahkan juga 2 Digit Angka untuk Version Control seperti dibawah. 
$TTL    604800
@       IN      SOA     smkn1pedan.id.  root.smkn1pedan.id. (
                        2017020401      ; Serial
                                604800      ; Refresh
                                  86400      ; Retry
                              2419200      ; Expire
                                604800 )    ; Negative Cache TTL

; NS Record
@       IN      NS      ns1.smkn1pedan.id.
@       IN      NS      ns2.smkn1pedan.id.

; A Record untuk NS
ns1     IN      A       192.168.207.1
ns2     IN      A       192.168.207.2

; A Record untuk Subdomain Lainnya
www     IN      A       192.168.200.1
pxvm    IN      A       192.168.199.1
Perhatikan tanda dot (.) diakhir record!! Yang mana tanda dot tersebut artinya adalah Root Domain. Hanya sebuah titik namun apabila terlupakan bisa menjadi kesalahan yang cukup fatal namun sepele, karena dalam beberapa kasus BIND tidak akan mau bekerja apabila konfigurasi belum benar.

10. Selanjutnya kita konfigurasi Reverse Zone, yaitu db.192
/etc/bind # nano db.192
Edit dan sesuaikan konfigurasinya:
$TTL    604800
@       IN      SOA     smkn1pedan.id.  root.smkn1pedan.id. (
                        2017020402      ; Serial
                                604800      ; Refresh
                                  86400      ; Retry
                              2419200      ; Expire
                                604800 )    ; Negative Cache TTL

; Data NS Record
; Isi sama seperti di Forward Zone
@       IN      NS      ns1.smkn1pedan.id.
@       IN      NS      ns2.smkn1pedan.id.

; Pointer (PTR) Record
; Reverse IP <space> IN <space> NS <space> Nama Domain

; PTR untuk Nameserver
1.207   IN      PTR     ns1.smkn1pedan.id.
2.207   IN      PTR     ns2.smkn1pedan.id.

; PTR untuk Subdomain lain
1.200   IN      PTR     www.smkn1pedan.id.
1.199   IN      PTR     pxv.smkn1pedan.id.
Nah disinilah bagaimana konfigurasi dari Reverse Zone disini db.192 dengan yang ada di named.conf.local sebelumnya saling berkaitan. Karena Reverse Zone disini seperti Address Pool yang akan dibaca oleh BIND untuk melakukan Resolving Domain >< IP.

Contohnya disini pada konfigurasi named.conf.local saya menggunakan "168.192.in-addr.arpa". Teman-teman sudah bisa menebaknya? Yap, dengan 168.192 maka Pool yang akan dibaca oleh BIND adalah 192.168.0.0, dimana 0 yang pertama adalah IP Segmen dan yang kedua adalah IP Host.

Mengapa saya mensetting seperti ini? Coba lihat konfigurasi saya, Saya menggunakan 3 Segmen IP berbeda untuk Address (A) Record dari DNS ini. Yaitu 207, 200, dan 199, tentu tidak mungkin bukan apabila saya menambahkan Reverse Zone lagi untuk masing-masing segmen IP? Nah untuk itulah saya melakukannya.

11. Apabila sudah, silahkan lakukan pengecekan Syntax Konfigurasi sebelum melakukan Restart BIND. Caranya adalah:
/etc/bind # named-checkconf
 # Apabila tidak mengeluarkan Output apapun maka Secara Syntax konfigurasi kita sudah benar.
/etc/bind # named-checkzone www.smkn1pedan.id db.smkn1pedan.id
# Apabila mengeluarkan output Zone Loaded dan OK maka Data untuk Record tersebut sudah benar, untuk memastikan silahkan cek satu persatu Record yang sudah kita buat

12. Setelah itu kita Restart BIND dan lakukan Monitoring dari Service BIND untuk mengecek apakah terdapat error atau tidak
/etc/bind # service bind9 restart
/etc/bind # tail -f /var/log/syslog
# Apabila terdapat All Zones Loaded dan Running serta tidak ada pesan Error ataupun Warning maka dapat kita pastikan BIND sudah berjalan dan dapat digunakan

Konfigurasi untuk Master DNS sudah selesai! Selanjutnya kita setting Slave DNS untuk mem-backing apabila terjadi sesuatu dengan Master DNS. Juga karena standard untuk Nameserver adalah minimal ada 2 Server maka kita akan membuatnya sekalian.

13. Untuk Slave DNS, lakukan Hal-hal dari Nomor 1 sampai 5 seperti diatas namun juga dengan penyesuaian.

14. Apabila sudah silahkan buka Konfigurasi BIND named.conf.options dan konfigurasikan seperti Master DNS diatas

15. Kemudian disini adalah bagian yang berbeda, yaitu named.conf.local.
Buka file tersebut dan konfigurasikan menyesuaikan Server teman-teman
// Sesuaikan IP untuk mengarah
// ke Master DNS teman-teman

zone "smkn1pedan.id" {
        type slave;
        file "db.smkn1pedan.id";
        masters { 192.168.207.1; };
};

zone "168.192.in-addr.arpa" {
        type slave;
        file "db.192";
        masters { 192.168.207.1; };
};
Mengapa untuk file kita tidak memakai Absolute Path? karena kita tidak tahu pasti dimana BIND akan meletakkan File Konfigurasi yang nantinya akan kita terima dari Master DNS.

16. Setelah itu kita Restart BIND untuk menerima Konfigurasi Zone dari Master DNS kita. Dan juga lakukan tail ke /var/log/syslog sama seperti diatas untuk mengecek apakah ada Error atau Miskonfigurasi atau tidak. Apabila tidak, selamat! DNS Server teman-teman sudah dapat digunakan. Teman-teman tinggal mengedit dan menambahkan Master dan Slave DNS teman-teman ke List DNS Server di Resolver masing-masing.

Itulah langkah-langkah untuk mensetting BIND9 dengan konfigurasi Authoritative-Only!

g. Referensi
Wikipedia - BIND
Internet Systems Consortium (ISC) - BIND 10
DigitalOcean - How To Configure Bind as an Authoritative-Only DNS Server on Ubuntu 14.04

h. Kesimpulan
Dengan diterapkannya Sistem Penamaan Domain ini sudah pasti akan sangat membantu manusia dalam mengingat sebuah Alamat Komputer dengan cara mengingat namanya, bukan mengingat kombinasi dari angka-angka Alamat IP.

Mungkin cukup sekian yang dapat saya bagikan, apabila terdapat kesalahan saya mohon koreksinya karena saya juga belum terlalu paham mengenai DNS. Semoga bermanfaat bagi teman-teman semua.
Dan seperti biasa Terima Kasih!
Wassalamu'alaikum Wr. Wb.

No comments :

Post a Comment