Instalasi DNS Server

Langkah-langkah instalasi BIND

BIND merupakan salah satu aplikasi yang banyak digunakan untuk DNS server. Saat ini bind sudah mencapai versi 9.3.4. pada tutorial kali ini saya akan melakukan instalias bind dari source tarball. Dalam dunia unix mauoun linux, terdapat banyak macam paket. Pada Redhat, paket sendiri ada 2 macm , yaitu paket binary dari RPM dan paket tarball. Paket tarbal berekstensi tar.gz.

Dependensi Paket
Untuk melakukan instalasi Bind ini, ada paket-paket yag harus sudah terinstall terlebih dulu, yaitu :
Gcc
# rpm -qa | grep gcc
gcc-3.2.3-20
gcc-java-3.2.3-20
gcc-g77-ssa-3.5ssa-0.20030801.41
compat-gcc-7.3-2.96.122
gcc-c++-3.2.3-20
gcc-gnat-3.2.3-20
gcc-objc-3.2.3-20
gcc-c++-ssa-3.5ssa-0.20030801.41
gcc-java-ssa-3.5ssa-0.20030801.41
compat-gcc-c++-7.3-2.96.122
libgcc-ssa-3.5ssa-0.20030801.41
libgcc-3.2.3-20
gcc-g77-3.2.3-20
gcc-ssa-3.5ssa-0.20030801.41
gcc-objc-ssa-3.5ssa-0.20030801.41

Compatible c++
# rpm -qa | grep compat
compat-gcc-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-glibc-7.x-2.2.4.32.5

Paket glibc
# rpm -qa | grep glibc
glibc-devel-2.3.2-95.3
glibc-common-2.3.2-95.3
glibc-profile-2.3.2-95.3
glibc-utils-2.3.2-95.3
glibc-headers-2.3.2-95.3
glibc-kernheaders-2.4-8.34
glibc-2.3.2-95.3
compat-glibc-7.x-2.2.4.32.5

Aplikasi make
# rpm -qa | grep make
automake-1.6.3-5
make-3.79.1-17
automake15-1.5-7
automake14-1.4p6-6

Aplikasi perl
]# rpm -qa | grep perl
perl-Parse-Yapp-1.05-30
perl-libxml-perl-0.07-28
perl-XML-Grove-0.46alpha-25
perl-DBI-1.32-5
perl-Digest-HMAC-1.01-11.1
openssl-perl-0.9.7a-43.2
perl-5.8.0-88.4
perl-Filter-1.29-3
perl-DateManip-5.40-30
perl-HTML-Parser-3.26-17
perl-URI-1.21-7
perl-XML-Parser-2.31-15
perl-XML-Dumper-0.4-25
perl-libxml-enno-1.02-29
perl-XML-Twig-3.09-3
perl-CGI-2.81-88.4
newt-perl-1.08-4
perl-CPAN-1.61-88.4
perl-Net-DNS-0.31-3.1
perl-SGMLSpm-1.03ii-11
perl-HTML-Tagset-3.03-28
perl-libwww-perl-5.65-6
perl-XML-Encoding-1.01-23
perl-Time-HiRes-1.38-3
perl-Digest-SHA1-2.01-15.1

Openssl yang bias di download di
http://www.openssl.org/source/openssl-0.9.8d.tar.gz





Instalasi
Berikut langkah-langkahnya :
1. Install paket openssl
a. Download paket
wget http://www.openssl.org/source/openssl-0.9.8d.tar.gz
b. Ekstrak paket
tar -xvzf openssl-0.9.8d.tar.gz
hasil ekstraksi akan mambuat suatu file bernama openssl-0.9.8d. masuk ke directory tersebut.
#cd openssl-0.9.8d
c. Lakukan konfigurasi
#./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
Instalasi akan meletakkan openssl di dalam directory /usr/local/openssl
d. Kemudian lakukan kompilasi
#make && make test && make install
Sampai saat ini , instalasi openssl telah selesai dilakukan
2. Download paket bind
wget -c http://ftp.isc.org/isc/bind9/9.3.4/bind-9.3.4.tar.gz
3. Ekstrak paket
#tar xfvz bind-9.3.4.tar.gz
Kemudian masuk ke directory hasil ekstraksi
# cd bind-9.3.4
4. Lakukan konfigurasi
#./configure --prefix=/usr/local/named --enable-ipv6 --enable-libbind --with-openssl=/usr/local/openssl/ --sysconfdir=/etc --sbindir=/sbin/ --bindir=/bin --with-ptl2 --with-libtool --enable-getifaddrs
Pada konfigurasi ini, kita melakukan kustomisasi
pada letak directory di /usr/local/named
mengaktifkan ipv6
mengaktifkan library bind
menggunakan openssl, yaitu di /usr/local/openssl
konfigurasi file diletakkan di /etc
file bin diletakkan di /bin dan /sbin
5. Lakukan kompilasi
#make && make clean && make depend && make all && make install

