Linux CentOS - Integrasikan DNS Server Menggunakan BIND
Halu, apa kabar semua
Lagi pening banget nih, kepala rasanya penuh banget, nda tau apaan aja
Mo tidur juga jadi susah. Daripada bengong, saya coba tuang artikel deh, mana tau bisa ngantuk. Bahasan kali ini saya angkat tema DNS server yang memegang peranan penting di dunia maya…
Intro
Seperti biasa sebelum melangkah ke inti bahasan, kita kenali dulu apa itu DNS. Ditulis dengan huruf kapital semua, pastinya merupakan singkatan dunk, yaitu Domain Name System. Jika didefinisikan ke dalam bahasa persatuan adalah sebuah layanan yang berkaitan dengan nama domain. Emang domain tu apaan sih dit? Beberapa mungkin masih ada yang bertanya begitu di tahap ini. Domain adalah sebuah nama berupa kata yang mewakili pengalamatan di dunia maya [aka internet].
Saat kita membuka sembarang browser, lalu memanggil nama domain dari sebuah situs, sebenarnya telah terjadi proses translasi dari kata menjadi IP address guna mengetahui letak situsnya. Hanya saja proses tersebut memang tidak kasat mata. Contoh lain yang sering kita lakukan adalah saat mengirimkan surat elektronik [aka mail], dimana alamat yang dituju juga mengandung nama domain, yaitu siapa@domain.apa. Itu artinya proses pengiriman mail memiliki alur pembacaan nama domain terlebih dahulu, setelah itu baru mencari akun mail yang dituju. Jadi…domain memang sangat² berperan penting di dunia maya.
DNS Server & Panduannya
Berkaitan dengan latar belakang pekerjaan yang sampai saat ini saya lakukan [dont complain bout it, its also part of my job dawg], maka mau nda mau, suka nda suka, saya harus memahami dan mampu melakukan instalasi DNS di sebuah server. Hal tersebut nda akan menjadi hal yang sulit jika server menggunakan cPanel, tetapi akan berbeda kondisinya jika Anda disodori sebuah linux kosongan yang hanya dimodali SSHD [Secure Shell Daemon].
Beberapa dari Anda mungkin pernah mengalami kondisi tersebut, entah karena tuntutan pekerjaan atau sekedar ingin belajar instalasi DNS di sistem linux. Adalah benar bahwa dari gogel bisa mendapatkan berjuta panduan untuk instalasi DNS, akan tetapi [nah ini…] yang saya alami malah panduan² tersebut justru membuat saya tambah bingung [Anda juga nda? hayo ngacung…]. Setelah membaca begitu banyak panduan, mulai dari bahasa inggris sampai bahasa persatuan, akhirnya saya ngantuk dan nda ngerti apa²
Mungkin memang cara belajar saya bukan membaca panduan, melainkan mencoba, gagal, analisa dan baru paham [sejauh ini gitu terus]. Rumusan lama kembali saya tempuh, yaitu instalasi DNS tanpa peta atau panduan apapun [lets hit some trees]
Instalasi DNS Server
Sebagai modal awal, saya dibekali Linux distro CentOS versi 5.X dengan akses root. Di tahapan ini yang saya tau hanya bahwa aplikasi DNS adalah BIND [Berkeley Internet Name Domain]. Berangkat dari situ, mari kita mulai ekspedisi kali ini dengan instalasi BIND.
- Sambangi konsol Anda melalui sesi SSH dengan cara memanggil IP address-nya di port 22 [default], lalu lakukan validasi akunnya.
- Gunakan aplikasi penginstal Yum untuk mencari modul² yang berkaitan dengan DNS dengan perintah yum list available | grep bind diikuti penekanan tombol [Enter] di kibor. Beberapa nama modul akan muncul di layar hitam Anda dan nda semuanya harus diintegrasikan ke sistem.
[root@jangkrik /]# yum list available | grep bind bind.i386 30:9.3.6-4.P1.el5_4.2 base bind-chroot.i386 30:9.3.6-4.P1.el5_4.2 base bind-devel.i386 30:9.3.6-4.P1.el5_4.2 base bind-libbind-devel.i386 30:9.3.6-4.P1.el5_4.2 base bind-libs.i386 30:9.3.6-4.P1.el5_4.2 base bind-sdb.i386 30:9.3.6-4.P1.el5_4.2 base bind-utils.i386 30:9.3.6-4.P1.el5_4.2 base kdebindings.i386 3.5.4-6.el5 base kdebindings-devel.i386 3.5.4-6.el5 base samba3x-winbind.i386 3.3.8-0.52.el5_5 updates samba3x-winbind-devel.i386 3.3.8-0.52.el5_5 updates system-config-bind.noarch 4.0.3-4.el5.centos base ypbind.i386 3:1.19-12.el5 base [root@jangkrik /]#
- Masih menggunakan bantuan Yum, lakukan instalasi nama² aplikasi di bawah ini untuk membangun DNS server dengan perintah yum -y install bind.i386 bind-devel.i386 bind-libbind-devel.i386 bind-libs.i386 bind-utils.i386 dan tunggu sampai proses instalasinya selesai.
[root@jangkrik /]# yum -y install bind.i386 bind-devel.i386 bind-libbind-devel.i386 bind-libs.i386 bind-utils.i386 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Setting up Install Process Parsing package install arguments Resolving Dependencies --> Running transaction check ---> Package bind-libbind-devel.i386 30:9.3.6-4.P1.el5_4.2 set to be updated ---> Package bind-devel.i386 30:9.3.6-4.P1.el5_4.2 set to be updated ---> Package bind-libs.i386 30:9.3.6-4.P1.el5_4.2 set to be updated ---> Package bind.i386 30:9.3.6-4.P1.el5_4.2 set to be updated --> Processing Dependency: policycoreutils for package: bind --> Processing Dependency: libdbus-1.so.3 for package: bind --> Processing Dependency: /usr/bin/perl for package: bind --> Processing Dependency: perl(Getopt::Std) for package: bind ---> Package bind-utils.i386 30:9.3.6-4.P1.el5_4.2 set to be updated --> Running transaction check ---> Package policycoreutils.i386 0:1.33.12-14.8.el5 set to be updated --> Processing Dependency: libsemanage >= 1.9.1-4.2 for package: policycoreutils --> Processing Dependency: audit-libs-python >= 1.1.4-3 for package: policycoreutils --> Processing Dependency: libsemanage.so.1(LIBSEMANAGE_1.0) for package: policycoreutils --> Processing Dependency: libselinux-python for package: policycoreutils --> Processing Dependency: libselinux-utils for package: policycoreutils --> Processing Dependency: libsemanage.so.1 for package: policycoreutils --> Processing Dependency: /usr/bin/diff for package: policycoreutils ---> Package perl.i386 4:5.8.8-32.el5_5.1 set to be updated ---> Package dbus-libs.i386 0:1.1.2-14.el5 set to be updated --> Processing Dependency: dbus = 1.1.2-14.el5 for package: dbus-libs --> Running transaction check ---> Package libselinux-utils.i386 0:1.33.4-5.5.el5 set to be updated --> Processing Dependency: libselinux = 1.33.4-5.5.el5 for package: libselinux-utils ---> Package libsemanage.i386 0:1.9.1-4.4.el5 set to be updated --> Processing Dependency: libsepol >= 1.15.2-2 for package: libsemanage ---> Package diffutils.i386 0:2.8.1-15.2.3.el5 set to be updated ---> Package dbus.i386 0:1.1.2-14.el5 set to be updated ---> Package libselinux-python.i386 0:1.33.4-5.5.el5 set to be updated ---> Package audit-libs-python.i386 0:1.7.17-3.el5 set to be updated --> Processing Dependency: audit-libs = 1.7.17-3.el5 for package: audit-libs-python --> Running transaction check ---> Package audit-libs.i386 0:1.7.17-3.el5 set to be updated ---> Package libsepol.i386 0:1.15.2-3.el5 set to be updated ---> Package libselinux.i386 0:1.33.4-5.5.el5 set to be updated --> Finished Dependency Resolution Dependencies Resolved ========================================================================================================================================================== Package Arch Version Repository Size ========================================================================================================================================================== Installing: bind i386 30:9.3.6-4.P1.el5_4.2 base 978 k bind-devel i386 30:9.3.6-4.P1.el5_4.2 base 2.8 M bind-libbind-devel i386 30:9.3.6-4.P1.el5_4.2 base 441 k bind-libs i386 30:9.3.6-4.P1.el5_4.2 base 857 k bind-utils i386 30:9.3.6-4.P1.el5_4.2 base 170 k Updating: audit-libs i386 1.7.17-3.el5 base 78 k libselinux i386 1.33.4-5.5.el5 base 76 k libsepol i386 1.15.2-3.el5 base 128 k Installing for dependencies: audit-libs-python i386 1.7.17-3.el5 base 79 k dbus i386 1.1.2-14.el5 base 235 k dbus-libs i386 1.1.2-14.el5 base 123 k diffutils i386 2.8.1-15.2.3.el5 base 210 k libselinux-python i386 1.33.4-5.5.el5 base 72 k libselinux-utils i386 1.33.4-5.5.el5 base 55 k libsemanage i386 1.9.1-4.4.el5 base 137 k perl i386 4:5.8.8-32.el5_5.1 updates 12 M policycoreutils i386 1.33.12-14.8.el5 base 619 k Transaction Summary ========================================================================================================================================================== Install 14 Package(s) Update 3 Package(s) Remove 0 Package(s) Total download size: 18 M Downloading Packages: (1/17): libselinux-utils-1.33.4-5.5.el5.i386.rpm | 55 kB 00:00 (2/17): libselinux-python-1.33.4-5.5.el5.i386.rpm | 72 kB 00:00 (3/17): libselinux-1.33.4-5.5.el5.i386.rpm | 76 kB 00:00 (4/17): audit-libs-1.7.17-3.el5.i386.rpm | 78 kB 00:00 (5/17): audit-libs-python-1.7.17-3.el5.i386.rpm | 79 kB 00:00 (6/17): dbus-libs-1.1.2-14.el5.i386.rpm | 123 kB 00:00 (7/17): libsepol-1.15.2-3.el5.i386.rpm | 128 kB 00:00 (8/17): libsemanage-1.9.1-4.4.el5.i386.rpm | 137 kB 00:00 (9/17): bind-utils-9.3.6-4.P1.el5_4.2.i386.rpm | 170 kB 00:00 (10/17): diffutils-2.8.1-15.2.3.el5.i386.rpm | 210 kB 00:00 (11/17): dbus-1.1.2-14.el5.i386.rpm | 235 kB 00:00 (12/17): bind-libbind-devel-9.3.6-4.P1.el5_4.2.i386.rpm | 441 kB 00:00 (13/17): policycoreutils-1.33.12-14.8.el5.i386.rpm | 619 kB 00:00 (14/17): bind-libs-9.3.6-4.P1.el5_4.2.i386.rpm | 857 kB 00:00 (15/17): bind-9.3.6-4.P1.el5_4.2.i386.rpm | 978 kB 00:00 (16/17): bind-devel-9.3.6-4.P1.el5_4.2.i386.rpm | 2.8 MB 00:00 (17/17): perl-5.8.8-32.el5_5.1.i386.rpm | 12 MB 00:00 ---------------------------------------------------------------------------------------------------------------------------------------------------------- Total 24 MB/s | 18 MB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Updating : libsepol [ 1/20] Updating : libselinux [ 2/20] Updating : audit-libs [ 3/20] Installing : audit-libs-python [ 4/20] Installing : libselinux-python [ 5/20] Installing : libselinux-utils [ 6/20] Installing : libsemanage [ 7/20] Installing : perl [ 8/20] Installing : diffutils [ 9/20] Installing : policycoreutils [10/20] Installing : bind-libs [11/20] Installing : dbus-libs [12/20] Installing : dbus [13/20] Installing : bind-devel [14/20] Installing : bind-libbind-devel [15/20] Installing : bind-utils [16/20] Installing : bind [17/20] Cleanup : libsepol [18/20] Cleanup : libselinux [19/20] Cleanup : audit-libs [20/20] Installed: bind.i386 30:9.3.6-4.P1.el5_4.2 bind-devel.i386 30:9.3.6-4.P1.el5_4.2 bind-libbind-devel.i386 30:9.3.6-4.P1.el5_4.2 bind-libs.i386 30:9.3.6-4.P1.el5_4.2 bind-utils.i386 30:9.3.6-4.P1.el5_4.2 Dependency Installed: audit-libs-python.i386 0:1.7.17-3.el5 dbus.i386 0:1.1.2-14.el5 dbus-libs.i386 0:1.1.2-14.el5 diffutils.i386 0:2.8.1-15.2.3.el5 libselinux-python.i386 0:1.33.4-5.5.el5 libselinux-utils.i386 0:1.33.4-5.5.el5 libsemanage.i386 0:1.9.1-4.4.el5 perl.i386 4:5.8.8-32.el5_5.1 policycoreutils.i386 0:1.33.12-14.8.el5 Updated: audit-libs.i386 0:1.7.17-3.el5 libselinux.i386 0:1.33.4-5.5.el5 libsepol.i386 0:1.15.2-3.el5 Complete! [root@jangkrik /]#
- Sampai tahap ini aplikasi yang dibutuhkan sudah terintegrasi ke sistem, maka langkah berikutnya tinggal konfigurasi² pendukung agar sistem nama domain di server bisa berfungsi semestinya. Berpindahlah ke /var/named untuk pembuatan file zona DNS.
[root@jangkrik /]# cd /var/named [root@jangkrik named]#
- Gunakan sembarang editor teks kegemaran Anda untuk membuat file zone DNS sesuai nama domain Anda. Sebagai contoh, diasumsikan nama domain yang ingin dibuat adalah dit.web.id dengan nama server [hostname] jangkrik.dit.web.id dan private nameserver yang ingin dibuat adalah heelflip.dit.web.id dan kickflip.dit.web.id. Nama file zona DNS yang dibuat adalah dit.web.id.db dan simaklah contoh zona DNS-nya di bawah ini.
; Zone file for dit.web.id $TTL 300 dit.web.id. 300 IN SOA heelflip.dit.web.id. siapa.domain.apa. ( 2010032506 ;Serial Number 300 ;refresh 7200 ;retry 3600000 ;expire 300 ;minimum ) dit.web.id. 300 IN NS heelflip.dit.web.id. dit.web.id. 300 IN NS kickflip.dit.web.id. dit.web.id. 300 IN A 180.235.148.41 localhost 300 IN A 127.0.0.1 dit.web.id. 300 IN MX 0 dit.web.id. mail 300 IN CNAME dit.web.id. www 300 IN CNAME dit.web.id. ftp 300 IN A 180.235.148.41 jangkrik 14400 IN A 180.235.148.41 heelflip 14400 IN A 180.235.148.41 kickflip 14400 IN A 180.235.148.42
Keterangan :
Ubahlah dit.web.id dengan nama domain Anda.
Ubahlah jangkrik dengan nama hostname Anda.
Ubahlah heelflip dengan nama private nameserver pertama Anda.
Ubahlah kickflip dengan nama private nameserver kedua Anda.
Ubahlah 180.235.148.41 dengan IP address pertama Anda.
Ubahlah 180.235.148.42 dengan IP address kedua Anda [jika ada].
Ubahlah siapa.domain.apa dengan akun mail Anda. Misal akun mail keftones14@yahoo.com, maka yang ditulis adalah keftones14.yahoo.com.. - Selesai dengan pembuatan file zona DNS, berikutnya berpindah ke /etc untuk membuat file konfigurasi BIND bernama named.conf. Gunakan kembali editor teks kegemaran Anda untuk membuat file tersebut dengan konten sebagai berikut.
options { directory "/etc"; pid-file "/var/run/named/named.pid"; }; zone "." { type hint; file "/etc/db.cache"; }; zone "dit.web.id" { type master; file "/var/named/dit.web.id.db"; };Keterangan : Ubahlah dit.web.id dengan nama domain Anda.
- Langkah konfigurasi berikutnya adalah membuat file basis data berisi daftar nameserver TLD [Top Level Domain] dunia yang terbaru. File ini bernama db.cache dan berlokasi di /etc. Mengetikkan konten file basis data TLD bukannlah hal yang menyenangkan jika dilakukan secara manual, karena berisi kode² yang njlimet dan banyak banget. Untuk itu, gunakanlah perintah dig untuk mempermudah langkah ini.
[root@jangkrik /]# dig @e.root-servers.net . ns > /etc/db.cache
- Langkah pamungkas di tahapan konfigurasi adalah mendefiniskan resolver sistem Anda. Resolver ini berupa file bertajuk resolv.conf yang bersemayam di /etc. Editlah file tersebut menggunakan editor teks favorit dan pastikan di dalamnya telah berisi IP address DNS server di jaringan Anda [contohnya seperti di bawah ini].
nameserver 180.235.148.198
Start The Engine
Usai dengan instalasi dan konfigurasi di atas, kini tiba saatnya untuk mengaktifkan sistem DNS di server Anda. Ladies and gentlement, start your engine!
Masih dari konsol, piculah perintah /usr/sbin/named -u named & untuk menjalankan daemon BIND di sistem Anda. Kok nda ada respon apa² dit? Malah balik ke prompt lagi abis pencet [Enter]? Mungkin Anda berpikir gitu dalam hati. Ya memang begitu, karena daemon bekerja di latar [background]. Tetapi untuk memeriksa hasilnya bisa melihat log sistem terbaru dengan perintah tail /var/log/message.
[root@jangkrik named]# tail /var/log/messages Aug 22 21:22:31 jangkrik named[3813]: using default UDP/IPv4 port range: [1024, 65535] Aug 22 21:22:31 jangkrik named[3813]: using default UDP/IPv6 port range: [1024, 65535] Aug 22 21:22:31 jangkrik named[3813]: listening on IPv4 interface lo, 127.0.0.1#53 Aug 22 21:22:31 jangkrik named[3813]: listening on IPv4 interface venet0:0, 180.235.148.99#53 Aug 22 21:22:31 jangkrik named[3813]: command channel listening on 127.0.0.1#953 Aug 22 21:22:31 jangkrik named[3813]: command channel listening on ::1#953 Aug 22 21:22:31 jangkrik named[3813]: zone dit.web.id/IN: loaded serial 2010032506 Aug 22 21:22:31 jangkrik named[3813]: running Aug 22 21:22:31 jangkrik named[3813]: zone dit.web.id/IN: sending notifies (serial 2010032506) [root@jangkrik named]#
Alternatif lain untuk mengaktifkan daemon DNS adalah dengan perintah service named start. Dengan perintah serupa, ubahlah parameter terakhir dengan restart untuk mengulang [reload] daemon BIND dan stop untuk menyudahi jalannya daemon BIND.
[root@jangkrik named]# service named start Starting named: [ OK ] [root@jangkrik named]#
Pemeriksaan DNS
Setelah mengenali dan mengintegrasikan DNS di sistem, kini server Anda sudah dapat dikenali secara global di dunia maya. Jika Anda juga sudah memfungsikan sistem sebagai web server, maka Anda sudah dapat menyimpan halaman situs dan dapat diakses melalui sembarang browser. Untuk memastikan nama domain Anda sudah dikenali secara global di dunia maya, lakukanlah pemeriksaan sederhana menggunakan dig.
[root@jangkrik /]# dig dit.web.id ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 <<>> dit.web.id ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32902 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;dit.web.id. IN A ;; ANSWER SECTION: dit.web.id. 300 IN A 180.235.148.41 ;; AUTHORITY SECTION: dit.web.id. 300 IN NS kickflip.dit.web.id. dit.web.id. 300 IN NS heelflip.dit.web.id. ;; Query time: 54 msec ;; SERVER: 180.235.148.198#53(180.235.148.198) ;; WHEN: Sun Aug 22 21:31:21 2010 ;; MSG SIZE rcvd: 90 [root@jangkrik /]#
Outro
Usai sudah ekspedisi kali ini untuk menguak misteri instalasi dan konfigurasi DNS di sistem Linux
Diharapkan artikel sederhana ini dapat menjadi panduan yang mudah dipahami dan tidak menyesatkan. Artikel ini juga sebagai jawaban dari rikues yang dilontarkan bung Daniy!
Sing penting bisa bermanfaat wae lah. Selamat mencoba…
seperti biasa, untuk meningkatkan kualitas artikel yang saya sajikan, Anda dapat menyampaikan opini mengenai artikel kali ini di bagian komentar pembaca. boleh berupa pertanyaan, kritik, masukkan, kekurangan, pujian sampai ejekan juga silakan
dengan begitu, semoga ke depannya saya bisa menyajikan artikel lain yang bermanfaat untuk semua. terima kasih…






Lagi pening banget nih, kepala rasanya penuh banget, nda tau apaan aja 










