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.
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)
/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 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 .localhostuntuk 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 zonedidalam 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 filedb.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 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 nameserver 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
Tidak ada komentar:
Posting Komentar