Pada artikel sebelumnya kita sudah mengenal mengenai konsep dan gambaran Domain Name System (DNS) dan Berkeley Internet Name Domain (BIND) sebagai salah satu implementasinya. Kali ini penulis akan membahas mengenai pembuatan server DNS resolving-caching tanpa domain.
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 dari cache 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.
rpm yaitu Red Hat pada beberapa bagian dari artikel ini, walaupun konsepnya hampir sama untuk distro lain.
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-1Setelah memastikan paket-paket yang dibutuhkan sudah terinstal maka kita bisa mulai mengkonfigurasi.
named). Komentar bisa menggunakan /* dan */, //, atau #.
/* Ini adalah Komentar Gaya C */ // Ini adalah Komentar Gaya C++ # Ini adalah Komentar Gaya ShellPada berkas database-cache name-server root dan loopback/localhost digunakan semikolon (
;) untuk memberikan komentar di dalamnya.
named)? Berikut ini berkas-berkas yang harus dikonfigurasi untuk menjalankan server DNS BIND resolving-caching:
// 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.
Baris directory memberitahukan pada named untuk mencari berkas-berkas yang ada dalam konfigurasi dalam direktori yang ditunjukkan, dalam hal ini /var/named.
Jika anda dibelakang firewall, uncomment baris query-source address * port 53.
Baris zone adalah menunjukkan zone yang otoritatif untuk nama domain bersangkutan dan diikuti dengan tipe name-server (hint, master, slave). Khusus untuk hint digunakan untuk zone root (.). Tipe master untuk name-server primary-master sedangkan tipe slave untuk name-server secondary-master/slave.
Selanjutnya diikuti nama berkas database zone, letaknya berada di direktori /var/named/ sesuai dengan options pada baris directory. Zone untuk root (.) berisi daftar name-server root.
Baris zone kedua yaitu 0.0.127.in-addr.arpa adalah zone untuk reverse-mapping alamat loopback.
Baris key merupakan baris yang menunjukkan bahwa named bisa dikontrol lewat program rndc 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.
dig.
# dig @rs.internic.net > /var/named/named.ca.newSetelah anda mengambil berkas database name-server root tadi, silahkan ubah namanya menjadi named.ca sesuai dengan konfigurasi named.conf.
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
$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.
search ns1.domain-kita.com domain-kita.com nameserver 127.0.0.1Baris
search menunjukkan domain pertama yang akan dicari ketika melakukan pencarian nama host.
nameserver menunjukkan alamat name-server anda, 127.0.0.1 yaitu komputer itu sendiri.
named dengan mengetikkan:
# /etc/init.d/named startatau
# /usr/sbin/namedSetelah 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]: runningJika catatan/log sistem anda kurang lebih hampir sama dengan keluaran di atas, itu berarti
named anda sudah berjalan dan mendengarkan pada port 53 (running).
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: 93Name 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: 147Coba 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: 163Anda 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.
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, call ini 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.
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 resolving domain.
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.