Instalasi DNS server menggunakan djbdns

Posted On 19 August 2009

Filed under Linux

Comments Dropped leave a response

1. Update Source List Debian Anda, Install Packet yang akan dibutuhkan dan disable aplikasi yang tidak akan kita gunakan.

vim /etc/apt/source.list

deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free
deb http://komo.vlsm.org/debian etch main non-free contrib
deb http://komo.vlsm.org/debian etch-proposed-updates main non-free contrib

apt-get update

Untuk me-disable aplikasi yang berjalan tanpa me-remove packetnya, kita bisa gunakan sysv-rc-conf.

apt-get install sysv-rc-conf
sysv-rc-conf

(Buang aplikasi yang tidak kita pakai dengan menghapus tanda X pada line aplikasi tsb)

reboot
apt-get install make gcc g++ cpp apache2 php5-mysql mysql-server libapache2-mod-php5

2. Download Pakcet djbdns.

cd /usr/src
wget http://www.djbdnsrocks.org/downloads/djbdnsrocks.tar.gz
tar djbdnsrocks.tar.gz

3. Install Daemontools

Daemontools digunakan untuk memanage services UNIX terutama yang dibuat oleh DJ Bernstein seperti djbdns dan qmail. Manage di sini termasuk mengawasi supervise(kondisi) services, mematikan atau menghidupkan services serta mengatur log-nya.

mkdir -p /package
chmod 1755 /package
cd /package
tar zxvf /usr/src/djbdnsrocks/daemontools-0.76.tar.gz
cd /package/admin/daemontools/src

patch < /usr/src/djbdnsrocks/daemontools_errnopatch
patching file error.h

cd /package/admin/daemontools-0.76
./package/install

4. Install Ucspi-tcp

Uscpi-tcp digunakan untuk membangun aplikasi TCP client-server. Ucspi menawarkan concurent limit untuk melindungi server anda dari kelebihan beban proses dan memory. Selain itu, ada juga fiture TCP control untuk mengatur network yang boleh mengakses services di server atau tidak.

cd /usr/src/djbdnsrocks/ucspi-tcp-0.88
patch < ../ucspi-tcp_errnopatch
patching file error.h

make && make setup check

5. Install Djbdns

Djbdns digunakan untuk menyimpan cache dns dan melakukan resolve sekaligus serta mudah diintergariskan dengan sistem database mysql. Bahkan sudah ada aplikasi Vegadns sehingga mengisi record DNS bisa dilakukan dari web gtuh…

cd /usr/src/djbdnsrocks/
tar zxvf djbdns-1.05.tar.gz
cd djbdns-1.05
patch < ../djbdns_errnopatch
patching file error.h
Hunk #1 succeeded at 1 with fuzz 2.

make && make setup check

Tambah user yang dibutuhkan untuk mnjalankan aplikasi djbdns.

cd /usr/src/djbdnsrocks/scripts
./add_users_rh.script

Konfigurasikan IP yang akan digunakan untuk dnscache dan tinydns

dnscache-conf dnscache dnslog /etc/dnscache 202.47.77.247
tinydns-conf tinydns dnslog /etc/tinydns 202.47.77.249
ln -s /etc/dnscache /service
ln -s /etc/tinydns /service

Cek apakah aplikasi sudah berjalan benar.
netstat -pln

tcp 0 0 202.47.77.247:53 0.0.0.0:* LISTEN 2035/dnscache
udp 0 0 202.47.77.249:53 0.0.0.0:* 2036/tinydns
udp 0 0 202.47.77.247:53 0.0.0.0:* 2035/dnscache

