1. Instalasi & Konfigurasi DNS Server
Kopdar Komunitas Zimbra Indonesia #3
10 April 2010 - Universitas Paramadina Jl. Gatot Subroto Kav. 97 Mampang, Jakarta
2. Domain Name System
Apa itu DNS?
Sistem Penamaan Domain atau DNS (Domain Name System) adalah
sebuah sistem yang menyimpan informasi tentang nama host dan nama
domain dalam bentuk database terdisdtribusi didalam jaringan komputer.
Fungsi utama DNS adalah menerjemahkan nama host menjadi alamat IP
atau sebaliknya. Fungsi lainnya adalah memberikan informasi tentang suatu
host ke jaringan internet yang terhubung dengan DNS.
3. Kenapa harus ada DNS?
Diperlukan sistem yang bisa mengganti alamat host hanya disatu tempat dan
host lain akan mempelajari perubahan tersebut secara dinamis, dan inilah
yang dinamakan DNS Server.
4. Komponen DNS?
Resolver
Merupakan sebuah program klien yang berjalan di komputer pengguna,
yang akan melakukan request ke DNS Recursive.
Recursive DNS Server
Mesin yang akan melakukan pencarian atas permintaan resolver
danmesin yang akan memberikan jawaban atas permintaan tersebut.
Authoritative DNS Server
Adalah mesin yang bertanggung jawab atas sebuah domain,
dan memberikan jawaban terhadap recursor.
6. Bagaimana DNS Bekerja?
Komputer akan meminta alamat IP dari domain misalnya zimbra.web.id
yang kemudian disampaikan ke resolver.
Resolver akan mencari informasi dari chace DNS ISP / DNS lokal, jika tidak
ada maka recusive akan menanyakan root nameserver untuk mendapatkan
list nameserver yang bertanggung jawab terhadap domain .id.
Resolver kemudian akan menghubungi nameserver .id untuk menanyakan
informasi nameserver yang bertangungjawab terhadap domain .web.id,
.web.id akan memberikan respon bahwa ns.zimbra.web.id dan
ns.zimbra.web.id adalah nameserver yang bertanggung jawab terhadap
domain tersebut.
7. Ilustrasi?
8. Resource record?
Nama
Nama domain mengacu pada catatan sumber daya
Jenis
Jenis catatan sumber daya:
TTL
Time To Live RR, yaitu berapa lama resolvers harus menyimpannya dalam
cache sebelum menjadikannya expired
Class
Jenis jaringan atau perangkat lunak catatan berlaku untuk; kelas internet saat
ini berlaku (IN), CHAOSnet (CH) dan Hesiod (HS). Dan yang akan dibahas
hanya kelas Internet, yang berlaku untuk TCP/IP.
RDATA
Data sumber daya aktual yang terkait dengan nama domain
Main record DNS adalah sebagai berikut (lihat [RFC1035]):
9. A Alamat ()
Sebuah host 32-bit alamat IP
Aaaa (Alamat IPv6)
Sebuah alamat host dalam format IPv6
CNAME (Canonical Name)
Menentukan sebuah alias untuk nama domain, yaitu FQDN berbeda yang
dapat digunakan untuk merujuk ke host yang sama
Key
Server public key untuk TSIG dan DNSSEC
MX (Mail eXchanger)
Menetapkan daftar mail server yang mengirim surat untuk itu nama domain
NS (Name Server)
server nama otoritatif untuk domain
PTR (Pointer)
Sebuah pointer ke lokasi lain dalam ruang nama domain, yang merupakan
sebagian besar digunakan untuk menghubungkan nama domain dengan
alamat IP dalam "-domain di addr.arpa" untuk resolusi nama reverse
10. SOA (Start Of Authority)
Mengidentifikasi awal dari zona otoritas
TXT (Teks)
teks string yang berisi data acak (sampai 255 byte) yang berhubungan
dengan nama
11. Bind sebagai DNS Server?
Sejarah BIND Silahkan dilihat di http://www.isc.org/products/BIND/bind-
history.html
12. Instalasi BIND?
Pertama periksa apakah bind sudah terinstall, hapus user named bila ada
# for a in $(rpm -qa | grep ^bind); do rpm -e --nodeps $a; done
# userdel -r named
Hapus direktori named
# rm -rf /var/named
Download bind, sebelumnya kunjungi link download ini dan pilih source
.tar.gz
# wget http://ftp.isc.org/isc/bind9/9.5.0-P2/bind-9.5.0-P2.tar.gz
13. Masuk ke direktori hasil ekstrak tadi:
# cd bind-9.5.0-P2
Kemudian compile & instal file hasil ekstrak tersebut:
# ./configure prefix=/usr/local/named
# make
# make install
Silahkan buat user yang akan menjalankan service tersebut:
# useradd -d /var/named -s /bin/false named
14. Kemudian masuk ke direktori user named dan download file named.root yag
berisi informasi tentang root server:
# cd /var/named
# wget www.internic.net/zones/named.root
Selanjutnya buat file untuk reverse PTR localhost, disini saya menggunakan
vi editor [my favorite]
# vi db.127.0.0
15. Isi file db.127.0.0 adalah :
$TTL 3h
@ IN SOA ns.zimbra.web.id. hostmaster.zimbra.web.id. (
2009151209 ; serial
3h ; refresh after 3 hours
1h ; retry after 1 hour
1w ; expire after 1 week
1h ) ; negative caching TTL of 1 hour
; Name servers
IN NS ns.zimbra.web.id.
; Addresses (pointing to canonical names)
1 IN PTR localhost.
Note: format serial adalah yy/mm/dd/hh
16. # cp db.127.0.0 db.192.168.7
# cp db.127.0.0 db.10.107.33
Next.... buat file yang berisi tentang zone dari localhost:
# vi db.localhost
Isi dari file db.localhost adalah :
$TTL 3h
@ IN SOA ns.zimbra.web.id. hostmaster.zimbra.web.id. (
2009151209 ; serial
3h ; refresh after 3 hours
1h ; retry after 1 hour
1w ; expire after 1 week
1h ) ; negative caching TTL of 1 hour
; Name servers
IN NS ns.zimbra.web.id.
; Addresses for the canonical names
IN A 127.0.0.1
17. Buat db.0
# vi db.0
$TTL 3h
@ IN SOA ns.zimbra.web.id. hostmaster.zimbra.web.id. (
2009151209 ; serial
3h ; refresh after 3 hours
1h ; retry after 1 hour
1w ; expire after 1 week
1h ) ; negative caching TTL of 1 hour
; Name servers
IN NS ns.zimbra.web.id.
18. Buat file db.255
# vi db.255
$TTL 3h
@ IN SOA ns.zimbra.web.id. hostmaster.zimbra.web.id. (
2009151209 ; serial
3h ; refresh after 3 hours
1h ; retry after 1 hour
1w ; expire after 1 week
1h ) ; negative caching TTL of 1 hour
; Name servers
IN NS ns.zimbra.web.id.
19. Buat file db.1.2.3
# vi db.1.2.3
$TTL 3h
@ IN SOA ns.zimbra.web.id. hostmaster.zimbra.web.id. (
2009121509 ; serial
3h ; refresh after 3 hours
1h ; retry after 1 hour
1w ; expire after 1 week
1h ) ; negative caching TTL of 1 hour
; Name servers
IN NS ns.zimbra.web.id.
21. Buat sebuah deirktori untuk menyimpan file konfigurasi dari demon program
BIND:
# mkdir /usr/local/named/etc
Buat file /usr/local/named/etc/named.conf yang akan dijadikan sebagai file
konfigurasi dari program BIND, dibawah ini saya contohkan file named.conf
yang saya gunakan. Ini berdasarkan dari beberapa referensi yang saya
temukan di internet:
# vi /usr/local/named/etc/named.conf
Isi dari file named.conf:
22. acl "xfer" {
202.123.234.100/32; // secondary name server
};
acl "trusted" {
// Masukan ip yang diijinkan melakukan recursive query
// tambah sesuai kebutuhan
202.123.234.0/24; //Example
192.168.0.0/24; //LAN
localhost; //Server ini
};
23. acl "bogon" {
// Hapus atau comment LAN anda dari acl bogon ini
0.0.0.0/8;
1.0.0.0/8;
2.0.0.0/8;
5.0.0.0/8;
7.0.0.0/8;
10.0.0.0/8;
23.0.0.0/8;
27.0.0.0/8;
31.0.0.0/8;
36.0.0.0/8;
37.0.0.0/8;
dst...
// 192.168.0.0/24; LAN saya
28. view "intranet" in {
match-clients {"trusted"; };
recursion yes;
allow-transfer { "xfer"; };
additional-from-auth yes;
additional-from-cache yes;
zone "zimbra.web.id" {
type master;
file "master/db.zimbra";
allow-update { xfer; };
};
29. zone "33.107.10.in-addr.arpa" {
type master;
file "master/db.10.107.33";
};
zone "7.168.192.in-addr.arpa" {
type master;
file "master/db.192.168.7";
};
zone "3.2.1.in-addr.arpa" {
type master;
file "master/db.1.2.3";
};
30. # Loopback address
zone "localhost" {
type master;
file "master/db.localhost";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "master/db.127.0.0";
};
# Special zones
zone "255.in-addr.arpa" {
type master;
file "master/db.255";
};
zone "0.in-addr.arpa" {
type master;
file "master/db.0";
};
31. # Root zone
zone "." {
type hint;
file "master/named.root";
};
};
view "external-chaos" chaos {
match-clients { any; };
recursion no;
zone "." {
type hint;
file "/dev/null";
};
zone "bind" {
type master;
file "master/db.bind";
allow-query { any; };
allow-transfer { none;};
};
};
32. Selanjutnya generate file konfigurasi yang akan digunakan oleh program
rndc, yang perlu diingat adalah hasil dari perintah rndc-confgen tidak selalu
sama, sebaiknya diperhatikan.
# /usr/local/named/sbin/rndc-confgen
Kemudian copy paste dari asil perintah diatas mulai dari ibaris "Start of
rndc.conf" sampai dengan baris "End of rndc.conf" dan simpan pada direktori
dan nama file "/usr/local/named/etc/rndc.conf"
Selanjutnya copy paste lagi mulai dari baris "rndc-key" sampai pada baris
paling bawah atau "#End named.conf" ke /usr/local/named/etc/named.conf
dan jangan lupa menghilangkan tanda # kecuali pada "#End named.conf"
karena yang ini bukan termasuk dalam script konfigurasi atau hanya bersifat
menerangkan. Ok, dibawah ini adalah contoh dari langkah-langkah diatas:
Isi dari file /usr/local/named/etc/rndc.conf:
33. Isi dari file /usr/local/named/etc/rndc.conf:
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "vukamQmCQ9m21eQx/kChqg==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
34. Sedangkan pada file /usr/local/named/etc/named.conf ditambahkan:
# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
algorithm hmac-md5;
secret "vukamQmCQ9m21eQx/kChqg==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf
35. Langkah selanjutnya adalan mengubah kepemilikan home direktori dari user
named, kemudian menjalankan daemon dari program BIND:
# chown -R named.named /var/named
Jalankan BIND:
# /usr/local/named/sbin/named -u named -c /usr/local/named/etc/named.conf
Jika sukses anda bisa melihat pada file /var/log/messages kira-kira seperti
berikut:
# tail -f /var/log/messages
36. Apr 10 09:06:07 server02 named[9389]: zone 0.168.192.in-addr.arpa/IN/intranet:
loaded serial 2009151209
Apr 10 09:06:07 server02 named[9389]: zone 255.in-addr.arpa/IN/intranet: loaded
serial 2009151209
Apr 10 09:06:07 server02 named[9389]: zone localhost/IN/intranet: loaded serial
2009151209
Apr 10 09:06:07 server02 named[9389]: zone zimbra.web.id/IN/intranet: loaded serial
2009151974
Apr 10 09:06:07 server02 named[9389]: zone bind/CH/external-chaos: loaded serial
2009050200
Apr 10 09:06:07 server02 named[9389]: running
37. Tambahkan perintah "/usr/local/named/sbin/named iu named -c
/usr/local/named/etc/named.conf" pada rc.local
root@ns1~]# echo /usr/local/named/sbin/named -u named -c
/usr/local/named/etc/named.conf >> /etc/rc.local
Kemudian set resolver agar menggunakan name server localhost:
# echo "nameserver 127.0.0.1" > /etc/resolv.conf
Testing query menggunakan name server localhost dengan perintah host :
# host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.
# host localhost
localhost has address 127.0.0.1