ELECTRONIC ENGINEERING POLYTECNIC INSTITUT OF SURABAYA

Sabtu, 06 November 2010

Membangun Lokal DNS Server Bind pada Slackware 12.2

Coba Anda perhatikan alamat-alamat dibawah ini:

216.239.61.104

209.131.36.158

Apakah Anda mengenali alamat-alamat yang tertera di atas itu dan ketika Anda menuliskan alamat berupa angka itu di URL Browser apakah yang akan terjadi, pastinya Anda akan diarahkan ke suatu situs. Jika suatu saat Anda diminta kembali untuk membuka situs tersebut apakah Anda masih mengingat alamatnya?

Jika saya menuliskan alamat-alamat di atas dalam bentuk seperti:

216.239.61.104 = www.google.com

209.131.36.158 = www.yahoo.com

Tentunya Anda akan lebih mudah mengingat situs-situs tersebut dibandingkan harus menghafal alamat berdasarkan IP. Kita tidak perlu mengetahui penamaan asli berbasis angka (alamat IP) tetapi cukup dengan nama atau istilah yang dipahami oleh kita. Anda bisa bayangkan betapa rumitnya jika harus menghafal nama-nama mesin dalam jaringan dalam bentuk angka.


Pada jaringan internet, sebagaimana Anda pahami sampai saat ini, sebetulnya pengalamatan sebuah komputer menggunakan angka yang dikenal sebagai Internet Protocol (IP) Address yang terdiri dari 32 bit bilangan biner. Tentunya akan sukar bagi kita / user untuk mengingat sekian juta komputer di seluruh Internet dengan pengalamatan angka sebagaimana dijelaskan di atas. Untuk itu dikembangkan penamaan mesin yang lebih manusiawi menggunakan konsep Domain Name System (DNS).

DNS adalah salah satu jenis sistem yang melayani permintaan pemetaan IP Address ke FQDN (Fully Qualified Domain Name) dan FQDN ke IP Address. FQDN lebih mudah untuk diingat oleh manusia daripada IP Address. Tidak semua orang bisa menghafalkan 216.239.61.104, dan akan lebih mudah jika menghafalkan www.google.com.

DNS ditemukan oleh Paul Mocapetris pada tahun 1983. Spesifikasi asli muncul di RFC 882 dan 883. Tahun 1987 penerbitan RFC 1034 dan RFC 1035 membuat update terhadap spesifikasi DNS. Tentunya RFC 882 dan RFC 883 tidak berlaku lagi.

Jadi siapa yang memerlukan DNS? Tentunya Anda sebagai pengakses internet, tetapi sebagai pengakses internet tidak perlu membuat DNS Server, karena bisa menggunakan DNS server yang disediakan oleh ISP. Pengguna DNS selanjutnya tentu saja adalah ISP, dan mereka yang mengelola domain dan webserver.

Sebagai contoh, ketika Anda memasukkan alamat http://www.google.com, sebenarnya ada beberapa proses yang dilalui hingga halaman web ditampilkan di Web Browser Anda. Pada saat Anda memasukkan alamat tersebut, terlebih dahulu nama alamat akan dikirimkan ke DNS Server yang menangani host dan domain alamat tersebut untuk mencari berapa sebenarnya alat IP yang digunakan (Anda ingat, semua komputer di internet menggunakan IP Address untuk berkomunikasi dan bukan nama). Setelah menemukan alamat IP barulah kemudian halaman website yang diminta dikirim ke Web Browser.

Pada sistem operasi Linux, DNS diimplementasikan dengan menggunakan software Berkeley Internet Name Domain (BIND), BIND ini memiliki dua sisi, yaitu sisi client dan sisi server. Sisi client disebut resolver. Resolver ini bertugas membangkitkan pertanyaan mengenai informasi domain name yang dikirimkan kepada sisi server. Sisi server BIND ini adalah sebuah daemon yang disebut named (baca: name di). Ia yang akan menjawab query-query dari resolver yang diberikan kepadanya.

Bagaimana dengan Linux Slackware 12.2 sendiri? Secara default BIND sudah terinstall di mesin Slackware Anda, yakni bind9.

