Install dan konfigurasi DNS Server Bind9 di CentOS 6.3

Di tutorial ini saya asumsikan CentOS dalam keadaan fresh install.

asumsi
hostname: dns
domain: intranet.virtual
ip address: 192.168.8.2/24
gateway: 192.168.8.1
dns1: 127.0.0.1

1. Periksa apakah paket bind sudah terinstall beserta dependency nya.

[root@dns ~]# rpm -qa | grep bind
rpcbind-0.2.0-9.el6.i686
ypbind-1.20.4-29.el6.i686
bind-utils-9.8.2-0.10.rc1.el6.i686
bind-libs-9.8.2-0.10.rc1.el6.i686
samba-winbind-clients-3.5.10-125.el6.i686

2. Jika belum, install paket bind dan bind-chroot.

[root@dns ~]# yum install bind bind-chroot -y
Dependencies Resolved

=====================================================================
Package          Arch      Version                Repository    Size
=====================================================================
Installing:
 bind           i686   32:9.8.2-0.10.rc1.el6_3.5   updates      4.0 M
 bind-chroot    i686   32:9.8.2-0.10.rc1.el6_3.5   updates       70 k
Updating for dependencies:
 bind-libs      i686   32:9.8.2-0.10.rc1.el6_3.5   updates      882 k
 bind-utils     i686   32:9.8.2-0.10.rc1.el6_3.5   updates      180 k

Transaction Summary
=====================================================================
Install       2 Package(s)
Upgrade       2 Package(s)

3. Generate key menggunakan perintah ‘rndc-confgen’ (sebenarnya fungsi ini belum diperlukan di tutorial ini. Tapi sengaja saya sertakan untuk tutorial lanjutan yg akan saya buat nanti.)

[root@dns ~]# rndc-confgen -a
wrote key file "/etc/rndc.key"

4. Untuk memastikan bahwa Bind memang bekerja di lingkungan ‘chroot’, kita dapat melihatnya dengan perintah berikut:

[root@dns named]# grep ROOTDIR /etc/sysconfig/named
# ROOTDIR="/var/named/chroot"  --  will run named in a chroot environment.
#empty in the ROOTDIR directory. It will simplify maintenance of your
#at startup. Don't add -t here, use ROOTDIR instead.
ROOTDIR=/var/named/chroot
[root@dns named]#

5. Tanggal dan jam adalah faktor yg sangat penting, meskipun terlihat hal yg sepele🙂. Sesuaikan tanggal dan jam system operasi anda dengan waktu saat ini.

[root@dns ~]# date
Tue Nov 27 12:40:36 BNT 2012

6. Jalankan service named.

[root@dns ~]# service named start
Starting named: [ OK ]
[root@dns ~]#

7. Lakukan sedikit testing, untuk memastikan Bind dapat melakukan resolving domain ke internet, sehingga nanti memudahkan untuk troubleshooting.

[root@dns ~]# nslookup google.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
Name:	google.com
Address: 74.125.128.138
Name:	google.com
Address: 74.125.128.113
Name:	google.com
Address: 74.125.128.101
Name:	google.com
Address: 74.125.128.102
Name:	google.com
Address: 74.125.128.100
Name:	google.com
Address: 74.125.128.139

[root@dns ~]#
[root@dns ~]# ping google.com -c3
PING google.com (74.125.128.113) 56(84) bytes of data.
64 bytes from hg-in-f113.1e100.net (74.125.128.113): icmp_seq=1 ttl=48 time=59.1 ms
64 bytes from hg-in-f113.1e100.net (74.125.128.113): icmp_seq=2 ttl=48 time=61.2 ms
64 bytes from hg-in-f113.1e100.net (74.125.128.113): icmp_seq=3 ttl=48 time=61.1 ms
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 5333ms
rtt min/avg/max/mdev = 58.192/59.920/61.249/1.305 ms
[root@dns ~]#

8. OK, tampaknya bind sudah berjalan dan berfungsi, sekarang kita akan membuat domain zone. Edit file named.conf.

[root@dns ~]# nano /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

acl "server" { 127.0.0.1; 192.168.8.2; }; // Ini adalah ACL IP Address server CentOS
acl "intranet" { 192.168.8.0/24; }; // Ini adalah ACL LAN

controls {
	inet * port 953	
	allow { server; } keys { "rndc-key"; };
};

