DNS (Domain Name System) adalah
sebuah server yang bertugas untuk menterjemahkan alamat IP Address ke dalam
bentuk sebuah nama domain, tujuannya adalah untuk mempermudah penemuan atau
akses ke dalam sebuah situs berdasarkan nama atau domain yang mudah untuk
diingat. Tentunya bisa dibayangkan jika sobat sekalian harus mengingat
banyaknya nomor-nomor IP Address yang harus dihapal untuk mengakses situs
tujuan.
DNS juga diperlukan untuk mengatur nama
domain dan subdomain yang dipakai pada sebuah perusahaan ataupun untuk diri
pribadi, umunya DNS server terdiri dari Master dan Slave yang terinstall pada
dua buah server dengan IP Address yang berbeda.
Pada kesempatan ini penulis ingin berbagi bagaimana caranya untuk menjalankan Master dan Slave sebuah DNS server yang menggunakan BIND-9 dalam satu buah server dan berjalan dengan metode chroot, untuk itu perlu disiapkan sebuah server dengan dua buah ethernet card yang telah terinstall Linux dan sudah dikonfigurasikan dengan dua buah alamat IP yang berbeda.
Server spesifikasi :
Pada kesempatan ini penulis ingin berbagi bagaimana caranya untuk menjalankan Master dan Slave sebuah DNS server yang menggunakan BIND-9 dalam satu buah server dan berjalan dengan metode chroot, untuk itu perlu disiapkan sebuah server dengan dua buah ethernet card yang telah terinstall Linux dan sudah dikonfigurasikan dengan dua buah alamat IP yang berbeda.
Server spesifikasi :
Sistem Operasi : Fedora Core 6 32 bit, RAM 1 GHz
IP Address 1 : 10.10.10.2 (eth1) – Sesuaikan dengan IP address anda.
IP Address 2 : 172.16.0.2 (eth2)
BIND dan SSL : bind-9.9.2 dan openssl-0.9.8x
IP Address 1 : 10.10.10.2 (eth1) – Sesuaikan dengan IP address anda.
IP Address 2 : 172.16.0.2 (eth2)
BIND dan SSL : bind-9.9.2 dan openssl-0.9.8x
Langkah-langkah berikut harus dilakukan setelah login meggunakan root dalam
server:
Jika sobat menggunakan versi fedora yang
lebih tinggi dan versi openssl telah sama atau lebih tinggi, lewati langkah
untuk install openssl dibawah ini:
cd /src
tar xfvz openssl-0.9.8x.tar.gz
cd openssl-0.9.8x
./configure
make
make test
make install
tar xfvz openssl-0.9.8x.tar.gz
cd openssl-0.9.8x
./configure
make
make test
make install
Download dan install bind
cd source
tar xfvz bind-9.9.2.tar.gz
cd bind-9.9.2 rpm -e
bind
bind-utils caching-nameserver (lewati jika bind tidak diinstall)
./configure --prefix=/usr/local --disable-ipv6 --with-openssl=/Path-to-openssl-sobat make make install
cd bind-9.9.2 rpm -e
bind
bind-utils caching-nameserver (lewati jika bind tidak diinstall)
./configure --prefix=/usr/local --disable-ipv6 --with-openssl=/Path-to-openssl-sobat make make install
Konfigurasi dan persiapkan jail (chroot)
groupadd named
useradd -g named -d /chroot/named -s /bin/true named
passwd -l named
mkdir -p /chroot/named
cd /chroot/named
mkdir dev
mkdir etc
mkdir logs
mkdir -p var/run
mkdir -p conf/secondaries
mknod dev/null c 1 3
mknod dev/zero c 1 5
mknod dev/random c 1 8
cp /etc/localtime etc
Buat konfigurasi named.conf, karena
Master dan Slave berjalan dalam satu server berarti ada dua buah konfigurasi,
sebut saja named1.conf dan named2.conf
controls {
inet 127.0.0.1 allow { 127.0.0.1; } keys { rndckey; };
};
acl "internal" { 10.10.10.0/24; 172.16.0.0/24; 127.0.0.1; };
logging {
channel default_syslog {
syslog local2;
severity debug;
};
channel audit_log {
file "/logs/named1.log";
severity debug;
print-time yes;
};
category default { default_syslog; };
category general { default_syslog; };
category security { audit_log; default_syslog; };
category config { default_syslog; };
category resolver { audit_log; };
category xfer-in { audit_log; };
category xfer-out { audit_log; };
category notify { audit_log; };
category client { audit_log; };
category network { audit_log; };
category update { audit_log; };
category queries { audit_log; };
category lame-servers { audit_log; };
};
options {
listen-on port 53 { 127.0.0.1; 10.10.10.2; };
directory "/conf";
pid-file "/var/run/named1.pid";
statistics-file "/var/run/named1.stats";
memstatistics-file "/var/run/named1.memstats";
dump-file "/var/run/named1.dump";
zone-statistics yes;
version "[bind-version]";
notify no;
auth-nxdomain yes;
transfer-format many-answers;
max-transfer-time-in 60;
interface-interval 0;
allow-transfer { none; };
allow-query { internal; };
allow-query-cache { internal; };
};
view "internal-in" in {
match-clients { internal; };
recursion yes;
additional-from-auth yes;
additional-from-cache yes;
zone "." in {
type hint;
file "db.rootcache";
};
zone "0.0.127.in-addr.arpa" in {
type master;
file "db.127.0.0";
allow-query {
any;
};
allow-transfer {
none;
};
};
zone "localhost" {
type master;
file "db.localhost";
allow-query {
any;
};
allow-transfer {
none;
};
};
zone "domainmu.com" in {
type master;
file "domainmu.zone";
allow-transfer { 172.16.0.2; 10.10.10.2; };
};
zone "10.10.10.in-addr.arpa" in {
type master;
file "db.10.10.10";
allow-transfer { 172.16.0.2; 10.10.10.2; };
};
zone "0.16.172.in-addr.arpa" in {
type master;
file "db.172.16.0";
allow-transfer { 172.16.0.2; 10.10.10.2; };
};
};
view "external-in" in {
match-clients { any; !internal; };
recursion no;
additional-from-auth no;
additional-from-cache no;
// Link in our zones
zone "." in {
type hint;
file "db.rootcache";
};
zone "domainmu.com" in {
type master;
file "domainmu.zone";
allow-query {
any;
};
};
zone "10.10.10.in-addr.arpa" in {
type master;
file "db.10.10.10";
allow-query {
any;
};
};
zone "0.16.172.in-addr.arpa" in {
type master;
file "db.172.16.0";
allow-query {
any;
};
};
};
view "external-chaos" chaos {
match-clients { any; !internal;};
recursion no;
zone "." {
type hint;
file "/dev/null";
};
zone "bind" {
type master;
file "db.bind";
allow-query {
internal;
};
allow-transfer {
none;
};
};
};
include "/etc/rndc-key";
# ln -s /chroot/named/etc/named1.conf /etc/named1.conf
Ulangi dua langkah diatas untuk membuat
named2.conf (ganti name1,conf dengan named2.conf)
klik named2.conf berikut untuk isi konfigurasi named yang kedua.
klik named2.conf berikut untuk isi konfigurasi named yang kedua.
controls {
inet 127.0.0.1 allow { 127.0.0.1; } keys { rndckey; };
};
acl "trusted" { 10.10.10.0/24; 172.16.0.0/24; 127.0.0.1; };
logging {
channel default_syslog {
syslog local2;
severity debug;
};
channel audit_log {
file "/logs/named2.log";
severity debug;
print-time yes;
};
category default { default_syslog; };
category general { default_syslog; };
category security { audit_log; default_syslog; };
category config { default_syslog; };
category resolver { audit_log; };
category xfer-in { audit_log; };
category xfer-out { audit_log; };
category notify { audit_log; };
category client { audit_log; };
category network { audit_log; };
category update { audit_log; };
category queries { audit_log; };
category lame-servers { audit_log; };
};
// Set options for security
options {
listen-on port 53 { 127.0.0.1; 172.16.0.2; };
directory "/conf";
pid-file "/var/run/named2.pid";
statistics-file "/var/run/named2.stats";
memstatistics-file "/var/run/named2.memstats";
dump-file "/var/run/named2.dump";
zone-statistics yes;
version "[nameservers]";
allow-notify { 10.10.10.2; };
allow-update { 10.10.10.2; };
auth-nxdomain yes;
transfer-format many-answers;
max-transfer-time-in 60;
interface-interval 0;
allow-transfer { none; };
allow-query { internal; };
allow-query-cache { internal; };
};
view "internal-in" in {
match-clients { internal; };
recursion yes;
additional-from-auth yes;
additional-from-cache yes;
zone "." in {
type hint;
file "secondaries/db.rootcache";
};
zone "0.0.127.in-addr.arpa" in {
type master;
file "secondaries/db.127.0.0";
allow-query {
any;
};
allow-transfer {
none;
};
};
zone "localhost" {
type master;
file "secondaries/db.localhost";
allow-query {
any;
};
allow-transfer {
none;
};
};
zone "domainmu.com" in {
type slave;
file "secondaries/domainmu.zone";
masters {10.10.10.2;};
};
zone "10.10.10.in-addr.arpa" in {
type slave;
file "secondaries/db.10.10.10";
masters {10.10.10.2;};
};
zone "0.16.172.in-addr.arpa" in {
type slave;
file "secondaries/db.172.16.0";
masters {10.10.10.2;};
};
};
view "external-in" in {
match-clients { any; !internal;};
recursion no;
additional-from-auth no;
additional-from-cache no;
zone "." in {
type hint;
file "secondaries/db.rootcache";
};
zone "domainmu.com" in {
type slave;
file "secondaries/domainmu.zone";
masters {10.10.10.2;};
allow-query {
any;
};
};
zone "10.10.10.in-addr.arpa" in {
type slave;
file "secondaries/db.10.10.10";
masters {10.10.10.2;};
allow-query {
any;
};
};
zone "0.16.172.in-addr.arpa" in {
type slave;
file "secondaries/db.172.16.0";
masters {10.10.10.2;};
allow-query {
any;
};
};
};
view "external-chaos" chaos {
match-clients { any; !internal; };
recursion no;
zone "." {
type hint;
file "/dev/null";
};
zone "bind" {
type master;
file "secondaries/db.bind";
allow-query {
internal;
};
allow-transfer {
none;
};
};
};
include "/etc/rndc-key";
Buat tiga buah file db.rootcache, db.localhost and db.127.0.0 dalam
direktori /chroot/named/conf
# dig +tcp @a.root-servers.net . ns > /chroot/named/conf/db.rootcache
# vi /chroot/named/conf/db.localhost, copykan kode dibawah ini:
# vi /chroot/named/conf/db.localhost, copykan kode dibawah ini:
;
; db.localhost
;
$TTL 86400@ IN SOA @ root (
42 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimumIN NS @
IN A 127.0.0.1
# vi /chroot/named/conf/db.127.0.0, copykan kode dibawah ini:
;
; db.127.0.0
;
$TTL 86400
@ IN SOA localhost. root.localhost. (
1 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
Buatlah bind.zone untuk alasan security
# vi /chroot/named/conf/db.bind
;
$TTL 1D
$ORIGIN bind.
@ 1D CHAOS SOA localhost. root.localhost. (
2001013101 ; serial
3H ; refresh
1H ; retry
1W ; expiry
1D ) ; minimum
CHAOS NS localhost.version.bind. CHAOS TXT "BIND 9.1.3+robhacks"
authors.bind. CHAOS TXT "Are You Bind Master?"
Langkah selanjutnya ada setup direktori
dan file permission, untuk mempermudah akan dibuat sebuah file untuk melakukan
hal tersebut.
# vim /chroot/named.perms
#
named.perms
#
setting ownership dan permission dalam direktori named
cd /chroot/named
chown -R root:named .
find . -type f -print | xargs
chmod u=rw,og=r
find . -type d -print | xargs
chmod u=rwx,og=rx
chmod o= etc/*.conf
touch
conf/secondaries/.empty # placeholder
find
conf/secondaries/ -type f -print | xargs chown named:named
find
conf/secondaries/ -type f -print | xargs chmod ug=r,o=
chown
root:named conf/secondaries/
chmod
ug=rwx,o= conf/secondaries/
chown
root:root var/
chmod
u=rwx,og=x var/
chown
root:named var/run/
chmod
ug=rwx,o=rx var/run/
chown
root:named logs/
chmod
ug=rwx,o=rx logs/
Untuk menjalankannya ketikkan:
# sh -x /chroot/named.perms
# sh -x /chroot/named.perms
Instal dan Konfigurasi rndc daemon
# cd /chroot/named/etc
# cd /chroot/named/etc
#
/usr/local/sbin/dnssec-keygen -a HMAC-MD5 -b 256 -n HOST rndc
Krndc.+xxx+xxxxx
# cat
Krndc.+xxx+xxxxx.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: xxxxx-xxxxx-xxxxxx-xxxxxx-xxxxx-xxxx --- key
yang akan di copy ke rndc-key
Buat file rndc-key
# cd /chroot/named/etc
# vim rndc-key, copykan kode berikut
# cd /chroot/named/etc
# vim rndc-key, copykan kode berikut
key "rndckey" {
algorithm "hmac-md5";
secret "xxxxx-xxxxx-xxxxxx-xxxxxx-xxxxx-xxxx";
};
# rm -f Krndc.+xxx+xxxxx.* — hapus file setelah rndc-key tersimpan
Membuat file rndc.conf
# cd /chroot/named/etc
# vim rndc.conf, copykan kode berikut:
Membuat file rndc.conf
# cd /chroot/named/etc
# vim rndc.conf, copykan kode berikut:
options
{
default-server 127.0.0.1;
default-key "rndckey";
};
server 127.0.0.1 {
port 953;
key
"rndckey";
};
include
"/chroot/named/etc/rndc-key";
# chown root:named
# chmod 600 rndc-key
# ln -s /chroot/named/etc/rndc.conf /usr/local/etc/rndc.conf
# ln -s /chroot/named/etc/rndc.conf /etc/rndc.conf
# chmod 600 rndc-key
# ln -s /chroot/named/etc/rndc.conf /usr/local/etc/rndc.conf
# ln -s /chroot/named/etc/rndc.conf /etc/rndc.conf
Kemudian Buat startup untuk masing-masing konfigurasi:
# cd /chroot/named
# vi named1.start, copykan kode berikut:
# cd /chroot/named
# vi named1.start, copykan kode berikut:
cd /chroot/named
#
touch
named1.run
chown
named:named
named1.run
chmod
ug=rw,o=r named1.run
PATH=/usr/local/sbin:$PATH
named \
-t /chroot/named \
-u named
\
-c /etc/named1.conf
# vi named2.start, copykan kode berikut:
cd /chroot/named
touch
named2.run
chown
named:named
named2.run
chmod
ug=rw,o=r named2.run
PATH=/usr/local/sbin:$PATH
named \
-t /chroot/named \
-u named
\
-c /etc/named2.conf
Jalankan kedua startup tersebut saat komputer server hidup atau menyala:
# vi /etc/rc.d/ini.d/named, copykan kode berikut dan simpan
# vi /etc/rc.d/ini.d/named, copykan kode berikut dan simpan
#!/bin/sh
export PATH=/usr/local/sbin:$PATH # untuk
rndc
case "$1" in
start)
# Start
daemons.
echo -n "Starting
named: "
sh /chroot/named1.start
echo "named
up"
echo -n "Starting
named2: "
sh /chroot/named2.start
echo "named2
up"
;;
stop)
# Stop daemons.
echo -n "Shutting
down named: "
rndc stop
killall named
echo "done"
;;
esac
exit 0
# chmod 755 /etc/rc.d/init.d/named
# vi /etc/rc.d/rc.local, copykan kode berikut pada baris akhir:
# vi /etc/rc.d/rc.local, copykan kode berikut pada baris akhir:
/etc/rc.d/init.d/named
start
Sekarang sobat dapat mencoba menjlanakan dns server dengan mengetikan:
/etc/rc.d/init.d/named
start
Untuk cek apakah master dan slave sudah berjalan, ketikkan:
# ps ax
| grep named
1805 ? Ss 0:00 named -t /chroot/named -u named
-c /etc/named1.conf
1811 ? Ss 0:00 named -t /chroot/named -u named
-c /etc/named2.conf
Jika terlihat hasil seperti diatas, artinya chroot bind master dan slave
telah berjalan
Setelah semua langkah diatas dilakukan dan kedua dns server telah up,
saatnya untuk membuat routing table agar server dapat berjalan dengan dua
gateway berbeda, dengan asumsi bahwa IP 10.10.10.2 (eth1) adalah routing utama
dengan default gateway 10.10.10.1, jalankan perintah dibawah secara berurutan:
# echo 100 nama_table > /etc/iproute2/rt_tables
#
/sbin/ip route add default via 172.16.0.1 dev eth2 table nama_table
#
/sbin/ip route add 172.16.0.0/24 dev eth2 src 172.16.0.2 table nama_table
#
/sbin/ip rule add from 172.16.0.2 table nama_table
#
/sbin/ip rule add to 172.16.0.2 table nama_table
Demikianlah, tinggalkan komentar jika menghadapi kendala, terima kasih.
0 komentar:
Posting Komentar
Blog ini hanya sebagai jurnal keseharian penulis. Tinggalkan komentar positif anda, saling menghargai satu sama lain.