root@server-smkn3tkj:/# ls /var/log/packages/ |grep bind

bind-9.4.2_P2-i486-1

kdebindings-3.5.10-i486-2

Anda lihat bahwa di mesin kita telah terinstal paket bind-9.4.2_P2-i486-1. Ada beberapa file-file instalasi default yang berkaitan dengan ini, yakni:

var/named/caching-example/named.ca

var/named/caching-example/named.local

var/named/caching-example/localhost.zone

etc/rc.d/rc.bind

etc/named.conf

Tiga file awal adalah contoh dari konfigurasi bind9, file selanjutnya adalah init script (rc.bind) dan konfigurasi dari bind (named.conf). Untuk setting BIND ini, file-file yang harus Anda perhatikan adalah:

  1. /etc/resolv.conf

    Berisi alamat Domain atau alamat IP dari name server.

  2. /etc/named.conf

    Berisi keterangan letak dan jenis databases yang dibutuhkan oleh BIND

  3. /var/named/named.ca

    Berisi informasi data yang berada dalam domain root, yang akan dipergunakan name server jika ada resolver yang akan meminta nama domain diluar nama domain lokal.

  4. /var/named/named.local

    Berisi alamat loopback untuk alamat ke diri sendiri dengan alamat 127.0.0.1

Persiapan Setting Domain Baru

Untuk memudahkan pemahaman setting DNS Server, Anda akan diajak membuat domain baru untuk DNS server, mail server, FTP Server, HTTP Server sekaligus dengan data sebagai berikut:

  • Hostname : ns1
  • Nama Domain : tkj-smk3bgr.net
  • Nama DNS Server : ns1.tkj-smk3bgr.net
  • IP DNS : 192.168.1.21
  • Nama Mail Server : mail.tkj-smk3bgr.net
  • Nama HTTP Server : www.tkj-smk3bgr.net
  • Nama FTP Server : ftp.tkj-smk3bgr.net

Perhatikan! Karena kita menggunakan IP Address yang sama untuk DNS, Mail, HTTP, FTP Server, maka kita akan menggunakan record CNAME (nama alias) dengan mendefinisikan ns1.tkj-smk3bgr.net mempunyai nama alias mail.tkj-smk3bgr.net, ftp.tkj-smk3bgr.net, www.tkj-smk3bgr.net.

Mengedit File /etc/named.conf

File ini merupakan konfigurasi utama untuk bind. File ini merupakan kumpulan statemen-statemen yang nilainya kita tentukan sesuai dengan DNS seperti apa yang kita inginkan. Berikut ini adalah isi file /etc/named.conf bawaan di slackware 12.2:

options {

directory “/var/named”;

/*

* If there is a firewall between you and nameservers you want

* to talk to, you might need to uncomment the query-source

* directive below. Previous versions of BIND always asked

* questions using port 53, but BIND 8.1 uses an unprivileged

* port by default.

*/

// query-source address * port 53;

};

//

// a caching only nameserver config

//

zone “.” IN {

type hint;

file “caching-example/named.root”;

};

zone “localhost” IN {

type master;

file “caching-example/localhost.zone”;

allow-update { none; };

};

zone “0.0.127.in-addr.arpa” IN {

type master;

file “caching-example/named.local”;

allow-update { none; };

};

1. Blok Pertama

options {

directory “/var/named”;

/*

* If there is a firewall between you and nameservers you want

* to talk to, you might need to uncomment the query-source

* directive below. Previous versions of BIND always asked

* questions using port 53, but BIND 8.1 uses an unprivileged

* port by default.

*/

// query-source address * port 53;

};

Blok ini merupakan global seting dari bind, direktory “/var/named” adalah direktori kerja dari bind, di direktori tersebut ditempatkan file-file konfigurasi domain yang biasa disebut zone (Perintah zone digunakan untuk menunjukkan domain yang dilayani oleh name server). Tidak disarankan untuk mengutak-atik blok ini kecuali Anda tahu apa yang Anda kerjakan. Baris ini memberitahukan kepada Server BIND dimana file-file zona disimpan.