Pembuatan User
Setelah kompilasi dan instalasi selesai, sekarang kita coba membuat konfigurasi filenya. Agar yang menjalankan aplikasi ini bukan root, maka kita buat dulu 1 user
# /usr/sbin/useradd named -s /sbin/nologin -d /var/named/
Perintah ini akan menambahkan 1 user bernama named, yag tidak memiliki akses login, dan mempunyai directory di /var/named.

Pengubahan kepemilikan Direktory.
Direktory /var/named ini nantinya akan kita tempatkan sebagai directory zone record dns kita. Agar user named bias menggunakannya, kita ubah kepemilikannya menjadi named.
#chown named.named /var/named
Direktory yang lain adalah /usr/local/named/var/run. Yaitu directory untuk meletakkan pid dari named tersebut.
#chown named.named -Rf /usr/local/named/var/run

Konfigurasi
Pada instalasi, kita telah mengarahkan aplikasi named, agar memanggil membaca file konfigurasi nya di directory /etc. secara default, nama konfigurasi adalah named.conf. pada saat instalasi tersebut, akan dibuatkan beberapa file dan diletakkan di /sbin. File tersebut anatara lain
Named (sebagai daemon file)
named-checkconf (untuk memeriksa apakah konfigurasi named.conf sudah benar atau tidak)
named-checkzone (untuk memeriksa zone)
rndc (juga sebagai daemon)
rndc-confgen (untuk men-generate rndc key, yang akan diletakkan di /etc/, nama filenya rndc.key.
sebelum ke named.conf , kita ciptakan dulu rndc.conf nya
# /sbin/rndc-confgen >> /etc/rndc.ke

Setelah itu , baru kita buat named.conf, berikut contohnya

# more /etc/named.conf
#add by rito
#Senin, 5 Februari 2007
include "/etc/rndc.key";
options {
        directory "/var/named";
        allow-query {any; };

};
controls {
        inet 127.0.0.1 allow { localhost; } keys { "rndc-key"; };
};

zone "." IN {
        type hint;
        file "named.ca";
};

zone "localdomain" IN {
        type master;
        file "localdomain.zone";
        allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};

Kemudian, buat file named.ca, localdomain.zone, dan named.local di /var/named. Isinya kurang lebih sebagai berikut :
# more /var/named/named.ca
;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  <file>"
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC
;       under anonymous FTP as
;           file                /domain/named.cache
;           on server           FTP.INTERNIC.NET
;       -OR-                    RS.INTERNIC.NET
;
;       last update:    Jan 29, 2004
;       related version of root zone:   2004012900
;
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
;
; formerly NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
;
; formerly C.PSI.NET
;
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
;
; formerly TERP.UMD.EDU
;
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
;
; formerly NS.NASA.GOV
;
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
;
; formerly NS.ISC.ORG
;
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
;
; formerly NIC.NORDU.NET
;
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
;
; operated by VeriSign, Inc.
;
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
;
; operated by RIPE NCC
;
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
;
; operated by ICANN
;
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
;
; operated by WIDE
;
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
; End of File

]# more /var/named/named.local
$TTL    86400
@       IN      SOA     localhost. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      localhost.

1       IN      PTR     localhost.