include "/etc/rndc.key"; // Sertakan file rndc.key

options {
	listen-on port 53 { server; }; // Sesuaikan dengan ACL yg kita buat diatas.

//	listen-on-v6 port 53 { ::1; }; // Komen jika tidak diperlukan
	directory 	"/var/named";
   	dump-file 	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query     { server; intranet; };
	recursion yes;

 	dnssec-enable yes;
	dnssec-validation yes;
	dnssec-lookaside auto;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";
	managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;};
};

zone "." IN {
	type hint;
	file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Tambahkan dns zone berikut:

zone "intranet.virtual" IN {
	type master;
	file "intranet.conf";
	allow-update { none; };
};

zone "8.168.192.in-addr.arpa" IN {
	type master;
	file "intranet-rev.conf";
	allow-update { none; };
};

9. Copy template dns menjadi file intranet.conf dan intranet-rev.conf sesuai dengan yg kita definisikan di file zona.

[root@dns named]# cd /var/named
[root@dns named]# cat named.localhost > intranet.conf
[root@dns named]# cat named.loopback > intranet-rev.conf
[root@dns named]# nano intranet.conf
[root@dns named]# nano intranet-rev.conf

10. Edit file dns record seperti berikut:

## intranet.conf
$TTL 1D
@IN	SOA	dns.intranet.virtual.	root.intranet.virtual. (
					1	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum

		NS	dns.intranet.virtual.

router		A	192.168.8.1
dns		A	192.168.8.2

 

NOTE: Jangan lupa! Nama domain harus di akhiri dengan '.' (titik).

 

## intranet-rev.conf
$TTL 1D
@IN	SOA	dns.intranet.virtual.	root.intranet.virtual. (
						1	; serial
						1D	; refresh
						1H	; retry
						1W	; expire
						3H )	; minimum

		NS	dns.intranet.virtual.

dns		A	192.168.8.2

1		PTR	router.intranet.virtual.
2		PTR	dns.intranet.virtual.

11. Lakukan update permission pada file2 yg berkaitan.

[root@dns named]# chmod 640 /etc/rndc.key
-rw-r-----. 1 root root 77 Nov 27 12:38 /etc/rndc.key
[root@dns named]# chown root.named /etc/rndc.key
[root@dns named]# chown root.named intranet*

12. restart service bind

[root@dns named]# service named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]

[root@dns named]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.5
CPUs found: 1
worker threads: 1
number of zones: 21
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

13. Lakukan uji coba.

[root@dns named]# nslookup router
Server:		127.0.0.1
Address:	127.0.0.1#53

Name:	router.intranet.virtual
Address: 192.168.8.1

[root@dns named]# nslookup dns
Server:		127.0.0.1
Address:	127.0.0.1#53

Name:	dns.intranet.virtual
Address: 192.168.8.2
[root@dns named]# ping google.com
PING google.com (74.125.128.101) 56(84) bytes of data.
64 bytes from hg-in-f101.1e100.net (74.125.128.101): icmp_seq=1 ttl=48 time=60.0 ms
64 bytes from hg-in-f101.1e100.net (74.125.128.101): icmp_seq=2 ttl=48 time=58.5 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 5394ms
rtt min/avg/max/mdev = 57.703/58.773/60.097/0.993 ms
[root@dns named]#

14. Aktifkan bind pada saat startup, agar tiap kali system di reboot, service bind otomatis dijalankan.

[root@dns named]# chkconfig named on

15. Terakhir, pastikan port 53 tidak ter block oleh firewall.

[root@dns named]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
[root@dns named]# iptables -I INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT

## Selesai ##

  1. Eh, ternyata Anda pengguna Centos rupanya…

    Saya kaget ada komentar baru sore ini. Dan komentar itu dari Anda. Terima kasih. Saya sengaja mencari orang-orang yang berpikiran terbuka (baca: mau menerima kebenaran). Dan sepertinya saya menemukannya lagi pada Anda.

    Jangan khawatir, Kang. Saya yakin suatu saat ada masanya Linux akan digunakan pengguna Windows Indonesia.

    • terima kasih sudah mau berkunjung ke blog saya. Iya, memang kita harus selalu berpikiran positif, karena saya melihat, potensi bangsa Indonesia sangat besar. Terutama keinginan untuk belajar di generasi muda sangat tinggi. Ini juga iseng² bikin blog, tapi belum bisa update secara rutin karena padatnya aktifitas.🙂

  2. Terima kasih telah membalas cepat komentar saya. Pertama-tama, saya apresiasi dulu niat akang menulis dengan lengkap, tidak patuh pada budaya singkatan. Mohon dipertahankan karena itulah simbol orang yang ‘rajin’.

    Kemudian, saya setuju kalau generasi muda punya semangat yang tinggi. Ayo diarahkan sebagiannya ke bidang open source, jangan sampai mereka teralihkan kepada pembajakan. Semoga Allah juga menjaga saya agar tidak jauh. Oya, saya jadi terinspirasi oleh komentar Anda ini.

    Terima kasih, Kang Suhad. Tidak mengapa tidak update secara rutin juga. Anda telah berusaha😀

    Oh, saya takkan ragu langsung kunjungi kalau ada blog Linux. Karena sedikit jumlahnya dan saya ingin punya teman bicara🙂

    • Perihal tidak menyingkat tulisan, saya terinspirasi oleh senior sekaligus mentor saya, beliau pernah berpesan pada saya, “ikatlah ilmu dengan menuliskannya”, jadi kalau tulisannya sulit di mengerti, nanti membuat bingung yang baca, dan kandungan ilmunya tidak dapat di resapi oleh pikiran🙂.

      Iya Mas Ade, sedikit banyak kita berusaha mengenalkan ‘semampu’ kita, lagian saya pun juga masih di tahapan belajar.

      Keuntungan menggunakan Linux, selain menjadikan pengguna bisa berpikir dewasa, secara tidak langsung juga membuat kita menjadi mandiri, sekaligus memperbanyak teman.🙂.

      • Ini yang saya berpenyakit susah mengucapkannya:

        ‘selain menjadikan pengguna bisa berpikir dewasa, secara tidak langsung juga membuat kita menjadi mandiri’

        akang bisa mengucapkan dengan enteng. Saya harus mikir lama untuk memperolehnya. Bagus, inspirasi yang bagus. Ikatlah ilmu dengan menuliskannya itu.

        Terima kasih. Diskusi yang menyenangkan. Apa akang sering main ke IRC fedora-id? Ayo, kita bicara di sana!
        😀

      • Ternyata kata-kata itu asalnya dari sahabat yan mulia Umar bin Khattab dan Anas bin Malik. Saya kira sebelumnya dari Imam Syafi’i secara mutlak. Sumbernya http://ibnabid.wordpress.com/2007/03/11/ikatlah-ilmu-dengan-menuliskannya/ pada komentar Ustadz Abul Jauzaa.

  3. Ade Malsasa Akbar :

    Ini yang saya berpenyakit susah mengucapkannya:

    ‘selain menjadikan pengguna bisa berpikir dewasa, secara tidak langsung juga membuat kita menjadi mandiri’

    akang bisa mengucapkan dengan enteng. Saya harus mikir lama untuk memperolehnya. Bagus, inspirasi yang bagus. Ikatlah ilmu dengan menuliskannya itu.

    Terima kasih. Diskusi yang menyenangkan. Apa akang sering main ke IRC fedora-id? Ayo, kita bicara di sana!
    :D

    Saya mengatakan itu bukan tanpa sebab lho mas Ade, dulu awal saya belajar linux, tanya sana tanya sini, ya kadang kalo pas dapet pengguna senior yg ramah , jawabannya enak dan mudah di mengerti, tapi kalo dapet yg super sibuk, jawabannya setengah² jadi gak ngerti malah tambah pusing. Nah dari hal tsb saya mau gak mau mesti cari ide untuk mencari solusi, berusaha tidak menggantungkan pd org lain, mulai dari beli buku sampai pergi ke warnet, tapi saya senang, karena saya menemukan passion di situ😀.

    Ade Malsasa Akbar :

    Ternyata kata-kata itu asalnya dari sahabat yan mulia Umar bin Khattab dan Anas bin Malik. Saya kira sebelumnya dari Imam Syafi’i secara mutlak. Sumbernya http://ibnabid.wordpress.com/2007/03/11/ikatlah-ilmu-dengan-menuliskannya/ pada komentar Ustadz Abul Jauzaa.

    Alhamdulillah, ternyata sumber aslinya dari beliau.🙂. Mas Ade pemahaman agama Islam luas sekali ya, dulu sekolah di Ponpes mas?

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

%d bloggers like this: