Thursday, February 28, 2008

Instalasi DNS menggunakan Bind pada Fedora

BIND merupakan salah satu aplikasi yang banyak digunakan untuk DNS server. Saat ini bind sudah mencapai versi 9.4.1. 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 macam , yaitu paket binary dari RPM dan paket tarball. Paket tarbal berekstensi tar.gz.

Instalasi kali ini menggunakan Fedora 7

Dependensi Paket

Untuk melakukan instalasi Bind ini, ada paket-paket yag harus sudah terinstall terlebih dulu, yaitu :

  • Gcc

rpm -qa | grep gcc

gcc-c++-4.1.2-12

libgcc-4.1.2-12

gcc-gfortran-4.1.2-12

gcc-4.1.2-12

  • Compatible c++

# rpm -qa | grep c++

libstdc++-4.1.2-12

libstdc++-devel-4.1.2-12

gcc-c++-4.1.2-12

  • Paket glibc

# rpm -qa | grep glibc

glibc-2.6-3

glibc-headers-2.6-3

glibc-common-2.6-3

glibc-devel-2.6-3

  • 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-Compress-Zlib-1.42-1.fc6

perl-File-RsyncP-0.62-3.fc6

perl-CPAN-1.76_02-18.fc7

perl-devel-5.8.8-18.fc7

perl-Archive-Zip-1.16-1.2.1

perl-suidperl-5.8.8-18.fc7

perl-URI-1.35-3

perl-Test-Simple-0.62-18.fc7

perl-String-CRC32-1.4-2.fc6

perl-Test-Harness-2.56-18.fc7

perl-5.8.8-18.fc7

perl-libs-5.8.8-18.fc7

perl-ExtUtils-Embed-1.26-18.fc7

perl-ExtUtils-MakeMaker-6.30-18.fc7

  • Openssl yang bisa 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 ftp://ftp.planetmirror.com/pub/isc/bind9/9.4.1/bind-9.4.1.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

*update sabtu 7 Juli 2007

./configure –prefix=/var/named –enable-ipv6 –enable-libbind –with-openssl=/usr/local/openssl –sysconfdir=/etc/named –sbindir=/sbin/ –bindir=/bin –with-ptl2 –with-libtool –enable-getifaddrs –enable-threads –enable-atomic –enable-largefile

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/ -r m

Perintah ini akan menambahkan 1 user bernama named, yag tidak memiliki akses login, dan mempunyai directory di /var/named.

*update sabtu 7 Juli 2007

Jika folder /var/named belum ada maka harus dibuat dulu

#mkdir /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*

* tidak diperlukan lagi

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.key

*update

#rndc-confgen > /etc/named/rndc.key

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

# more /etc/named.conf

#add by rito

#Sabtu, 7 Juli 2007

include “/etc/named/rndc.key”;

options {

directory “/var/named/domain”;

allow-query {any; };

};

controls {

inet 127.0.0.1 allow { localhost; } keys { “rndc-key”; };

};

zone “.” IN {

type hint;

file “named.ca”;

};

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 .

; 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 :

#!/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

#add by rito

#jika sebelumnya sudah ada file ini, maka perintah ini bisa dihapus

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

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

[ -r ${ROOTDIR}/etc/named/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 ${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/named.conf : “;

fi;

failure $”Error in configuration file /etc/named/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 $?

Kemudian simpan, lalu buat menjadi executables file,

#chmod +x /etc/init.d/named

Buat symbolic link nya:

# ln -s /etc/init.d/named /etc/rc3.d/S80named

# ln -s /etc/init.d/named /etc/rc5.d/S80named

# ln -s /etc/init.d/named /etc/rc4.d/S80named

# ln -s /etc/init.d/named /etc/rc2.d/S80named

Tujuannya agar jika server direstart dapat langsung otomatis menjalankan service named

Menjalankan named

Untuk menjalankan named. Cukup dengan perintah berikut :

/etc/init.d/named start

Starting named: [ OK ]

Kemudia kita periksa apakah sudah jalan atau belum

# ps -ax | grep named

Warning: bad syntax, perhaps a bogus ‘-’? See /usr/share/doc/procps-3.2.7/FAQ

3765 ? Ssl 0:00 /sbin/named -u named

tail -20 /var/log/messages

Jul 7 15:46:27 saturnus named[7118]: no longer listening on 10.3.7.197#53

Jul 7 15:46:27 saturnus named[7118]: exiting

Jul 7 15:46:29 saturnus named[3765]: starting BIND 9.4.1 -u named

Jul 7 15:46:29 saturnus named[3765]: found 4 CPUs, using 4 worker threads

Jul 7 15:46:29 saturnus named[3765]: loading configuration from ‘/etc/named/named.conf’

Jul 7 15:46:29 saturnus named[3765]: listening on IPv4 interface lo, 127.0.0.1#53

Jul 7 15:46:29 saturnus named[3765]: listening on IPv4 interface eth0, 10.3.7.197#53

Jul 7 15:46:29 saturnus named[3765]: automatic empty zone: 127.IN-ADDR.ARPA

Jul 7 15:46:29 saturnus named[3765]: automatic empty zone: 254.169.IN-ADDR.ARPA

Jul 7 15:46:29 saturnus named[3765]: automatic empty zone: 2.0.192.IN-ADDR.ARPA

Jul 7 15:46:29 saturnus named[3765]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA

Jul 7 15:46:29 saturnus named[3765]: automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA

Jul 7 15:46:29 saturnus named[3765]: automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA

Jul 7 15:46:29 saturnus named[3765]: automatic empty zone: D.F.IP6.ARPA

Jul 7 15:46:29 saturnus named[3765]: automatic empty zone: 8.E.F.IP6.ARPA

Jul 7 15:46:29 saturnus named[3765]: automatic empty zone: 9.E.F.IP6.ARPA

Jul 7 15:46:29 saturnus named[3765]: automatic empty zone: A.E.F.IP6.ARPA

Jul 7 15:46:29 saturnus named[3765]: automatic empty zone: B.E.F.IP6.ARPA

Jul 7 15:46:29 saturnus named[3765]: command channel listening on 127.0.0.1#953

Jul 7 15:46:29 saturnus named[3765]: running

Terlihat named sudah jalan.

Pengujian:

Sebagai cache

Tambahkan ip server di /etc/resolv.conf

nameserver 10.3.7.199

Kemudian uji dengan nslookup

Non-authoritative answer:

www.google.com canonical name = www.l.google.com.

Name: www.l.google.com

Address: 66.249.89.104

Name: www.l.google.com

Address: 66.249.89.99

Name: www.l.google.com

Address: 66.249.89.147

>

Uji di computer client:

Dengan menambahkan ip dns ke computer client.

No comments:

Search This Blog