Langsung ke konten utama

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

Komentar

Postingan populer dari blog ini

Menggunakan Modem ZTE MF 622 di Ubuntu

Setelah beberapa waktu lalu saya berhasil mengutak atik modem huawei 620, Sekarang saya akan menuliskan bagaimana menggunakan modem zte mf 622 di linux. Kebetulan, linux yang saya gunakan kali ini adalah Ubuntu 8.10. Mungkin lain waktu, saya akan mencoba langkah-langkah pada tulisan ini di Fedora (sebenernya, saya lebih terbiasa dengan Fedora daripada Ubuntu), namun karena ingin mencoba distro yang digadang-gadangkan banyak komunitas sebagai distro termudah, dan terbanyak penggunanya, maka saya pun akhirnya tak dapat menahan rayuan untuk mencoba ubuntu versi terbaru ini. Oh ya, sebelumnya, saya menggunakannya di laptop saya, acer aspire 4520. dan ini adalah foto dari modem saya OK, segera kita mulai. Untuk menggunakan modem ZTE MF 622 ini, tidak banyak aplikasi yang dilibatkan. Aplikasi yang dibutuhkan antara lain wvdial, dmesg, pptp. * wvdial ini digunakan untuk memudahkan kita menggunakan modem ini. * dmesg digunakan untuk memeriksa message pada kernel apakah ketika modem ditancapkan...

Bind DNS Graph in Cacti

In My Previous tutorial, Menampilkan hasil DNS query pada cacti I tried to graph my bind dns server in cacti. At the moment, I usedBind version 4.3. By the time, ISC (Consorcium that create bind) always update this software. Usually, they update because of found bug, improve perfomance, hardware support, and other. Until now, Bind version is 10. but currently, I still use bind 9.8. it seems that, after bind 9.4, ISC change mayor update in thebind version. because of this, my tutorial for bind 9.3.4 did not compatible anymore for latest bind. I have tried to search in internet,googling, find the forum, but still not successfull.  And fortunately, 5 days ago, I tried to access cacti forum. found the new way to graph new bind version in cacti. for the forum, you can see at this link : http://forums.cacti.net/viewtopic.php?f=12&t=45926&start=0 Because of my couriousity, I tried to make graph my bind. Oh ya, I run my dns server in Linux (RHEL 5.5) I think ou can run...

Cara membangun DNS Filter (mari berantas pornografi)

Kebutuhan : 1. dns server, pilihan yang baik menggunakan powerdns, karena saya rpm base, maka silakan di download di : http://downloads.powerdns.com/releases/rpm/pdns-static-2.9.22-1.i386.rpm download powerdns sebagai authoritative server 2. linux box, pastinya. 3. database situs-situs yang ingin di blok, bisa didownload di http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist pilih situs porno 4. web server saya asumsikan di sini, kita akan menyimpan databasenya dalam bentuk file. powerdns bisa menyimpannya dalam database, salah satu yang telah saya coba adalah mysql. namun pada tutorial ini, yang saya bahas adalah menggunakan file. di dalam database tersebut, terdapat kategori porn, nah pilih kategori tersebut. lalu pilih file domain. ide dari dns filtering ini adalah "memaksa" suatu domain, katakanlah situs porno tadi, ke suatu ip yang telah kita assign. ip tersebut, bisa di server dns filter ini. misalnya dns filter...