ps auxf
root 2017 0.0 0.4 2636 1260 ? Ss Apr14 0:00 /bin/sh /command/svscanboot
root 2029 0.0 0.1 1460 336 ? S Apr14 0:00 \_ svscan /service
root 2031 0.0 0.1 1432 300 ? S Apr14 0:00 | \_ supervise tinydns
tinydns 2036 0.0 0.1 1552 288 ? S Apr14 0:00 | | \_ /usr/local/bin/tinydns
root 2032 0.0 0.1 1432 304 ? S Apr14 0:00 | \_ supervise log
dnslog 2038 0.0 0.1 1440 296 ? S Apr14 0:00 | | \_ multilog t ./main
root 2033 0.0 0.1 1432 304 ? S Apr14 0:00 | \_ supervise dnscache
dnscache 2035 0.0 0.6 2736 1556 ? S Apr14 0:00 | | \_ /usr/local/bin/dnscache
root 2034 0.0 0.1 1432 304 ? S Apr14 0:00 | \_ supervise log
dnslog 2037 0.0 0.1 1444 296 ? S Apr14 0:00 | \_ multilog t ./main
root 2030 0.0 0.0 1420 252 ? S Apr14 0:00 \_ readproctitle service errors: ………………..

Menentukan blok network berapa saja yang akan kita izinkan untuk melakukan resolve DNS menggunakan server ini. Di sini saya akan mengizinkan network 202.47.64.0/20.

echo > /service/dnscache/root/ip/202.47.64
echo > /service/dnscache/root/ip/202.47.65
echo > /service/dnscache/root/ip/202.47.66
echo > /service/dnscache/root/ip/202.47.67
echo > /service/dnscache/root/ip/202.47.68
echo > /service/dnscache/root/ip/202.47.69
echo > /service/dnscache/root/ip/202.47.70
echo > /service/dnscache/root/ip/202.47.71
echo > /service/dnscache/root/ip/202.47.72
echo > /service/dnscache/root/ip/202.47.73
echo > /service/dnscache/root/ip/202.47.74
echo > /service/dnscache/root/ip/202.47.75
echo > /service/dnscache/root/ip/202.47.76
echo > /service/dnscache/root/ip/202.47.77
echo > /service/dnscache/root/ip/202.47.78
echo > /service/dnscache/root/ip/202.47.79

6. Instalasi VegaDNS (GUI Management untuk Tinydns)

cd /usr/src
wget http://vegadns.org/downloads/vegadns-1.1.5.tar.gz
tar zxvf vegadns-1.1.5.tar.gz

mysqladmin -u root password ‘newpassword’
mysqladmin -u root create vegadns -p
mysql -u root -e “GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON vegadns.* TO vegadns@localhost IDENTIFIED BY ‘secret'” mysql -p

mv /usr/src/vegadns-1.1.5 /var/www/vegadns
mkdir -p /var/www/vegadns/templates_c
mkdir /var/www/vegadns/configs
mkdir /var/www/vegadns/cache
mkdir /var/www/vegadns/sessions
chown www-data:www-data /var/www/vegadns/templates_c
chown www-data:www-data /var/www/vegadns/configs
chown www-data:www-data /var/www/vegadns/cache
chown www-data:www-data /var/www/vegadns/sessions
chmod 770 /var/www/vegadns/templates_c
chmod 770 /var/www/vegadns/configs
chmod 770 /var/www/vegadns/cache
chmod 770 /var/www/vegadns/sessions

Lakukan perubahan file src/config.php sesuai dengan setting kita.

vim src/config.php

$private_dirs ‘/usr/local/apache/vegadns’;
$vegadns_url ‘http://127.0.0.1/shupp/vegadns-1.1.5/&#8217;;
$sql_user ‘vegadns’;
$sql_pass ‘secret’;
$sql_db ‘vegadns’;

Menjadi :

$private_dirs ‘/var/www/vegadns’;
$vegadns_url ‘http://127.0.0.1/vegadns/&#8217;;
$sql_user ‘vegadns’;
$sql_pass ‘secret’;
$sql_db ‘vegadns’;

Agar terjadi proses update otomatis tinyDNS-nya, lakukan langkah berikut :

mv /var/www/vegadns/update-data.sh /usr/sbin/update-data.sh
chmod 770 /usr/sbin/update-data.sh
crontab -e > Di sini saya set refresh time nya per 10 menit

*/10 * * * * /usr/sbin/update-data.sh

crontab -l

# m h dom mon dow command
*/10 * * * * /usr/sbin/update-data.sh

7. Test Server DNS.

– Test DNS resolver

