DNS Server dengan djbdns
Kenapa dipilih djbdns? karena djbdns mudah :-), keamanan baik, resource kecil, dan
stabil (reliability baik), dan saya "muak" dengan BIND hihihihi.. :-)
karena saya juga sudah jatuh cinta dari dulu sama semua program buatan DJB
Links dokumentasi di
author of djbdns
people contribution atau
BIND2djbdns howto(?)
UNIX manual dari djbdns (adajuga manual ucspi-tcp dan daemontools) di sini
Lihat grafik ns record http://www.foobar.tm/dns/dnsbajaj.cgi
I. DNS Internal & Eksternal Cache Server
Permintaan resolving DNS dari localhost yang diminta oleh berbagai program
seperti MTA (Mail Tranfer Agent) ataupun browser dll, dikirimkan ke host
lain yang tertera pada baris nameserver pada file /etc/resolv.conf
yang kemudian server tsb mencari di cache-nya tau meminta pada server DNS.
Nah sekarang kita ingin query DNS dari localhost ini ditangani oleh server
kita sendiri (internal cache). Dan karena kita punya jaringan lain, kita
juga ingin cache DNS ini bisa digunakan oleh komputer di jaringan kita
(eksternal cache).
Cara nginstal djbdns buat internal/eksternal chache di Linux/FreeBSD
gampang koq, gini:
Ambil paket2 semua program dari DJB yang diperlukan yaitu: djbdns,
daemontools.Jika menginginkan menggunakan axfrdns atau axfr-get perlu juga
paket ucspi-tcp. Untuk kasus sebagai eksternal/internal cache paket ucspi-tcp
gak perlu.
TIPS :
Daemontools juga sebenarnya tidak wajib, anda bisa juga menjalankan
djbdns tanpa daemontool langsung saja kasih perintah `/service/tinydns/run &
Paket-paket bisa didapatkan di:
http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
http://cr.yp.to/daemontools/daemontools-0.70.tar.gz
http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
Lalu ekstrak paket dan install semuanya:
tar zxvf daemontools-0.70.tar.gz
( cd daemontools-0.70; make setup check )
tar zxvf djbdns-1.05.tar.gz
( cd djbdns-1.05; make setup check )
tar zxvf ucspi-tcp-0.88.tar.gz
( cd ucspi-tcp-0.88; make setup check )
abis itu buat account user untuk program ini yaitu dnslog dan dnscache
useradd -g nogroup -s /bin/false dnscache
useradd -g nogroup -s /bin/false tinydns
useradd -g nogroup -s /bin/false axfrdns
useradd -g nogroup -s /bin/false dnslog
atau untuk FreeBSD
pw useradd dnslog -g nofiles -s /nonexistent
pw useradd dnscache -g nofiles -s /nonexistent
pw useradd tinydns -g nofiles -s /nonexistent
pw useradd axfrdns -g nofiles -s /nonexistent
buat direktori /service untuk daemontools
mkdir /service
untuk internal cache buat file2 konfirusasi dan startup dengan perintah:
dnscache-conf dnscache dnslog /etc/dnscache 127.0.0.1
setelah itu untuk eksternal cache file2 di etc/dnscachex dengan perintah:
dnscache-conf dnscache dnslog /etc/dnscachex 167.205.26.30
dengan 167.205.26.30 adalah IP komputer yang akan dijadikan DNS cache
yaitu IP komputer yang sedang diinstall.
Lalu buat file /service/dnscache yang me-link ke /etc/dnscache dan file
/service/dnscachex yang me-link ke /etc/dnscachex
ln -s /etc/dnscache /service
ln -s /etc/dnscachex /service
File2 di /etc/dnscache atau /etc/dnscachex terdiri dari file2 startup
bernama "run" yang akan dijalankan oleh supervise (yaitu terdiri dari
file2 startup untuk program dnscache dan program logging), file2
konfigurasi, file2 status dan file2 hasil proses logging.
File log disimpan di direktori /etc/dnscache/log/main, jika ingin merubah
letak direktori log misalnya menjadi di /var/log/dnscache maka buat
direktori tsb lalu ubah tulisan "./main" menjadi "/var/log" di file
/etc/dnscache/log/run. begitu pula untuk konfigurasi eksternal cache bisa
diubah file /etc/dnscachex/log/run
Agar cache bisa diakses dari remote misalnya untuk seluruh IP 172.16.*
maka tambahkan:
touch /etc/dnscachex/root/ip/172.16
TIPS:
misalkan kita ingin DNS cache kita bisa diakses oleh range IP 167.205.26.65-125
gunakan perintah
touch 167.205.26.65
for X in `awk 'BEGIN { for( i=65; i<=125; i++ ) print i }'`
do
ln 10.2.3.64 10.2.3.$X
done
dengan script tersebut kita mempercepat membuat file, dan mengirit inode
yang digunakan karena kita menggunakan file link instead of file kosong
hasil buatan dari perintah `touch`
Maaf saya selalu menggunakan "instead of" karena saya kira bhs. indonesia
tidak punya kata yang seperti itu hehehe... :-)
--
Jadi semua konfigurasi IP yang boleh menggunakan server ini sebagai cache
ada di /etc/dnscachex/root/ip/
Jika diinginkan eksternal DNS cache ini digunakan oleh siapa saja
(public) maka diperlukan patch yang bisa diambil di:
http://www.ohse.de/uwe/patches/dnscache-0.61.okclient.patch
SELESAI installasi kita.
Nah untuk menjalankan sebelumnya matiin dulu BIND/named-nya (kalo
ada) lalu beri perintah `svscan /service &`
Sekarang coba ubah IP nameserver pada file /etc/resolv.conf dengan
172.0.0.1 (internal cache) atau 167.205.26.30 (eksternal cache), lalu
coba test dengan `nslookup` suatu domain dan coba sekali lagi (nslookup
yang kedua seharusnya lebih cepat karena server tinggal mengambil dari
cache saja tidak memforward query ke DNS server).
Agar jalan setiap saat server booting tambahkan ke file /etc/inittab
seperti ini:
echo "SV:123456:respawn:env - PATH=/usr/local/bin:/usr/sbin:/usr/bin:/bin svscan /service /dev/console 2>/dev/console" >> /etc/inittab
atau pada FreeBSD bisa ditambahkan pada file /etc/rc.local
echo "env - PATH=/usr/local/bin:/usr/sbin:/usr/bin:/bin csh -cf 'svscan /service &'" >> /etc/rc.local
Catatan:
Dalam djbdns file root zone beradi di /etc/dnscachex/root/servers/@
Untuk root zone terbaru bisa diambil di sini Silahakan ambil
IP-IP nya untuk dimasukan ke file @ tersebut.
-- Jika resolving domain misalnya bego.ccom (*.bego.com) ingin di set ke DNS
server 1.2.3.5 atau dengan kata lain server kita bertindak sebagai forwarder
zone untuk domain bego.com ke NS dengan IP 1.2.3.5, tinggal kasih perintah
`echo 1.2.3.5 > /etc/dnscachex/root/servers/bego.com`
lalu restart dnscache dengan `svc -t /etc/dnscachex`.
-- Jika diinginkan server hanya sebagai DNS forwarder tanpa meng-cache
berikan perintah:
echo 1 > /service/dnscache/env/FORWARDONLY
GAMPANG TERNYATA..
..dan djbns ini lebih mudah maintainance-nya dibanding BIND karena gak
perlu edit2 file :-) terbukti pada saat istallasi pun kita tidak perlu
membuka file untuk mengeditnya.
Pusing ah terlalu banyak penjelasan
Baiklah untuk melihat betapa mudahnya menginstal djbdn untuk DNS cache server
dibawah ini adalah script yang mendownload dan menginstal langsung djbdns
dibuat oleh: Doobe R. Tzeck
#!/bin/sh
# Time-stamp: <>
# Quick and dirty dnscache setup for people which don't really care.
# it downloads and installs djbdns and daemontools and sets up
# dnscache to run under supervise on 127.0.0.1. Hacked by
# drt@un.bewaff.net.
# Location of your local startup-script. You probably have to change
# this.
# BSD
RCLOCAL=/etc/rc.local
# RedHat
#RCLOCAL=/etc/rc.d/rc.local
# UID to runn the server
SVRUID=daemon
LOGUID=daemon
cd /tmp
wget http://cr.yp.to/djbdns/djbdns-1.02.tar.gz
tar xzvf djbdns-1.02.tar.gz
cd djbdns-1.02
make setup
cd ..
wget http://cr.yp.to/daemontools/daemontools-0.70.tar.gz
tar xzvf daemontools-0.70.tar.gz
cd daemontools-0.70
make setup
rm -Rf daemontools-0.70* djbdns-1.02*
mkdir /var/service
/usr/local/bin/dnscache-conf $LOGUID $SVRUID /var/service/dnscache
mkdir /service
chmod 755 /service
echo "2>&1 env - PATH=/usr/local/bin:/usr/sbin:/usr/bin:/bin csh -cf 'svscan /service &'" >> $RCLOCAL
ln -sv /var/service/dnscache /service
echo "nameserver 127.0.0.1" > /tmp/r.c
cat /etc/resolv.conf >> tmp/r.c
mv /tmp/r.c /etc/resolv.conf
II. Men-setup NS atau Authoritative DNS Server
1. Setup primary NS
misal kita ingin membuat Authoritative DNS Server, dengan
ns1.tf.itb.ac.id (167.205.26.30) sebagai primary NS
ns2.tf.itb.ac.id (167.205.26.1) sebagai secondary NS
Pertama jangan lupa menginstal uscpi-tcp dan buat user dengan nama tinydns dan axfrdns
seperti sudah dijelaskan diatas, lalu buat direktori konfigurasi /etc/tinydns
dengan perintah:
tinydns-conf tinydns dnslog /etc/tinydns 167.205.26.30
dengan 167.205.26.30 adalah IP adalah primary IP yang terdaftar sebagai NS
Sekarang kita akan mengeset tinydns agar menjawab semua permintaan host
pada domain tf.itb.ac.id dan domain 26.205.167.in-addr.arpa (reverse domain 167.205.26.*)
cd /service/tinydns/root
./add-ns tf.itb.ac.id 167.205.26.30
./add-ns 26.205.167.in-addr.arpa 167.205.26.30
make
Setelah itu buatlah direktori service untuk axfr dengan perintah berikut:
axfrdns-conf axfrdns dnslog /etc/axfrdns /etc/tinydns 167.205.26.30
Lalu ubah file konfigurasi yang membolehkan server lain (secondary NS server)
untuk melakukan zone transfer yaitu file /etc/axfrdns/tcp
INFO:
tranfer zone adalah "peng-copy-an" informasi sebuah host secara remote dari
suatu primary/server NS ke secondary/slave NS.
---
167.205.26.1:allow
167.205.22.123:allow
167.205.26.:allow
202.27.34.159:allow,AXFR="beleguk.com/3.2.1.in-addr.arpa"
:allow,AXFR=""
[1] baris pertama adalah untuk membolehkan secondary NS (ns2.itb.ac.id)
melakukan zone tranfer
[2] baris kedua adalah untuk membolehkan NS lain (secondary NS kedua)
dalam hal ini server dengan IP 167.205.22.123,
[3] baris ketiga adalah untuk meng-allow dari semua host dengan IP 167.205.26.*
[4] baris kelima adalah membolehkan DNS server dengan IP 202.27.34.159
untuk zone tranfer domain beleguk.com dan reverse DNS IP 1.2.3.*
atau dengan kata lain zone tranfer domain 3.2.1.in-addr.arpa
[5] yang terakhir adalah untuk meng-allow koneksi TCP yang non-zone-transfer
dari mana pun.
jika menginkan pembolehan koneksi tsb menggunakan nama host instead of IP
gunakan sepeti contoh ini:
=ns2.tf.itb.ac.id:allow
Kompile konfigurasi tcp tersebut menjadi file dalam format binary
make
SELESAI..instalasi kita.
Jalankan NS server kita dengan membuat link berikut:
ln -s /etc/tinydns /service
ln -s /etc/axfrdns /service
asumsi svscan sudah jalan jika belum jalankan dengan perintah `svscan /service &`
--Menambah Host Baru--
untuk menambah host baru pada domain tf.itb.ac.id, misalnya kita ingin mengeset
host bernama indi dengan IP 167.205.26.12 dan project dengan IP 167.205.26.27
gunakan perintah
cd /service/tinydns/root
./add-host indi.tf.itb.ac.id 167.205.26.12
./add-host project.tf.itb.ac.id 167.205.25.27
make
atau bisa juga dengan mengedit langsung file /service/tinydns/root/data
dan menambahkan baris ini:
=indi.tf.itb.ac.id:167.205.26.12
=project.tf.itb.ac.id:167.205.25.27
tapi jelas lebih aman jika menggunakan perintah `add-host`
--Menambahkan suatu host domain lain--
Misalkan kita akan meng-setup domain keripik.org yang mempunya nameserver2
sebagai berikut
ns1.keripik.org (167.205.26.30)
ns2.keripik.org (167.205.26.1)
ns3.keripik.org (202.12.63.101)
Disini IP 167.205.26.30 masih sebagai ns1.tf.itb.ac.id dan 167.205.26.1
sebagai ns2.tf.itb.ac.id jadi ns1.keripik.org dan ns2.keripik.org adalah
virtual domain dari IP-IP tersebut.
Kita akan setup di 167.205.26.30 sbb:
cd /etc/tinydns
./add-host ns1.keripik.org 167.205.26.30
./add-host ns2.keripik.org 167.205.26.1
./add-ns keripik.org 167.205.26.30
./add-ns keripik.org 167.205.26.1
./add-ns keripik.org 202.12.63.101
./add-ns 3.2.1.in-addr.arpa 167.205.26.30
./add-host satu.keripik.org 1.2.3.100
./add-host dua.keripik.org 1.2.3.200
./add-alias www.keripik.org 1.2.3.100
./add-alias mail.keripik.org 1.2.3.200
./add-mx keripik.org 1.2.3.100
make
Tinydns akan menamakan mailserver a.mx.example.com secara default.
perintah add-alias adalah untuk menambahkan alias domain dari suatu host
sedangkan add-mx adalah untuk menambahkan MX server dari domain tsb.
Hmm.. jangan mengharapkan ada perintah `add-cname` ya. record CNAME masih
bisa dihandle di djbns tapi sangat dihindarkan oleh pembuatnya, tau kenapa?
Hasil pengalaman saya sih tuh record suka malah bikin kesalahan.
Wah BIND emang nyebelin deeehh... kurang satu titik aja bikin mampus hehehe..
Kalo mau bikin cname edit langsung aja file /service/tinydns/root/data
UNTUK contoh ini nanti diterusin lagi ya, laper banet nih gua.. sehari gak makan :-)
2. Setup Secondary NS
Hampir sama dengan setup primary NS, cuma ...
3. Setup NS untuk jaringan LAN
Jika kita ingin memberi nama domain pada jaringan local kita, dan tentu saja
hanya dikenali oleh jaringan kita itu, maka kita bisa mengeset DNS server
untuk itu
Misalkan domain pada LAN kita akan kita set jadi dodol.net yang membawahi
IP 172.*
Pertama set dulu server kita sebagai eksternal cache dari network 172.*
touch /etc/dnscachex/root/ip/172
setelah itu set agar setiap pencarian domain dodol.net dilakukan hanya ke
komputer local (127.0.0.1) begitu juga untuk revers domain 172.* atau
172.in-addr.arpa
echo 127.0.0.1 > /etc/dnscachex/root/servers/dodol.net
echo 127.0.0.1 > /etc/dnscachex/root/servers/172.in-addr.arpa
sekarang setup name server untuk local/internal domain kita, kita akan simpan
konfigurasi dan log file di direktori /etc/dnscachex/tinydns-mylan
tinydns-conf tinydns dnslog /etc/dnscachex/tinydns-mylan 127.0.0.1
ln -sf /etc/dnscachex/tinydns-mylan /service/tinydns-mylan
set internal name server kita:
cd /etc/dnscachex/tinydns-mylan/root
./add-ns dodol.net 127.0.0.1
./add-ns 172.in-addr.arpa 127.0.0.1
./add-host bego.dodol.net 172.16.0.30
./add-host bloon.dodol.net 172.16.0.31
make
svc -t /service/*
III. Peraawatan / Maintenance Server
Update root zone (minimal sebulan sekali)
tcpclient 199.166.24.1 53 axfr-get . /etc/rootdns/root/root.orsc /etc/rootdns/root/root.orsc.tmp
Kita bisa menggunakan local root server untuk dipergunakan oleh dnscache, dengan cara:
cp /etc/dnscache/root/@ /etc/dnscache/root/@.original
echo 167.205.26.30 > /etc/dnscache/root/@
svc -du /service/dnscache
Jika anda pusing dengan zone file tinydns (tinydns-data) yang memang simpel tapi mungkin
susah diingat daripada daripada zone file-nya BIND, nah tabel ini bisa dipergunakan:
djbdns Aritnya
--------------------------------------------------------------------------------
. SOA, NS, A
& NS, A
@ MX, A
= PTR, A
+ A
' TXT
^ PTR
C CNAME
Z SOA
% (client location conditional expression, does not create any records)
# (comment, does not create any records)
- (used to temporarily disable A recordds, does not create any records)
: User-defined
6 AAAA, PTR
3 AAAA
udah dulu ahh..capek ;-)
btw, kalau ada kesalahan dalam tulisan ini, jangan segan2 untuk
ngasih tau ke ..
---
eryan12@yahoo.com
http://eryan.dhs.org
               (
geocities.com/w1d1anto)