DIT.web.id

sementara biarlah begini...

Integrasikan DNS Server Menggunakan BIND di Linux CentOS

Aug 232010

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 email], 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.

undefined 

Intro

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 Google 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 begitu 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 tahu hanya bahwa aplikasi DNS adalah BIND [Berkeley Internet Name Domain]. Berangkat dari situ, mari kita mulai ekspedisi kali ini dengan instalasi BIND.

  1. Sambangi konsol Anda melalui sesi SSH dengan cara memanggil IP address-nya di port 22 [atau port lain jika sudah dilakukan kustomisasi], lalu lakukan validasi akunnya.
  2. Gunakan aplikasi penginstal Yum untuk mencari modul² yang berkaitan dengan DNS dengan perintah yum list available | grep bind diikuti penekanan tombol [Enter] di keyboard. 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 /]#
  3. 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. Jangan lupa sesuaikan nama modulnya jika sistem operasi Anda menggunakan arsitektur 64 bit.

    [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 /]#
  4. 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.
  5. 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 name server 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.. 
  6. 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 [ubahlah dit.web.id dengan nama domain Anda].

    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";
            };
  7. Langkah konfigurasi berikutnya adalah membuat file basis data berisi daftar name server TLD [Top Level Domain] dunia yang terbaru. File ini bernama db.cache dan berlokasi di /etc. Mengetikkan konten file basis data TLD bukanlah 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
  8. 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, misalnya nameserver 180.235.148.198 atau DNS milik Google.

    undefined

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, eksekusilah 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 belakang [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. Sing penting bermanfaat wae lah. Selamat mencoba.

 

There are no published comments.

New comment

Atom

morat-marit enterprise - since 2004