# more /var/named/localdomain.zone
$TTL    86400
@               IN SOA  localhost root (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
                IN NS           localhost
localhost       IN A            127.0.0.1

file –file di atas hanya contoh.

Setelah membuat file di atas, sekarang kita membuat init daemonnya. Pada redhat, diletakkan di /etc/rc.d/init.d atau di /etc/init.d
Nama filenya ada named
Isi filenya kurang lebih sebagai berikut :

# more /etc/init.d/named
#!/bin/bash
#
# named           This shell script takes care of starting and stopping
#                 named (BIND DNS server).
#
# chkconfig: - 55 45
# description: named (BIND) is a Domain Name Server (DNS) \
# that is used to resolve host names to IP addresses.
# probe: true

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
[ -r /etc/sysconfig/network ] && . /etc/sysconfig/network

RETVAL=0
prog="named"

# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 1

[ -r /etc/sysconfig/named ] && . /etc/sysconfig/named

[ -x /sbin/named ] || exit 1

[ -r ${ROOTDIR}/etc/named.conf ] || exit 1


start() {
        # Start daemons.
        if [ -n "`/sbin/pidof named`" ]; then
                echo -n $"$prog: already running"
                return 1
        fi
        echo -n $"Starting $prog: "
        ckcf_options='';
        if [ -n "${ROOTDIR}" -a "x${ROOTDIR}" != "x/" ]; then
                OPTIONS="${OPTIONS} -t ${ROOTDIR}"
                ckcf_options="-t ${ROOTDIR}";
                if [ -s /etc/localtime ]; then
                    cp -fp /etc/localtime ${ROOTDIR}/etc/localtime
                fi;
        fi
        conf_ok=0;
        if [ -x /sbin/named-checkconf ] && /sbin/named-checkconf $ckcf_options;
then
           conf_ok=1;
        else
           RETVAL=$?;
        fi
        if [ $conf_ok -eq 1 ]; then
           daemon /sbin/named -u named -n 2 ${OPTION};
           RETVAL=$?;
        else
           named_err=`/sbin/named -g 2>&1 | sed s/\n/\\n/g`;
           if [ `tty` != "/dev/console" ]; then
               echo -e "\n$named_err";
               echo -n  "Error in configuration file /etc/named.conf : ";
           fi;
           failure $"Error in configuration file /etc/named.conf : $named_err";
           echo
           return $RETVAL;
        fi;
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/named
        Echo
        return $RETVAL
}
stop() {
        # Stop daemons.
        echo -n $"Stopping $prog: "
        /sbin/rndc stop >/dev/null 2>&1
        RETVAL=$?
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named || {
#               killproc named
#               Never do this! Can cause corrupt zone files!
                /sbin/rndc stop >/dev/null 2>&1
                RETVAL=$?
                [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named
                echo
                return $RETVAL
        }
        success
        echo
        return $RETVAL
}
rhstatus() {
        /sbin/rndc status
        return $?
}
restart() {
        stop
# wait a couple of seconds for the named to finish closing down
        sleep 2
        start
}
reload() {
        echo -n $"Reloading $prog: "
        p=`/sbin/pidof -o %PPID named`
        RETVAL=$?
        if [ "$RETVAL" -eq 0 ]; then
            /sbin/rndc reload >/dev/null 2>&1 || /usr/bin/kill -HUP $p;
            RETVAL=$?
        fi
        [ "$RETVAL" -eq 0 ] && success $"$prog reload" || failure $"$prog reload
"
        echo
        return $?
}
probe() {
        # named knows how to reload intelligently; we don't want linuxconf
        # to offer to restart every time
        /sbin/rndc reload >/dev/null 2>&1 || echo start
        return $?
}

# See how we were called.
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        status)
                rhstatus
                ;;
        restart)
                restart
                ;;
        condrestart)
                if [ -e /var/lock/subsys/named ]; then restart; fi
                ;;
        reload)
                reload
                ;;
        probe)
                probe
                ;;
        *)
                echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|p
robe}"
                exit 1
esac

exit $?

Menjalankan named
Untuk menjalankan named. Cukup dengan perintah berikut :
#/etc/init.d/named start
Kemudia kita periksa apakah sudah jalan atau belum
# ps -ax | grep named
14134 ?        S      0:01 /sbin/named -u named -n 2

Terlihat named sudah jalan.