2. Blok Kedua

zone “.” IN {

type hint;

file “caching-example/named.root”;

};

Blok ini merupakan blok root zone atau kasarnya alamat-alamat dari domain-domain international. Kita membutuhkan blok root zone ini.

3. Blok Ketiga

zone “localhost” IN {

type master;

file “caching-example/localhost.zone”;

allow-update { none; };

};

Blok ini adalah forward localhost, dalam artian jika dns server mendapatkan perintah untuk mengetahui alamat ip dari localhost maka bagian blok ini yang mengurusnya. Dengan kata lain yang berhak mengontrol server named adalah localhost.

4. Blok Keempat adalah Blok Tambahan

zone “0.0.127.in-addr.arpa” IN {

type master;

file “caching-example/named.local”;

allow-update { none; };

};

Baris-baris dibawah ini menyatakan bahwa kita akan mendefinisikan DNS server sebagai Primary Name Server untuk domain tkj-smk3bgr.net dan file-file forward adalah nama file yang merupakan zona file dari domain tkj-smk3bgr.net. Ini nama domain Anda yang di daftarkan di /etc/named.conf.

#Baris diatas untuk menterjemahkan FQDN ke IP Address (Forward Zone) dengan domain tkj-smk3bgr.net.

zone “tkj-smk3bgr.net” IN {

type master;

file “caching-example/db.tkj.smk3bgr”;

allow-update { none; };

};

Baris-baris dibawah ini adalah berisi reverse DNS Zone. Ini diperlukan agar DNS Server Anda dapat menterjemahkan dari nomor IP Address ke mana host pemilik IP Address dalam jaringan.

#Baris untuk menterjemahkan IP Address ke FQDN

#reverse Zone

zone “1.168.192.in-addr.arpa” IN {

type master;

file “caching-example/db.192.168.1″;

allow-update { none; };

};

#Setelah konfigurasi file named.conf jangan lupa untuk melakukan konfigurasi file zone.

Seting zone-file tkj-smk3bgr.net

Berikutnya adalah mengkonfigurasi Primary Name Server untuk Domain tkj-smk3bgr.net pada host ns1.tkj-smk3bgr.net dengan IP Address 192.168.1.21. Berdasarkan pada file /etc/named.conf kita akan membuat file sebagaimana yang didefinisikan pada file /etc/named.conf kita akan membuat file sebagaimana yang didefinisikan pada file /etc/named.conf file tersebut bernama “db.tkj.smk3bgr” dan reversenya “db.192.168.1”.

root@server-smkn3tkj:/var/named/caching-example# ls

localhost.zone named.ca named.local named.root

Anda tinggal merename localhost.zone dengan db.tkj.smk3bgr dan named.local dengan db.192.168.1 Caranya seperti ini:

root@server-smkn3tkj:/var/named/caching-example# cp localhost.zone db.tkj.smk3bgr

root@server-smkn3tkj:/var/named/caching-example# cp named.local db.192.168.1

root@server-smkn3tkj:/var/named/caching-example# ls

db.192.168.1 db.tkj.smk3bgr localhost.zone named.ca named.local named.root

Setting zona file db.tkj.smk3bgr

Setelah Anda mempunyai zona file dengan nama db.192.168.1 dan db.tkj.smk3bgr yang pada /var/named/caching-example. Langkah berikut adalah mengkonfigurasikan name server untuk domain tkj-smk3bgr.net pada host ns1.tkj-smk3bgr.net pada IP Address 192.168.1.21 sebagai berikutt

root@server-smkn3tkj:/var/named/caching-example# mcedit db.tkj.smk3bgr

$TTL 86400

$ORIGIN tkj-smk3bgr.net.

