Tujuan dari pembuatan server DNS resolving-caching tanpa domain adalah membuat sebuah server DNS yang dapat me-resolve semua permintaan nama domain dari jaringan lokal secara cepat. Ini bisa dilakukan karena proses resolving dilakukan pada server DNS lokal yang sebelumnya telah meng-caching nama domain hasil resolving akses oleh salah satu komputer dalam jaringan lokal tersebut. Resolving-caching name-server tersebut akan menyimpan hasil resolving dalam cache sehingga akses nama domain yang sama selanjutnya akan berjalan lebih cepat (mengurangi waktu tunggu) karena mengambil daricache server DNS tersebut. Server DNS resolving-caching sangat cocok untuk warung internet atau jaringan lokal yang membutuhkan resolving secara cepat pada koneksi yang tergolong lambat.
Penulis akan membahas spesifik pada distro berbasis
rpm
yaitu Red Hat pada beberapa bagian dari artikel ini, walaupun konsepnya hampir sama untuk distro lain.Pertama, kita harus mempunyai paket
bind
, bind-utils
dan caching-nameserver
. Ketika anda menginstal Linux distro Red Hat secara default maka paket ini biasanya sudah terinstal. Ketikkan:# rpm -qa |grep bind bind-utils-9.2.1-0.7x bind-9.2.1-0.7x # rpm -qa |grep caching caching-nameserver-7.2-1
Setelah memastikan paket-paket yang dibutuhkan sudah terinstal maka kita bisa mulai mengkonfigurasi.
Komentar
Komentar pada berkas konfigurasi akan diabaikan oleh program name-server (named
). Komentar bisa menggunakan /*
dan */
, //
, atau #
.Contoh:
/* Ini adalah Komentar Gaya C */ // Ini adalah Komentar Gaya C++ # Ini adalah Komentar Gaya Shell
Pada berkas database-cache name-server root dan loopback/localhost digunakan semikolon (
;
) untuk memberikan komentar di dalamnya.Konfigurasi
Masih ingatkah anda mengenai berkas-berkas yang dibutuhkan untuk menjalankan BIND (named
)? Berikut ini berkas-berkas yang harus dikonfigurasi untuk menjalankan server DNS BIND resolving-caching:- named.conf
Berkas ini pada Red Hat dan Slackware biasanya diletakkan pada direktori etc (/etc/named.conf). Editlah berkas konfigurasi ini dengan editor kesayangan anda. Isinya kurang lebih sebagai berikut:
// generated by named-bootconf.pl 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 "named.ca"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; }; key "key" { algorithm hmac-md5; secret "jggRewTTCgdTOUvWPd0cqPoRiQfKvoYYJnhpVqWcWpfrgSRedgKlpyjbmlsd"; };
Nama berkas named.ca dan named.local yang disebutkan di atas pada beberapa paket distribusi mungkin berbeda tapi sebenarnya hampir sama isinya.Barisdirectory
memberitahukan padanamed
untuk mencari berkas-berkas yang ada dalam konfigurasi dalam direktori yang ditunjukkan, dalam hal ini /var/named.
Jika anda dibelakang firewall, uncomment barisquery-source address * port 53
.
Bariszone
adalah menunjukkan zone yang otoritatif untuk nama domain bersangkutan dan diikuti dengan tipe name-server (hint
,master
,slave
). Khusus untukhint
digunakan untuk zone root (.). Tipemaster
untuk name-server primary-master sedangkan tipeslave
untuk name-server secondary-master/slave.
Selanjutnya diikuti nama berkas database zone, letaknya berada di direktori /var/named/ sesuai denganoptions
pada barisdirectory
. Zone untuk root (.) berisi daftar name-server root.
Bariszone
kedua yaitu0.0.127.in-addr.arpa
adalah zone untuk reverse-mapping alamat loopback.
Bariskey
merupakan baris yang menunjukkan bahwanamed
bisa dikontrol lewat programrndc
melalui localhost dengan secret-key yang sama atau konfigurasi key yang sama untuk metode transaksi antar name-server (TSIG) agar dapat melakukan zone-transfer dan dynamic update. - named.ca
Berkas ini berisi daftar name-server root di Internet. Berkas ini dapat anda update jika diperlukan melalui internic.net dengan program/perintahdig
.
# dig @rs.internic.net > /var/named/named.ca.new
Setelah anda mengambil berkas database name-server root tadi, silahkan ubah namanya menjadi named.ca sesuai dengan konfigurasi named.conf.
Jika anda ingin mempertahankan nama berkas named.ca.new, maka rubah konfigurasi named.conf untuk zone root ke named.ca.new.Cara kedua anda bisa melakukan anonymous-ftp ke ftp.rs.internic.net dan download berkas named.root.
Cara lain adalah dengan menggunakan e-mail. Kirim e-mail ke vice@nic.ddn.mil dengan subject 'netinfo root-servers.txt'.
Berkas named.ca isinya kurang lebih sebagai berikut:
; This file holds the information on root name-servers needed to ; initialize cache of Internet domain name-servers ; (e.g. reference this file in the "cache .
" ; configuration file of BIND domain name-servers). ; ; This file is made available by InterNIC registration services ; under anonymous FTP as ; file /domain/named.root ; on server FTP.RS.INTERNIC.NET ; -OR- under Gopher at RS.INTERNIC.NET ; under menu InterNIC Registration Services (NSI) ; submenu InterNIC Registration Archives ; file named.root ; ; last update: Aug 22, 1997 ; related version of root zone: 1997082200 ; ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 ; ; formerly C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; formerly TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; formerly NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; formerly NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 ; ; formerly NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; formerly AOS.ARL.ARMY.MIL ; . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 ; ; formerly NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 ; ; temporarily housed at NSI (InterNIC) ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10 ; ; housed in LINX, operated by RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 ; ; temporarily housed at ISI (IANA) ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 ; ; housed in Japan, operated by WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 ; End of File - named.local
Berkas ini berisi database localhost untuk alamat loopback. Berkas tambahan untuk localhost atau komputer itu sendiri atau jaringan loopback. Jaringan loopback? yap, alamat spesial yang digunakanhost untuk lalu lintas ke komputer itu sendiri. Jaringan ini sebagian besar adalah 127.0.0.0 dan alamat untuk host yaitu 127.0.0.1 yang merupakan alamat loopback untuk komputer itu sendiri.
Mungkin anda bertanya-tanya kenapa setiap komputer harus punya alamat loopback untuk diri mereka sendiri? jawabannya adalah karena tidak ada yang bertanggung jawab pada jaringan 127.0.0.0 termasuk alamat host 127.0.0.1 kecuali host/komputer itu sendiri.
Jadi setiap komputer bertanggung jawab terhadap jaringan 127.0.0.0 dengan host 127.0.0.1 untuk komputer itu sendiri.
$TTL 86400 @ IN SOA ns1.domain-kita.com. root.ns1.domain-kita.com. ( 2002081219 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns1.domain-kita.com. 1 IN PTR localhost.
- resolve.conf
Berisi domain yang pertama yang akan dicari dan name-server yang akan dituju untuk permintaan resolving nama host/domain. Berkas ini kurang lebih berisi:
search ns1.domain-kita.com domain-kita.com nameserver 127.0.0.1
Barissearch
menunjukkan domain pertama yang akan dicari ketika melakukan pencarian nama host.
Barisnameserver
menunjukkan alamat name-server anda,127.0.0.1
yaitu komputer itu sendiri.
Menjalankan Name Server
Setelah semua berkas di atas sudah anda konfigurasi maka selanjutnya kita jalankannamed
dengan mengetikkan:# /etc/init.d/named start
atau
# /usr/sbin/named
Setelah itu lihatlah berkas catatan/log sistem anda apakah
named
berjalan dengan sukses, dengan mengetikkan:# tail -f /var/log/messages Aug 26 08:19:15 ns1 named[204]: starting BIND 9.2.1 Aug 26 08:19:15 ns1 named[204]: using 1 CPU Aug 26 08:19:15 ns1 named[204]: loading configuration from '/etc/named.conf' Aug 26 08:19:16 ns1 named[204]: no IPv6 interfaces found Aug 26 08:19:16 ns1 named[204]: listening on IPv4 interface lo, 127.0.0.1#53 Aug 26 08:19:16 ns1 named[204]: listening on IPv4 interface eth0, 192.168.3.1#53 Aug 26 08:19:16 ns1 named[204]: command channel listening on 127.0.0.1#953 Aug 26 08:19:16 ns1 named[204]: zone 0.0.127.in-addr.arpa/IN: loaded serial 2002081219 Aug 26 08:19:16 ns1 named[204]: zone localhost/IN: loaded serial 42 Aug 26 08:19:16 ns1 named[204]: running
Jika catatan/log sistem anda kurang lebih hampir sama dengan keluaran di atas, itu berarti
named
anda sudah berjalan dan mendengarkan pada port 53 (running).Jika ada pesan kesalahan maka
named
akan memberikan nama berkas atau letak berkas yang salah. Betulkan kesalahan tersebut dan coba jalankan lagi.Sudah siapkah name-server kita untuk menerima permintaan resolving domain? mari kita lihat.
Penulis menggunakan program
dig
(domain information groper) untuk melakukan pencarian terhadap name-server yang baru kita jalankan:# dig -x 127.0.0.1 ; <<>> DiG 9.2.1 <<>> -x 127.0.0.1 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28240 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;1.0.0.127.in-addr.arpa. IN PTR ;; ANSWER SECTION: 1.0.0.127.in-addr.arpa. 86400 IN PTR localhost. ;; AUTHORITY SECTION: 0.0.127.in-addr.arpa. 86400 IN NS ns1.domain-kita.com. ;; ADDITIONAL SECTION: localhost. 86400 IN A 127.0.0.1 ;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Aug 27 07:50:49 2002 ;; MSG SIZE rcvd: 93
Name server yang baru saja anda buat sudah siap menerima permintaan resolving nama domain. Selamat!
Anda ingin melihat perbedaan antara permintaan nama domain yang belum di-caching dan yang sudah? mari.
Kita bisa menggunakan utilitas
nslookup
atau dig
. Kali ini kita menggunakan utilitas dig
.# dig iwan.gotdns.org ; <<>> DiG 9.2.1 <<>> iwan.gotdns.org ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44527 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 0 ;; QUESTION SECTION: ;iwan.gotdns.org. IN A ;; ANSWER SECTION: iwan.gotdns.org. 14400 IN A 202.137.7.53 ;; AUTHORITY SECTION: gotdns.org. 86400 IN NS ns3.dyndns.org. gotdns.org. 86400 IN NS ns4.dyndns.org. gotdns.org. 86400 IN NS ns5.dyndns.org. gotdns.org. 86400 IN NS ns1.dyndns.org. gotdns.org. 86400 IN NS ns2.dyndns.org. ;; Query time: 890 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Aug 27 16:28:39 2002 ;; MSG SIZE rcvd: 147
Coba jalankan program
dig
sekali lagi untuk domain iwan.gotdns.org.# dig iwan.gotdns.org ; <<>> DiG 9.2.1 <<>> iwan.gotdns.org ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44750 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 1 ;; QUESTION SECTION: ;iwan.gotdns.org. IN A ;; ANSWER SECTION: iwan.gotdns.org. 14389 IN A 202.137.7.53 ;; AUTHORITY SECTION: gotdns.org. 86389 IN NS ns3.dyndns.org. gotdns.org. 86389 IN NS ns4.dyndns.org. gotdns.org. 86389 IN NS ns5.dyndns.org. gotdns.org. 86389 IN NS ns1.dyndns.org. gotdns.org. 86389 IN NS ns2.dyndns.org. ;; ADDITIONAL SECTION: ns1.dyndns.org. 86390 IN A 66.37.215.43 ;; Query time: 1 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Aug 27 16:28:50 2002 ;; MSG SIZE rcvd: 163
Anda sudah lihat bahwa permintaan resolving domain yang kedua lebih cepat dari yang pertama (
Query time
), itu berarti hasil resolving dari permintaan pertama disimpan ke cache server DNS.Ketika ada permintaan lagi untuk domain yang sama maka sang server DNS akan mengambil dari cache, tidak mencari lagi ke name-server yang bertanggung jawab terhadap domain iwan.gotdns.org, jadi lebih cepat.
Untuk informasi saja, setiap sistem operasi mempunyai standar C API yang mempunyai call gethostbyname dan gethostbyaddr. Call ini akan mencari dari sumber yang banyak. Pada sistem operasi Linux, callini akan melihat konfigurasi berkas nsswitch.conf pada direktori etc (/etc/nsswitch.conf). Isinya kurang lebih sebagai berikut:
... host: files, dns ...Pada konfigurasi nsswitch.conf di atas, resolver akan mencari nama domain pada berkas /etc/hosts kemudian baru server DNS yang ada pada berkas konfigurasi /etc/resolve.conf.
Sedang berkas /etc/hosts berisi pemetaan alamat IP ke nama host, digunakan pada saat komputer di-boot khususnya untuk jaringan kecil tanpa name-server/server DNS.
Forwarding
Untuk menghemat dan meringankan sumber daya server dan jaringan ada baiknya kita menggunakan forwarder biasanya server DNS ISP kita.Setiap permintaan resolving domain dari jaringan lokal ke server DNS kita akan di-forward atau diteruskan terlebih dahulu ke server DNS yang ada pada
options
dalam /etc/named.conf. Misal server DNS ISP anda 202.155.5.1 dan 202.155.5.3 maka pada bagian options
dalam berkas named.conf tambahkan baris:forward first; forwarders { 202.155.5.1; 202.155.5.3; };
Dengan forwarding permintaan resolving domain akan lebih cepat dan mengurangi beban pada server DNS dan jaringan lokal. Jadi server DNS kita tidak bekerja sendiri untuk menerima permintaan resolvingdomain.
Setelah menambahkan baris di atas restart
named
dan coba anda tes lagi dengan utilitas dig
.Semoga artikel ini dapat bermanfaat dalam pembuatan server DNS resolving-caching tanpa domain untuk jaringan lokal.
Artikel selanjutnya akan membahas pembuatan server DNS (BIND) dengan domain yang nantinya dapat diakses dari Internet.
Saran dan kritik dapat dialamatkan ke stwn[at]duniasemu[dot]org.
URL
Referensi
- DNS HOWTO, Nicolai Langfeldt, Jamie Norrish and others
- DNS and BIND, Third Edition, Cricket Liu & Paul Albitz
- Halaman manual (man pages)
- Server Linux, Ahmad Sofyan
Tidak ada komentar:
Posting Komentar