DNS Server dengan BIND
DNS Server
Pada dasarnya, semua server yang sudah kita buat sampai saat ini, (Web Server, FTP Server, Samba Server) sudah bisa beroperasi dengan baik. Namun ada hal yang bisa mempermudah client yang hendak mengakses server kita. Karena sampai saat ini semua client yang hendak melakukan koneksi ke server kita harus mengetahui dan menghafal IP address server kita. Karena manusia lebih mudah untuk menghafal nama daripada angka-angka, maka dibuatlah DNS Server yang memungkinkan supaya client yang memasukkan nama dari server kita diarahkan ke IP address server kita. Karena mesin client dan mesin server kita berkomunikasi dengan menggunakan IP address tersebut.
Sebuah DNS server pada dasarnya adalah sebuah database yang berisi informasi mengenai host. Struktur database DNS memiliki kemiripan hierarki dengan UNIX dimana disini terdapat DNS server root.
Apabila ada client yang merequest IP address dari www.yahoo.com, maka request tersebut akan dilempar ke DNS server lokal yang dengan segera memeriksa databasenya. Apabila tidak ada, maka DNS server lokal akan memeriksa cache. Apabila tidak ada lagi, maka akan dilempar ke DNS server root yang pasti memiliki database www.yahoo.com barulah jawabannya diberikan ke DNS server lokal kita.
Di dunia ini ada banyak sekali domain, oleh karena itu tidak mungkin bagi DNS server root untuk menyimpan semuanya. DNS server root hanyalah menyimpan domain dari Top Level Domain. Penamaan Top Level Domain dibagi menjadi 2, yaitu berdasarkan institusi dan negara.
Disinilah sifat dari DNS server yang melakukan request secara recursive berperan penting. Apabila kita gunakan contoh sebelumnya, client yang melakukan request www.yahoo.com kepada DNS server root, maka DNS server root akan mendelegasikan tugas ini kepada DNS server .com yang kemudian akan mencari IP addres dari www.yahoo dan memberikan jawabannya kembali ke client kita. Dari sini kita bisa menyimpulkan bahwa terdapat sebuah hierarki dari semua DNS server yang ada di dunia ini.
Terlepas dari hierarki DNS server diatas, ada 3 tipe dari DNS server, yaitu : master, slave, dan cache.
DNS server slave adalah DNS yang berfungsi sebagai backup apabila DNS server master kita mengalami masalah. DNS server slave ini akan secara berkala mengupdate perubahan-perubahan yang terjadi pada DNS server master kita. Sedangkan DNS server cache tidak memiliki database host, tetapi berfungsi mencari jawaban dari DNS server terdekat dan menyimpan datanya bila ada client yang hendak merequest alamat yang sama. Hal ini supaya request tidak perlu dilakukan sampai ke DNS server root lagi, demi efisiensi waktu.
Kita akan menggunakan BIND untuk mengatur DNS server kita, instalasi seperti biasa lewat ports dari cd /usr/ports/dns/bind9. Kemudian make install clean, BIND yang terinstall adalah bind-9.3.1
Pada dasarnya ada 3 jenis file yang mutlak diperlukan supaya DNS server kita bisa berjalan dengan lancar. Yaitu : file named.conf, file database domain, file database reverse domain.
File named.conf adalah file konfigurasi dari BIND, sementara file database domain berisi hostname yang dimapping ke IP addressnya, sedangkan file database reverse domain berisi IP address yang dimapping ke hostname nya.
Sebelum kita mulai membuat file named.conf, kita harus mengkonfigurasi terlebih dahulu daemon yang mengatur starting dan stopping BIND, yaitu RNDC (Remote Name Daemon Controller). Untuk mengenerate key untuk konfigurasi rndc.conf, gunakan perintah
$ rndc-confgen
# Start of rndc.conf
key “rndc-key” {
algorithm hmac-md5;
secret “LctVnbqQQPHiZJ80ZwnFDA==”;
};options {
default-key “rndc-key”;
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf# Use with the following in named.conf, adjusting the allow list as needed:
# key “rndc-key” {
# algorithm hmac-md5;
# secret “LctVnbqQQPHiZJ80ZwnFDA==”;
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { “rndc-key”; };
# };
# End of named.conf
Sesuai perintahnya, copy lah bagian untuk rndc.conf kedalam file rndc.conf kita yang diletakkan di direktori /etc/namedb. Lalu copy lah bagian untuk named.conf kedalam named.conf yang ada di direktori yang sama. Kemudian cek status rndc dengan perintah
rndc status
Apabila keluar baris berikut ini, berarti rndc sudah berfungsi dengan baik
number of zones: 0
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/1000
tcp clients: 0/100
server is up and running
Apabila rndc masih bermasalah, saya menyarankan untuk merestart sistem anda.
Sekarang marilah kita edit named.conf kita, buka file named.conf dengan text editor favorit anda.
Pertama-tama kita harus menenetukan direktori root untuk file-file yang diperlukan oleh DNS server kita. Gunakan perintah berikut ini :
//Root Directory
options {
directory “/etc/namedb”;
pid-file “/var/run/named/pid”;
dump-file “/var/dump/named_dump.db”;
statistics-file “/var/stats/named.stats”;
};
Selanjutnya kita masukkan konfigurasi untuk zone-zone yang akan kita buat. Saya akan meletakkan 4 zone disini, yaitu zone root (.), zone magang.ajk, zone reverse local domain, dan zone reverse network kita. Secara lengkapnya, bagian ini akan terlihat seperti ini :
//zone config
zone “.” {
type hint;
file “named.root”;
};zone “0.0.127.in-addr.arpa” IN {
type master;
file “0.0.127.in-addr.arpa.zone”;
};zone “magang.ajk” IN {
type master;
file “magang.ajk.zone”;
};zone “79.205.167.in-addr.arpa” IN {
type master;
file “79.205.167.in-addr.arpa.zone”;
};
Kemudian kita harus membuat zone data file dari setiap zone yang telah kita cantumkan pada named.conf tadi.
Zone data file yang pertama adalah root zone data file yang bernama named.root
File ini sudah ada pada direktori /etc/namedb semenjak kita menginstall BIND. FIle ini berisi database DNS server root yang ada diseluruh dunia.
Zone data file yang kedua adalah magang.ajk.zone
Kita mulai dengan menyatakan Time To Live DNS server kita. Yaitu sebuah angka yang menyatakan berapa lama DNS server lain bisa melakukan cache dari database kita, contohnya :
$TTL 3h
Kemudian kita harus menambahkan SOA record untuk zone kita. SOA mengandung informasi tentang seluruh zone yang ada. SOA dimulai dengan domain name dari zone kita, kemudian spesifikasi dari kelas zona kita (biasanya IN –> Internet). Setelah itu, SOA memerlukan 7 field data, yaitu :
*MNAME Field –> menyatakan domain dari primary master zone kita.
*RNAME Field –> menyatakan e-mail addres dari admin zone tersebut (ganti @ dengan . pada e-mail address)
*Serial Number –> apabila kita mengupdate zone file kita, angka ini harus selalu di increment, supaya slave DNS mengambil update nya.
*Refresh Rate –> menyatakan berapa lama DNS slave harus mengecek apakah Serial Number sudah di increment pada zone tersebut.
*Retry Value –> menyatakan berapa lama DNS slave harus mengecek DNS master apabila pengecekan Serial Number gagal.
*Negative Cache –> menyatakan berapa lama DNS server lain untuk menyimpan cache negative, seperti NXDOMAIN dimana domain name yang dicari oleh client tidak ada pada zone tersebut.
Contoh dari SOA untuk magang.ajk zone :
@ IN SOA ns1 satria.bramana.comlabs.itb.ac.id (
1 ; Serial Number
30m ; Refresh Rate
15m ; Retry Interval
1w ; Expired Delay
1h ) ; Negative Cache TTL
Terakhir, kita tambahkan NS record untuk domain name pada zone magang.ajk, contohnya :
IN NS ns1
ns1 IN A 167.205.79.158
www.bramz4ever IN A 167.205.79.158
Selesai sudah file magang.ajk.zone kemudian selanjutnya kita harus membuat file database reverse untuk IP 167.205.79.158 contohnya :
$TTL 3h
79.205.167.in-addr.arpa. IN SOA ns1.magang.ajk. satria.bramana.c
omlabs.itb.ac.id (
1 ; Serial Number
5h ; Refresh Rate
5m ; Retry Interval
5w ; Expired Delay
5m ) ; Negative Cache TTLIN NS ns1.magang.ajk.
158.79.205.167.in-addr.arpa. IN PTR ns1.magang.ajk.
Selanjutnya kita tinggal membuat file reverse localhost zone untuk keperluan looping. Contohnya adalah :
$TTl 3h
0.0.127.in-addr.arpa. IN SOA ns1.magang.ajk. satria.bramana.comlabs.itb.ac.id (
1 ; Serial Number
5w ; Refresh Rate
5m ; Retry Interval
5w ; Expired Delay
5m ) ; Negative Cache TTLIN NS ns1.magang.ajk.
1.0.0.127.in-addr.arpa. IN PTR localhost.
Lengkap sudah file-file yang diperlukan oleh DNS server kita. Untuk mengecek apakah ada kesalahan syntax pada file-file tersebut, gunakan perintah :
named-checkzone zonename zonefilename contohnya :
named-checkzone magang.ajk magang.ajk.zone
Apabila ada kesalahan, maka akan ditunjukkan baris dimana kesalahan tersebut berada. Untuk mengecek konfigurasi named.conf, kita bisa menggunakan :
named-checkconf
Terakhir apabila semuanya sudah benar, kita harus mereload BIND, caranya gunakan perintah rndc ini:
rndc reload
Oiya, supaya sistem kita menggunakan DNS server yang sudah kita setting tadi, jangan lupa untuk terlebih dahulu merubah file /etc/resolve.conf dan mengisinya dengan alamat localhost kita, yaitu 127.0.0.1 sebagai DNS server ^__^
January 3, 2008 at 6:06 pm
Mas, kalo udah disetting seperti yand diatas, dan kita dah bisa resolve apa yang sudah tertulis di dalem settingan tersebut. Tetapi kenapa kita gak bisa resolve ke luar yah ? seperti ke google.co.id, padahal komputer kita dah konek loh ke internet. Gimana caranya yah ? apa ada penjelasannya ? terimakasih
Wassalam
January 3, 2008 at 6:42 pm
kalau boleh saya tahu, mas ngetes nya dengan menggunakan apa? apakah ping google.co.id? atau nslookup google.co.id? kalau ping google.co.id memang tidak bisa, karena dari server googlenya diproteksi. coba gunakan nslookup saja untuk mengetes name resolve.
January 6, 2008 at 8:45 pm
Pinging google.co.id [64.233.161.104] with 32 bytes of data:
Reply from 72.14.207.104: bytes=32 time=401ms TTL=240
February 27, 2008 at 11:15 am
skm knl.ksh tu dong hierarki root itu apa sih