@ 1D IN SOA @ root (

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

1D IN NS ns1.tkj-smk3bgr.net.
1D IN A 192.168.1.21
IN MX 10 mail.tkj-smk3bgr.net
ns1 IN A 192.168.1.21
www IN CNAME ns1
ftp IN CNAME ns1
mail IN CNAME ns1

Penjelasan:

  1. TTL (Time To Live) yang mendefinisikan waktu lamanya data berada dalam database.

  2. SOA (Start of Authority) mendefinisikan hostname yang merupakan awal dari suatu zone.

  3. 42;serial: merupakan nomor serial dari zone file yang akan bertambah jika ada perubahan data.

  4. 3H;refresh: merupakan selang waktu yang diperlukan secondary name server untuk memeriksa perubahan pada Primary Name Server.

  5. 15M;retry: merupakan selang waktu secondary name server untuk mengulang pengecekan pada primary name server.

  6. IN NS ns1.tkj-smk3bgr.net: mendefinisikan bahwan hostname ns1.tkj-smk3bgr.net yang memegang tanggung jawab terhadap domain tkj-smk3bgr.net.

  7. IN MX 10 mail.tkj-smk3bgr.net mendefinisikan bahwa hostname mail.tkj-smk3bgr.net sebagai mail server pada domain tkj-smk3bgr.net.

  8. IN A 192.168.1.21: mendefinisikan bahwa hostname ns1.tkj-smk3bgr.net mempunyai IP Address 192.168.1.21.

  9. www NS CNAME ns1 mendefinisikan bahwa hostname ns1.tkj-smk3bgr.net mempunyai nama alias www.tkj-smk3bgr.net.

  10. ftp NS CNAME ns1 mendefinisikan bahwa hostname ns1.tkj-smk3bgr.net mempunyai nama alias ftp.tkj-smk3bgr.net.

  11. mail NS CNAME ns1 mendefinisikan bahwa hostname ns1.tkj-smk3bgr.net mempunyai nama alias mail.tkj-smk3bgr.net.

root@server-smkn3tkj:/var/named/caching-example# mcedit db.192.168.1

$TTL 86400

@ IN SOA tkj-smk3bgr.net. root.tkj-smk3bgr.net. (

1997022700 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

IN NS tkj-tkj-smk3bgr.net.

21 IN PTR tkj-tkj-smk3bgr.net.

Penjelasan:

  1. Penjelasan yang lain sama dengan penjelasan pada bagian tkj-smk3bgr.net

  2. IN PTR tkj-smk3bgr.net mendefinisikan bahwa hostname ns1.tkj-smk3bgr.net mempunyai IP Address 192.168.1.21

Menjalankan dan test Domain

Mengubah hak akses file rc.bind agar service bind bisa di eksekusi

root@server-smkn3tkj:/# chmod 755 /etc/rc.d/rc.bind

Anda juga bisa menggunaka perintah chmod +x /etc/rc.d/rc.bind

Perintah untuk menjalan service bind

root@server-smkn3tkj:/# etc/rc.d/rc.bind start

Perintah untuk mematikan service bind

root@server-smkn3tkj:/# /etc/rc.d/rc.bind stop

Perintah untuk merestart service bind

root@server-smkn3tkj:/# /etc/rc.d/rc.bind stop

Setelah perintah service bind dijalankan jangan lupa untuk melakukan pengecekan terhadap konfigurasi DNS yang kita bangun dengan perintah nslookup [DNS_server]. Jika terjadi pesan kesalahan seperti ini.

root@server-smkn3tkj:/# nslookup tkj-smk3bgr.net

Server: 202.134.0.155

Address: 202.134.0.155#53

** server can’t find tkj-smk3bgr.net: NXDOMAIN

Berarti nama DNSnya masih menggunakan DNS yang diberikan oleh speedy, jika komputer yang kita gunakan pernah dikoneksikan dengan internet. Untuk menyelesaikan masalah ini kita harus mengedit file resolv.conf pada direktori:

root@server-smkn3tkj:/# mcedit /etc/resolv.conf

nameserver 192.168.1.21

Maksud dari perintah di atas adalah memasukkan IP komputer kita menjadi nama server, karena DNS yang kita gunakan menggunakan IP 192.168.1.21. Setelah itu jika BIND berjalan baik Anda dapat melihat port 53 BIND dengan perintah dibawah ini:

root@server-smkn3tkj:/# nmap 192.168.1.21

Starting Nmap 4.76 ( http://nmap.org ) at 2009-03-03 15:03 WIT

Interesting ports on tkj-smk3bgr.net (192.168.1.21):

Not shown: 996 closed ports

PORT STATE SERVICE

22/tcp open ssh

37/tcp open time

53/tcp open domain

113/tcp open auth

Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

root@server-smkn3tkj:/#

root@server-smkn3tkj:/# host 192.168.1.21

21.1.168.192.in-addr.arpa domain name pointer tkj-smk3bgr.net.

root@server-smkn3tkj:/# host ns1.tkj-smk3bgr.net

ns1.tkj-smk3bgr.net has address 192.168.1.21

root@server-smkn3tkj:/# host -t ns tkj-smk3bgr.net

tkj-smk3bgr.net name server ns1.tkj-smk3bgr.net.tkj-smk3bgr.net.

root@server-smkn3tkj:/# host -t mx tkj-smk3bgr.net

tkj-smk3bgr.net mail is handled by 10 mail.tkj-smk3bgr.net.tkj-smk3bgr.net.

root@server-smkn3tkj:/# host -t cname www.tkj-smk3bgr.net

www.tkj-smk3bgr.net is an alias for ns1.tkj-smk3bgr.net.

root@server-smkn3tkj:/# host -t cname ftp.tkj-smk3bgr.net

ftp.tkj-smk3bgr.net is an alias for ns1.tkj-smk3bgr.net.

root@server-smkn3tkj:/# host -t cname mail.tkj-smk3bgr.net

mail.tkj-smk3bgr.net is an alias for ns1.tkj-smk3bgr.net.

root@server-smkn3tkj:/# dig ns1.tkj-smk3bgr.net

; <<>> DiG 9.4.2-P2 <<>> ns1.tkj-smk3bgr.net

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31865

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:

;ns1.tkj-smk3bgr.net. IN A

;; ANSWER SECTION:

ns1.tkj-smk3bgr.net. 86400 IN A 192.168.1.21

;; AUTHORITY SECTION:

tkj-smk3bgr.net. 86400 IN NS ns1.tkj-smk3bgr.net.tkj-smk3bgr.net.

;; Query time: 0 msec

;; SERVER: 192.168.1.21#53(192.168.1.21)

;; WHEN: Tue Mar 3 15:08:26 2009

;; MSG SIZE rcvd: 87

root@server-smkn3tkj:/#

root@server-smkn3tkj:/# nslookup -sil

> 192.168.1.21

Server: 192.168.1.21

Address: 192.168.1.21#53

21.1.168.192.in-addr.arpa name = tkj-smk3bgr.net.

>

root@server-smkn3tkj:/# dig -t MX tkj-smk3bgr.net

; <<>> DiG 9.4.2-P2 <<>> -t MX tkj-smk3bgr.net

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33530

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:

;tkj-smk3bgr.net. IN MX

;; ANSWER SECTION:

tkj-smk3bgr.net. 86400 IN MX 10 mail.tkj-smk3bgr.net.tkj-smk3bgr.net.

;; AUTHORITY SECTION:

tkj-smk3bgr.net. 86400 IN NS ns1.tkj-smk3bgr.net.tkj-smk3bgr.net.

;; Query time: 1 msec

;; SERVER: 192.168.1.21#53(192.168.1.21)

;; WHEN: Tue Mar 3 15:09:57 2009

;; MSG SIZE rcvd: 88

root@server-smkn3tkj:/#

oot@server-smkn3tkj:/# ping tkj-smk3bgr.net

PING tkj-smk3bgr.net (192.168.1.21) 56(84) bytes of data.

64 bytes from tkj-smk3bgr.net (192.168.1.21): icmp_seq=1 ttl=64 time=0.025 ms

64 bytes from tkj-smk3bgr.net (192.168.1.21): icmp_seq=2 ttl=64 time=0.026 ms

64 bytes from tkj-smk3bgr.net (192.168.1.21): icmp_seq=3 ttl=64 time=0.028 ms