Siapkan 1 PC untuk test resolve DNS dengan server DNS kita, PC ini harus termasuk dalam list network yang kita permit untuk menggunakan jasa resolver DNS kita, dalam contoh ini berarti network 202.47.64.0/20.

DI PC TEST :

Arahkan setting DNS server nya ke IP yang menjalankan dnscache(202.47.77.247).

vim /etc/resolve.conf
nameserver 202.47.77.247

ping yahoo.com
PING yahoo.com (68.180.206.184) 56(84) bytes of data.
64 bytes from w2.rc.vip.sp1.yahoo.com (68.180.206.184): icmp_seq=1 ttl=51 time=221 ms
64 bytes from w2.rc.vip.sp1.yahoo.com (68.180.206.184): icmp_seq=2 ttl=51 time=222 ms
— yahoo.com ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 8038ms
rtt min/avg/max/mdev = 221.308/221.995/222.593/0.578 ms

nslookup
> set q=any
> yahoo.com
Server: 202.47.77.247
Address: 202.47.77.247#53

Non-authoritative answer:
yahoo.com nameserver = ns2.yahoo.com.
yahoo.com nameserver = ns1.yahoo.com.
yahoo.com nameserver = ns3.yahoo.com.
yahoo.com nameserver = ns4.yahoo.com.
yahoo.com nameserver = ns5.yahoo.com.
yahoo.com nameserver = ns6.yahoo.com.
yahoo.com nameserver = ns8.yahoo.com.

– Test TinyDNS dan VegaDNS.

Browse ke aplikasi web vegadns server anda.

http://202.47.77.249/vegadns

Anda akan diminta untuk menentukan Username, Password dan keterangan lainnya untuk login nantinya.

Sebelum mengisi record DNS di vegaDNS nya. Arahkan dulu agar resolve untuk domain msr.web.id di tujukan ke IP 202.47.77.249 (tinydns).

Berikut hasil WHOIS untuk domain msr.web.id

Name Server : tiny.msr.web.id
IP Address : 202.47.77.247
Name Server : ns.msr.web.id
IP Address : 202.47.77.249

Buat record domain baru, sebagai contoh saya akan menambahkan domain msr.web.id dan mengisi record2-nya.

Name Type asc Address Distance
dns.msr.web.id A 202.47.77.247 n/a
mail.msr.web.id A 202.47.77.247 n/a
msr.web.id A 202.47.77.249 n/a
ns.msr.web.id A 202.47.77.249 n/a
tiny.msr.web.id A 202.47.77.249 n/a
smtp.msr.web.id A 202.47.77.248 n/a
http://www.msr.web.id A 202.47.77.249 n/a
msr.web.id MX smtp.msr.web.id. 10
msr.web.id MX mail.msr.web.id. 20
msr.web.id NS tiny.msr.web.id. n/a
msr.web.id NS ns.msr.web.id. n/a

DI SERVER:

Jalankan update-data.sh atau tunggu sekitar 10 menit sampai databasenya refresh otomatis.

update-data.sh

Cek file data di /service/tinydns/root/data.

cat /service/tinydns/root/data
#msr.web.id
+dns.msr.web.id:202.47.77.247:3600
+mail.msr.web.id:202.47.77.247:3600
+msr.web.id:202.47.77.249:3600
+ns.msr.web.id:202.47.77.249:3600
+smtp.msr.web.id:202.47.77.248:3600
+tiny.msr.web.id:202.47.77.249:3600
+www.msr.web.id:202.47.77.249:3600
@msr.web.id::mail.msr.web.id.:20:3600
@msr.web.id::smtp.msr.web.id.:10:3600
&msr.web.id::ns.msr.web.id.:3600
&msr.web.id::tiny.msr.web.id.:3600
Zmsr.web.id:tiny.msr.web.id:hostmaster.msr.web.id::16384:2048:1048576:2560:86400

DI PC TEST:

ping msr.web.id
PING msr.web.id (202.47.77.249) 56(84) bytes of data.
^C64 bytes from 202.47.77.249: icmp_seq=1 ttl=63 time=0.987 ms
— msr.web.id ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.987/0.987/0.987/0.000 ms

Berhasil! Record yang ada buat sudah terupdate oleh internet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s