Konsep DNS dan tutorial instalasi BIND

Asfihani ([email protected])

16 Februari 2003
Tutorial ini ditujukan untuk membantu memahami konsep dan cara kerja dari DNS (Domain Name System) serta tutorial instalasi software DNS menggunakan BIND (Berkeley Internet Name Domain). Tutorial ini mencakup instalasi BIND step by step, membuat zone dari sebuah domain beserta record-recordnya, PTR, serta mengkonfigurasi secondary DNS secara simple. BIND yang digunakan adalah versi 9.2.2rc1 (versi yang paling baru ketika tulisan ini dibuat). Tidak ada copyright apapun dalam dukumen ini, anda bebas menyalin, mencetak, maupun memodifikasi (dengan menyertakan nama penulis asli). Masih banyak kekurangan ataupun mungkin kesalahan pada tulisan ini, oleh karena itu saran, koreksi, kritik, maupun kesalahan ketik silakan dikirimkan ke email tersebut diatas. Terima Kasih.

1. Pendahuluan

Setiap kali anda meggunakan internet dalam kegiatan anda sehari-hari, maka setiap kali itu pula secara tidak langsung anda menggunakan DNS (Domain Name System). Penggunaan DNS meliputi aplikasi email (electronic-mail), browsing, ssh/telnet, ftp, maupun aplikasi yang lain yang ada kaitannya dengan internet. Fungsi utama dari sebuah sistem DNS adalah menerjemahkan nama-nama host (hostnames) menjadi nomor IP (IP address) ataupun sebaliknya, sehingga nama tersebut mudah diingat oleh pengguna internet. Fungsi lainnya adalah untuk memberikan suatu informasi tentang suatu host ke seluruh jaringan internet. Sebelum kita mulai instalasi BIND kita flashback dulu dengan sejarah internet, DNS dan BIND, serta konsep DNS.

Sejarah Internet

Pada akhir tahun 1960, US. Department of Defense Advanced Research Projects Administration (ARPA/DARPA) mendanai percobaan dan riset tentang jaringan komputer secara luas yang saling menghubungkan antar hampir semua organisasi di Amerika yang akhirnya dikenal dengan sebutan ARPAnet. Hasil dari riset tersebut email (electronic-mail) mulai digunakan.

Pada awal tahun 1980 protokol TCP/IP (Transmission Control Protocol/Internet Protocol) mulai dikenalkan dan akhirnya menjadi protokol standar dalam struktur jaringan ARPAnet. Jaringan ARPAnet berkembang pesat jumlahnya menjadi ribuan host dan masih menggunakan standar protokol TCP/IP, dan akhirnya jaringan tersebut dikenal dengan internet.

Pada tahun 1988, DARPA digantikan oleh National Science Foundation (NSF) dalam pendanaan riset diikuti dengan penggantian dari ARPAnet menjadi NSFnet sebagai tulang punggung (backbone) jaringan internet. Kemudian pada musim semi tahun 1995, backbone internet melakukan transisi dari NSFnet (yang didanai oleh publik) ke beberapa backbone komersil, dimana memungkinkan interknoneksi antar jaringan bisa menjadi lebih jauh jaraknya. Penyedia backbone komersil tersebut diantaranya adalah MCI dan Sprint serta pemain lama seperti UUNet dan PSINet.

(DNS and BIND 3rd Edition, Paul Albitz & Cricket Liu, 1998 Hal 2)

Sejarah DNS

Pada tahun 1970an jaringan ARPAnet hanya terdiri dari beberapa ratus host saja. Pada waktu itu, sebuah file HOSTS.TXT yang berisi tentang semua informasi host-hosts tersebut masih bisa melayani setiap permintaan query dan menerjemahkan nama ke alamat IP (name-to-address-mapping).Pada sistem operasi berbasis UNIX, file /etc/hosts merupakan hasil dari pengolahan file HOSTS.TXT tersebut. File HOSTS.TXT pada waktu itu dikelola oleh Stanford Research Insitute Network Information Center (SRI-NIC) di Menlo Park, California. File tersebut tersebut didistribusikan ke semua host dan penggunanya hanya dengan menggunakan satu buah host (mesin/komputer) saja. Petugas administrasi dari ARPAnetbiasanya mengirimkan email kepada SRI-NIC tentang perubahan (termasuk penambahan maupun pengurangan) tentang informasi suatu host, dan dalam periode tertentu, mereka melakukan transfer file HOSTS.TXT yang paling baru (biasanya diperbaharui sekali dalam seminggu) dengan menggunakan protokol ftp. Seiring dengan berkembangnya jaringan ARPAnetdan penggunaan protokol TCP/IP, ukuran dari file HOSTS.TXT menjadi besar dengan bertambahnya jumlah host yang bergabung dengan jaringan ARPAnet. Kemudian timbul beberapa masalah dengan penggunaan file HOSTS.TXT ini, misalnya :

Berangkat dari masalah-masalah tersebut diatas, ARPAnet membentuk suatu sistem alternatif pengganti dari sistem lama yang menggunakan file HOSTS.TXT. Tujuannya adalah untuk memecahkan masalah dalam pengelolaan tabel host yang sangat beraneka ragam dan masih menggunakan metode sentralisasi. Pada sistem yang baru, seorang sistem administrator memungkinkan untuk mengelola data secara loka, namun akan selalu update secara global di internet. Sistem yang menggunakan metode desentralisasi ini diharapkan akan mengurangi beban dan trafik, serta pengelolaan data dan proses update dari sebuah informasi akan menjadi lebih mudah.

Paul Mockapertis dari University of Southern California Information Science Institute di Marina del Rey, California, dipilih sebagai orang yang bertanggung jawab terhadap rancangan, desain, arsitektur dan implementasi dari sistem pengelolaan data host yang baru. Pada tahun 1984 beliau merilis RFC (Request For Comment) 882 dan RFC 883 yang menjelaskan tentang Domain Name System (DNS). Kemudian disusul dengan RFC 1034 dan RFC 1035 yang juga menambahkan tentang masalah kemanan DNS, penerapan (implementasi), pengelolaan (adminstrative),mekanisme pembaharuan data secara dinamis, serta kemanan data dalam sebuah domain dan lain-lainnya.

(DNS and BIND 3rd Edition, Paul Albitz & Cricket Liu, 1998 Hal 3)

Konsep dan hirarki DNS

DNS adalah suatu bentuk database yang terdistribusi, dimana pengelolaan secara lokal terhadap suatu data akan segera diteruskan ke seluruh jaringan (internet) dengan menggunakan skema client-server. Suatu program yang dinamakan name server, mengandung semua segmen informasi dari database dan juga merupakan resolver bagi client-client yang berhubungan ataupun menggunakannya.

Struktur dari database DNS bisa diibaratkan dengan dengan struktur file dari sebuah sistem operasi UNIX. Seluruh database digambarkan sebagai sebuah struktur terbalik dari sebuah pohon (tree) dimana pada puncaknya disebut dengan root node. Pada setiap node dalam tree tersebut mempunyai keterangan (label) misalnya, .org, .com, .edu, .net, .id dan lain-lainnya, yang relatif rerhadap puncaknya (parent).Ini bisa diibaratkan dengan relative pathname pada sistem file UNIX,seperti direktori bin, usr, var, etc dan lain sebagainya. Pada puncak root node dalam sebuah sistem DNS dinotasikan dengan "." atau "/" pada sistem file UNIX.

Pada setiap node juga merupakan root dari subtree, atau pada sistem file UNIX merupakan root direktori dari sebuah direktori. Hal ini pada sistem DNS disebut dengan nama domain. Pada tiap domain juga memungkinkan nama subtree dan bisa berbeda pula, hal ini disebut subdomain atau subdirektori pada sistem file UNIX. Pada bagian subdomainjuga memungkinkan adanya subtree lagi yang bisa dikelola oleh organisasi yang berbeda dengan domain utamanya.

(DNS and BIND 3rd Edition, Paul Albitz & Cricket Liu, 1998 Hal 4)

Sejarah BIND

Program DNS yang bernama JEEVES pertama kali diimplementasikan dan ditulis sendiri oleh Paul Mockapertis. Kemudian diteruskan oleh BIND (versi 4.8.3) yang diimplementasikan pada sistem operasi 4.3 BSD UNIX yang ditulis oleh Douglas Terry, Mark Painter, David Riggle dan Songnian Zhou dari Computer Systems Research Group (CSRG) pada Universitas California di Berkeley. Pada tahun antara 1985-1987, Kevin Dunlap seseorang dari Digital Equipment Corporation (DEC) bergabung dengan CSRG yang kemudian diikuti oleh Doug Kingston, Craig Partridge, Smoot Carl- Mitchell, Mike Muuss, Jim Bloom dan Mike Schwartz. Pemimpin dari proyek ini adalah Mike Karels dan O. Kure.

BIND versi 4.9 dan 4.9.1 kemudian dirilis oleh DEC (yang sekarang diakusisi oleh Compaq Computer Corporation). Pemimpin dari proyek ini adalah Paul Vixie yang merupakan karyawan dari DEC serta dibantu oleh Phil Almquist, Robert Elz, Alan Barrett, Paul Albitz, Bryan Beecher, Andrew Partan, Andy Cherenson, Tom Limoncelli, Berthold Paffrath, Fuat Baran, Anant Kumar, Art Harkin, Win Treese, Don Lewis, Christophe Wolfhugel, dan lain-lainnya. BIND versi 4.9.2 kemudian diambil alih oleh Vixie Enterprises, dan Paul Vixie menjadi arsitek dan programmernya. BIND mulai dari versi 4.9.3 dan seterusnya kemudian diambil alih oleh Internet Software Consortium (ISC) dan akhirnya untuk pertama kalinya, pada tanggal 8 Mei 1997 Bob Halley dan Paul Vixie merilis versi BIND untuk keperluan produksi. Sekarang BINDversi 4 sudah mulai jarang digunakan, dan sebagai penggantinya adalah BIND versi 8 dan versi 9.

(http://www.isc.org/products/BIND/bind-history.html)

Cara kerja DNS

Ketika anda melakukan query (bisa berupa ping, ssh, dig, host, nslookup, email, dan lain sebagainya) ke sebuah host misalnya durmagati.ee.kurowo.edu maka name server akan memeriksa terlebih dahulu apakah ada record host tersebut di cache name server lokal. Jika tidak ada, name serverlokal akan melakukan query kepada root server dan mereferensikan name server untuk TLD .edu , name server lokal kembali melakukan query kepada name server .edu dengan jenis query yang sama dan mereferensikan kurowo.edu . Name server lokal kembali melakukan query ke name server kurowo.edu dan mereferensikan query selanjutnya ke name server lokal yaitu ee.kurowo.edu . Kemudian name server lokal melakukan query kepada name server lokal yaitu ee.kurowo.edu dan akhirnya mendapatkan jawaban address yang diminta. Penamaan host durmagati.ee.kurowo.edu mungkin bisa diartikan nama sebuah komputer (durmagati) pada Electrical Engineering Department (ee) pada Universitas Kurowo (kurowo.edu) , mungkin juga salah :)

2. Instalasi BIND

Anda bisa mendapatkan softare BIND yang paling baru dari website resmi ISC dengan alamat http://www.isc.org/products/BIND. Ketika tulisan ini dibuat versi calon rils (release candidate/rc) yang paling baru adalah 9.2.2rc1 (dirilis pada tanggal 14 Agustus 2002) dan versi stable 9.2.1 (dirilis pada tanggal 1 Mei 2002). Kebetulan mesin yang digunakan untuk percobaan adalah menggunakan sistem operasi Linux dengan distro Redhat 7.2 (Enigma), tentu anda bisa menggunakan distro favorit anda yang lain :). Karena pada distro Redhat pada instalasi default sudah menyertakan BIND dalam format RPM, maka langkah pertama adalah menghapus software tersebut dari sistem. Jika anda tidak menggunakan Redhat ataupun tidak ada software BIND yang telah ada, anda bisa melewati langkah berikut ini (INGAT, jika ada BIND yang telah jalan dan anda ingin melakukan upgrade, silakan kreatif dengan membuat salinan atau backup terlebih dahulu) :

[root@wedus asfik]# for a in $(rpm -qa | grep ^bind); do rpm -e --nodeps $a; done 
[root@wedus asfik]# userdel -r named 
[root@wedus asfik]# rm -rf /var/named 

Diasumsikan anda terhubung ke internet dan terdapat utilitas wget untuk mendowload software dari ISC, jika anda telah mempunyai source BIND anda bisa melewati langkah berikut ini :

[root@wedus asfik]# wget ftp://ftp.isc.org/isc/bind9/9.2.2rc1/bind-9.2.2rc1.tar.gz 

Kemudian kita mekarkan file source, melakukan kompilasi dan menambah user yang akan menjalakan BIND, pada proses make install akan terbentuk direktori /usr/local/named sebagai direktori utama dimana software ini disimpan :

[root@wedus asfik]# tar -xzvf bind-9.2.2rc1.tar.gz 
[root@wedus asfik]# cd bind-9.2.2rc1
[root@wedus bind-9.2.2rc1]# ./configure --prefix=/usr/local/named 
[root@wedus bind-9.2.2rc1]# make 
[root@wedus bind-9.2.2rc1]# make install
[root@wedus bind-9.2.2rc1]# adduser -d /var/named -s /bin/false named 

Ganti direktori ke home direktori user named serta mendownload file named.root yang berisi tentang informasi dari root-servers :

[root@wedus bind-9.2.2rc1]# cd /var/named 
[root@wedus named]# wget ftp://internic.net/domain/named.root

Kemudian buat file untuk reverse PTR localhost (anda bisa menggunakan editor favorit anda, disini kita menggunakan vi) :

[root@wedus named]# vi db.127.0.0 

Isi file db.127.0.0 adalah :

$TTL 86400 
@       IN      SOA     localhost. root.localhost. (  
                      2003021500      ; serial
                      28800           ; refresh
                      14400           ; retry
                      3600000         ; expiry 
                      86400 )         ; minimum

        IN      NS      localhost.
1       IN      PTR     localhost. 

Kemudian salin file db.127.0.0 ke alamat network IP anda (bisa IP intranet atau IP yang anda dapatkan dari ISP anda), disini dimisalkan network yang akan kita reverse adalah 10.126.24.0/24 dan IP 10.126.24.1 adalah IP dimana software BIND akan kita install :

[root@wedus named]# cp db.127.0.0 db.10.126.24

Kemudian buat file yang berisi tentang zone dari localhost :

[root@wedus named]# vi db.localhost

Isi dari file db.localhost adalah :

$TTL 86400 
$ORIGIN localhost. 
@       IN      SOA     localhost. root.localhost. (
                        2003021500      ; serial
                        28800           ; refresh
                        14400           ; retry
                        3600000         ; expiry
                        86400 )         ; minimum

        IN      NS      localhost.
        IN      A       127.0.0.1 

Buat sebuah direktori untuk menyimpan file konfigurasi dari daemon program BIND :

[root@wedus named]# mkdir /usr/local/named/etc

Buat file /usr/local/named/etc/named.conf yang akan dijadikan sebagai file konfigurasi dari program BIND :

[root@wedus named]# vi /usr/local/named/etc/named.conf

Isi dari file /usr/local/named/etc/named.conf adalah :

options {
        directory "/var/named";
        allow-transfer { 10.126.24.2/32; };
        pid-file "/var/named/named.pid";
};

logging {
        category lame-servers { null; };
};

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

zone "localhost" IN {
        type master;
        file "db.localhost";
        allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "db.127.0.0";
        allow-update { none; };
};

zone "24.126.10.in-addr.arpa" IN {
        type master;
        file "db.10.126.24";
}; 

Kemudian meng-generate file konfigurasi yang akan digunakan oleh program rndc, ingat hasil dari perintah rndc-confgen bisa jadi berbeda dengan apa yang ditampilkan disini :

[root@wedus named]# /usr/local/named/sbin/rndc-confgen 

Kemudian copy-paste dari hasil perintah tersebut diatas mulai dari baris "# Start of rndc.conf" sampai dengan baris "# End of rndc.conf", simpan dengan nama file /usr/local/named/etc/rndc.conf . Kemudian copy-paste lagi dengan menghilangkan tanda "#", mulai dari baris "# key "rndc-key"..." sampai dengan baris yang hampir paling bawah diatas baris "# End of named.conf " yaitu sampai dengan baris "};" kemudian tambahkan pada file /usr/local/named/etc/named.conf . Sebagai contohnya adalah sebagai berikut ini, isi dari file /usr/local/named/etc/rndc.confmisalnya :

# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "2LCJImnMimOwc1odWR6jfg==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf 

Sedangkan pada file /usr/local/named/etc/named.conf ditambahkan sebagai berikut :

key "rndc-key" {
       algorithm hmac-md5;
       secret "2LCJImnMimOwc1odWR6jfg==";
};

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

Atau mungkin anda bisa menggunakan trik dibawah ini (tapi mungkin tidak selalu berhasil seperti yang anda harapkan, use it at your own risk :) ) :

[root@wedus named]# /usr/local/named/sbin/rndc-confgen > confgen.tmp
[root@wedus named]# grep -v "^#" confgen.tmp > /usr/local/named/etc/rndc.conf
[root@wedus named]# grep "^#" confgen.tmp | sed 1,3d | sed -e "s/\# //g" | sed -e "s/End of named.conf//g" >> /usr/local/named/etc/named.conf
[root@wedus named]# rm -rf confgen.tmp

Kemudian langkah selanjutnya adalah mengubah kepemilikan home direktori dari user named, kemudian menjalankan daemon dari program BIND :

[root@wedus named]# chown -R named.named /var/named
[root@wedus named]# /usr/local/named/sbin/named -u named -c /usr/local/named/etc/named.conf

Jika sukses anda bisa melihat pada file /var/log/messages pesan-pesan sebagai berikut :

[root@wedus named]# tail -f /var/log/messages
Feb 15 12:54:18 wedus named[25139]: starting BIND 9.2.2rc1 -u named -c /usr/local/named/etc/named.conf
Feb 15 12:54:18 wedus named[25139]: using 1 CPU
Feb 15 12:54:18 wedus named[25139]: loading configuration from '/usr/local/named/etc/named.conf' 
Feb 15 12:54:18 wedus named[25139]: no IPv6 interfaces found 
Feb 15 12:54:18 wedus named[25139]: listening on IPv4 interface lo, 127.0.0.1#53 
Feb 15 12:54:18 wedus named[25139]: listening on IPv4 interface eth0, 10.126.24.1#53 
Feb 15 12:54:18 wedus named[25139]: command channel listening on 127.0.0.1#953 
Feb 15 12:54:18 wedus named[25139]: zone 24.126.10.in-addr.arpa/IN: loaded serial 2003021500
Feb 15 12:54:18 wedus named[25139]: zone 0.0.127.in-addr.arpa/IN: loaded serial 2003021500
Feb 15 12:54:18 wedus named[25139]: zone localhost/IN: loaded serial 2003021500
Feb 15 12:54:18 wedus named[25139]: running

Untuk mengaktifkan daemon BIND setiap kali komputer direstar, tambahkan perintah "/usr/local/named/sbin/named -u named -c /usr/local/named/etc/named.conf" pada file rc.local didistro kesayangan anda. Jika anda menggunakan Redhat file rc.local terdapat pada direktori /etc, misalnya :

[root@wedus named]# echo "/usr/local/named/sbin/named -u named -c /usr/local/named/etc/named.conf" >> /etc/rc.local

Kemudian kita set resolver agar menggunakan name server localhost:

[root@wedus named]# echo "nameserver 127.0.0.1" > /etc/resolv.conf 

Testing query menggunakan name server localhost dengan perintah host :

[root@wedus named]# host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.
[root@wedus named]# host localhost
localhost has address 127.0.0.1 

Atau dengan menggunakan perintah dig :

[root@wedus named]# dig -x 127.0.0.1
; <<>> DiG 9.2.2rc1 <<>> -x 127.0.0.1
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64212
;; 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      localhost.

;; ADDITIONAL SECTION:
localhost.              86400   IN      A       127.0.0.1

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Feb 15 13:58:48 2003
;; MSG SIZE  rcvd: 93

Jika anda tersambung ke internet anda bisa mencoba untuk query ke suatu host misalnya :

[root@wedus named]# host www.its-sby.edu
www.its-sby.edu is an alias for ns2.its-sby.edu.
ns2.its-sby.edu has address 202.155.84.179 

Anda juga bisa mengeset client anda untuk menggunakan name server yang baru saja anda konfigurasi untuk melayani query. Untuk sistem operasi Windows 2000 Server (tm) adalah sebagai berikut : klik kanan pada "My Network Places" pilih "Properties", klik kanan pada "Local Area Connection" pilih "Properties", pilih pada "Internet Protocol (TCP/IP)" klik "Properties", klik radio button pada "Use the following DNS server addresses", isikan pada "Preferred DNS server" alamat IP dimana server DNS/BIND anda tersebut diinstall, disini diumpamakan IPnya adalah 10.126.24.1 . Untuk sistem operasi Windows98 (tm) adalah : dari menu "Start" klik "Settings", klik pada "Control Panel", klik pada "Network" klik pada "TCP/IP" pilih "Properties", pilih pada tabulasi "DNS Configuration" pilih pada "Enable DNS", kemudian pada "DNS Server Search Order" isikan alamat IP dimana server DNS/BIND anda tersebut diinstall, disini diumpamakan 10.126.24.1

Sampai pada langkah ini anda telah mengkonfigurasi BIND sebagai "caching only name server" yang akan menjawab semua query DNS dan mengingat-ingat record tersebut ketika anda melakukan query pada suatu record DNS yang sama. Hal ini mungkin akan membantu anda memperpendek waktu yang anda butuhkan untuk mengqueri suatu record jika anda berada pada koneksi internet yang pas-pasan :) (misalnya dialup atau kabel modem).

Jika anda terhubung ke sebuah ISP dan ingin membagi beban querydari client anda yang menuju ke server anda dengan server DNS ISP anda, maka anda bisa menggunakan opsi forwarder. Misalkan DNS server ISP anda mempunyai IP 10.11.12.1 dan 10.11.12.2 maka di file named.confpada seksi options, bisa anda tambahkan :

           forward first;
           forwarders {
                10.11.12.1;
                10.11.12.2;
           }; 

Menambah sebuah domain

Sebelum menambahkan sebuah zone untuk suatu domain, tentunya anda harus memiliki nama domain yang unik. Jika anda merencanakan penggunaan domain di lingkungan intranet, maka anda tidak perlu untuk membelinya ataupun menyewa IP statik dari suatu ISP. Namun jika anda juga merencanakan domain tersebut akan digunakan di internet, tentunya anda harus membeli melalui registrar-registrar yang disetujui oleh Internic dan mendapatkan IP statik dari ISP anda. Misalnya untuk top level domain (TLD) .COM/.NET/.ORG/.EDU/.BIZ/.INFO anda bisa mendaftarkan melalui Network Solutions Inc. ( http://www.nsi.com), GKG Inc. ( http://www.gkg.net), Register Inc. ( http://www.register.com), atau anda bisa melihat daftar registrar yang lengkap di website resmi Internic dengan URL http://www.internic.net/alpha.html . Atau jika anda merencanakan untuk menggunakan DTD-ID (.co.id,.or.id,.web.id,.war.net.id) anda bisa mendaftarkan melalui http://www.idnic.net.id. Setelah domain tersebut selesai anda daftarkan biasanya anda diminta mengkonfigurasi 2 buah name-server yang akan menghandle domain tersebut. Untuk TLD .COM/.NET/.ORG/.EDU/.BIZ/.INFO biasanya anda diminta untuk mendaftarkan dahulu IP statik yang akan digunakan sebagai name-server ke registrar dimana domain tersebut didaftarkan. Untuk DTD-ID sampai tulisan ini dibuat anda bisa langsung mengarahkan name-server anda ke IP statik yang anda dapatkan dari ISP tanpa perlu mendaftarkan IP tersebut.

Sebagai contoh anda sudah mendapatkan domain : kurowo.edu , sebagai rencana primary name server (ns1.kurowo.edu) , IP yang digunakan adalah 10.126.24.1 , secondary name server (ns2.kurowo.edu) : 10.126.24.2 , webserver (kurowo.edu maupun www.kurowo.edu) : 10.126.24.3 , ftp server (ftp.kurowo.edu) dialiaskan ke www.kurowo.edu,sedangkan sebagai primary mail exchanger (dursosono.kurowo.edu) : 10.126.24.4 , secondary mail exchanger / backup mail exchanger (duryudono.kurowo.edu) : 10.26.24.5 dan gateway(gateway.kurowo.edu)nya adalah : 10.126.24.6

Diumpamakan kita telah ssh ke IP 10.126.24.1 yang akan kita jadikan ns1.kurowo.edu setelah su - ke user root pindah ke direktori /var/namedkemudian kita bikin file database untuk zone kurowo.edu :

[root@wedus root]# cd /var/named
[root@wedus named]# vi db.kurowo.edu

Isi file db.kurowo.edu adalah sesuai data-data yang direncanakan seperti diatas :

$TTL 86400
@       IN      SOA     ns1.kurowo.edu. asfik.kurowo.edu. (
                2003021500 ; serial
                28800
                14400
                3600000
                86400
                )

                IN      NS      ns1.kurowo.edu.
                IN      NS      ns2.kurowo.edu.
                IN      MX      10 dursosono.kurowo.edu.
                IN      MX      20 duryudono.kurowo.edu.
                IN      A       10.126.24.3

ns1             IN      A       10.126.24.1
ns2             IN      A       10.126.24.2
www             IN      A       10.126.24.3
dursosono       IN      A       10.126.24.4
duryudono       IN      A       10.126.24.5
gateway         IN      A       10.126.24.6
ftp             IN      CNAME   www 

Kemudian pada file /usr/local/named/etc/named.conf ditambahkan :

zone "kurowo.edu" {
        type master;
        file "db.kurowo.edu";
}; 

Restart BIND, anda bisa menggunakan perintah rndc atau memberi sinyal HUP ke daemon named (killall -HUP named), disini kita gunakan rndc :

[root@wedus named]# /usr/local/named/sbin/rndc reload 

Kemudian amati file /var/log/messages, seharusnya ada pesan sebagai berikut :

Feb 15 14:29:32 wedus named[25232]: loading configuration from '/usr/local/named/etc/named.conf'
Feb 15 14:29:32 wedus named[25232]: no IPv6 interfaces found
Feb 15 14:29:32 wedus named[25232]: zone kurowo.edu/IN: loaded serial 2003021500
Feb 15 14:29:32 wedus named[25232]: zone kurowo.edu/IN: sending notifies (serial 2003021500)

Periksa apakah konfigurasi yang kita tambahkan sudah benar-benar sesuai, kita bisa menggunakan perintah host :

[root@wedus named]# host -t ns kurowo.edu
kurowo.edu name server ns1.kurowo.edu.
kurowo.edu name server ns2.kurowo.edu. 
[root@wedus named]# host -t mx kurowo.edu
kurowo.edu mail is handled by 10 dursosono.kurowo.edu.
kurowo.edu mail is handled by 20 duryudono.kurowo.edu.
[root@wedus named]# host www.kurowo.edu
www.kurowo.edu has address 10.126.24.3

Jika IP 10.126.24.3 sudah terhubung ke jaringan, anda bisa periksa dengan menggunakan ping ke hostnya langsung :

[root@wedus named]# ping www.kurowo.edu
PING www.kurowo.edu (10.126.24.3) from 10.126.24.1: 56(84) bytes of data.
64 bytes from  10.126.24.3: icmp_seq=0 ttl=255 time=223 usec
64 bytes from  10.126.24.3: icmp_seq=1 ttl=255 time=223 usec
64 bytes from  10.126.24.3: icmp_seq=2 ttl=255 time=242 usec

--- www.kurowo.edu ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss

Atau anda juga bisa menggunakan perintah dig :

[root@wedus named]# dig kurowo.edu
; <<>> DiG 9.2.2rc1 <<>> kurowo.edu
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50880
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;kurowo.edu.                 IN      A

;; ANSWER SECTION:
kurowo.edu.          86400   IN      A       10.126.24.3

;; AUTHORITY SECTION:
kurowo.edu.          86400   IN      NS      ns2.kurowo.edu.
kurowo.edu.          86400   IN      NS      ns1.kurowo.edu.

;; ADDITIONAL SECTION:
ns1.kurowo.edu.      86400   IN      A       10.126.24.1
ns2.kurowo.edu.      86400   IN      A       10.126.24.2

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Feb 15 14:32:31 2003
;; MSG SIZE  rcvd: 115

CATATAN : Setiap pembaharuan record terhadap database suatu zone selalu naikkan nomor serial ke yang lebih tinggi dari sebelumnya

Mengelola zone reverse (PTR)

Jika anda juga ingin merencanakan untuk mengelola zone PTR dari IP yang anda peroleh dari ISP anda, tentunya anda harus menanyakan dahulu ke ISP anda tentang delegasinya sehingga anda mempunya hak untuk mengelola reverse PTR IP anda. Sebagai contoh anda mendapatkan satu kelas C IP yaitu 10.126.24.0/24 dan sudah didelegasikan secara penuh oleh ISP anda, maka pada file named.conf yang telah dibuat pada seksi sebelumnya kita pastikan sudah terdapat zone untuk 24.126.10.in-addr.arpa,kemudian edit kembali file db.10.126.24 :

[root@wedus named]# vi db.10.126.24

Ubah isi dari file db.10.126.24 menjadi :

$TTL 86400
@       IN      SOA     ns1.kurowo.edu. asfik.kurowo.edu. (
                        2003021501      ; serial
                        28800           ; refresh
                        14400           ; retry
                        3600000         ; expiry
                        86400 )         ; minimum

        IN      NS      ns1.kurowo.edu.
        IN      NS      ns2.kurowo.edu.

1       IN      PTR     ns1.kurowo.edu.
2       IN      PTR     ns2.kurowo.edu.
3       IN      PTR     www.kurowo.edu.
4       IN      PTR     dursosono.kurowo.edu.
5       IN      PTR     duryudono.kurowo.edu.
6       IN      PTR     gateway.kurowo.edu.

Restart daemon BIND (killall -HUP named) :

[root@wedus named]# /usr/local/named/sbin/rndc reload

Periksa kembali apakah PTR yang kita seting sudah sesuai dengan keinginan, anda bisa menggunakan perintah host :

[root@wedus named]# host 10.126.24.1
1.24.126.10.in-addr.arpa domain name pointer ns1.kurowo.edu.
[root@wedus named]# host 10.126.24.2
2.24.126.10.in-addr.arpa domain name pointer ns2.kurowo.edu.
[root@wedus named]# host 10.126.24.3 
3.24.126.10.in-addr.arpa domain name pointer www.kurowo.edu. 
[root@wedus named]# host 10.126.24.4
4.24.126.10.in-addr.arpa domain name pointer dursosono.kurowo.edu. 
[root@wedus named]# host 10.126.24.5
5.24.126.10.in-addr.arpa domain name pointer duryudono.kurowo.edu. 
[root@wedus named]# host 10.126.24.6
6.24.126.10.in-addr.arpa domain name pointer gateway.kurowo.edu.

Atau menggunakan perintah dig :

[root@wedus named]# dig -x 10.126.24.4
; <<>> DiG 9.2.2rc1 <<>> -x 10.126.24.4
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30843
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;4.24.126.10.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
4.24.126.10.in-addr.arpa. 86400 IN     PTR     dursosono.kurowo.edu.

;; AUTHORITY SECTION:
24.126.10.in-addr.arpa. 86400   IN      NS      ns1.kurowo.edu.
24.126.10.in-addr.arpa. 86400   IN      NS      ns2.kurowo.edu.

;; ADDITIONAL SECTION:
ns1.kurowo.edu.      86400   IN      A       10.126.24.1
ns2.kurowo.edu.      86400   IN      A       10.126.24.2

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Feb 15 14:53:44 2003
;; MSG SIZE  rcvd: 142

Atau anda juga bisa memeriksa dengan menggunakan name serverISP anda :

[root@wedus named]# host 10.126.24.4 ns1.myloveleyisp.net.id
Using domain server:
Name: ns1.myloveleyisp.net.id
Address: 10.11.12.1#53
Aliases:

4.24.126.10.in-addr.arpa. domain name pointer dursosono.kurowo.edu

Membuat secondary name server

Setelah anda selesai membuat primary name server (ns1), langkah selanjutnya adalah membuat secondary name server (ns2). Tujuannya adalah untuk menerima query dns jika pada primary name server (ns1)sebagai server dns yang utama mengalami gangguan teknis ataupun terlalu sibuk. Oleh karena idealnya secondary name server (ns2) biasanya diletakkan pada network yang berbeda dengan primary name server (ns1),tentunya secondary name server (ns2) ini membutuhkan komputer/mesin yang lain (terpisah dari primary-nya/ns2) . Langkah instalasi secondary name server adalah sama ketika anda mengkonfigurasi primary name server. Namun, file yang yang digunakan hanyalah db.127.0.0, db.localhost,dan named.root.

Untuk memastikan hanya host dengan IP 10.126.24.2/32 (ns2) yang bisa mentransfer zone dari ns1, maka pastikan pada file named.confdi ns1 pada bagian options terdapat :

allow-transfer { 10.126.24.2/32; };

Kemudian anda bisa login (ssh) ke ns2, dan kemudian buat file named.conf yang isinya adalah sebagai berikut :

options {
        directory "/var/named";
        pid-file "/var/named/named.pid"; };

logging {
        category lame-servers { null; };
};

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

zone "localhost" IN {
        type master;
        file "db.localhost";
        allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "db.127.0.0";
        allow-update { none; };
};

zone "kurowo.edu" {
        type slave;
        file "dbs.kurowo.edu";
        masters { 10.126.24.1; };
}; 

zone "24.126.10.in-addr.arpa" {
        file "dbs.10.126.24";
        masters { 202.145.6.99; };
};

Kemdian restart daemon DNS di ns2 dengan perinta rndc (killall -HUP named) , jika sukses maka zone kurowo.edu dan zone 24.126.10.in-addr.arpa segera ditransfer dari ns1, dan pada file /var/log/messages terdapat pesan sebagai berikut :

Feb 15 14:31:47 kadal named[630]: transfer of 'kurowo.edu' from 10.126.24.1#53: end of transfer 
Feb 15 14:31:47 kadal named[630]: transfer of '24.126.10.in-addr.arpa' from 10.126.24.1#53: end of transfer

Jika anda perhatikan juga file /var/log/messages pada ns1 maka akan menghasilkan pesan berikut :

Feb 15 14:42:43 wedus named[25232]: client 10.126.24.2#3918: transfer of 'kurowo.edu/IN': AXFR started
Feb 15 14:42:43 wedus named[25232]: client 10.126.24.2#1527: transfer of '24.126.10.in-addr.arpa/IN': AXFR started

Jika sukses, berarti primary name server (ns1) dan secondary name server (ns2) sudah beroperasi dengan benar. Ketika anda ingin menambahkan domain baru lagi yang lain, misalnya ayodyo.co.id, anda tinggal mengulangi langkah-langkah dalam seksi "Menambah sebuah domain" . Ketika domain yang anda kelola telah mencapai jumlah ribuan nama domain misalnya, dan anda ingin memisahkan data tersebut dari file konfigurasi named.conf, anda bisa menggunakan include di named.conf , misalnya :

include "/usr/local/named/etc/my.big.hosts.conf"; 

Mendelegasikan subdomain ke name server yang lain

Misalkan anda mempunyai domain kurowo.edu dan ada suatu bagian/departemen yang menginginkan pengelolaan database sendiri terhadap suatu subdomain, maka anda bisa mendelegasikan subdomain tersebut. Diumpamakan subdomain cs.kurowo.edu akan dikelola oleh Departemen Computer Science denganname server yaitu citraksa.cs.kurowo.edu (10.126.25.1) dan citraksi.cs.kurowo.edu (10.126.25.2) maka pada file named.conf di database zone kurowo.edu anda tambahkan :

; cs.kurowo.edu dikelola oleh name server ini
cs              IN      NS      citraksa.cs.kurowo.edu.
                IN      NS      citraksi.cs.kurowo.edu.
citraksa.cs     IN      A       10.126.25.1
citraksi.cs     IN      A       10.126.25.2 

Restart daemon named, dan selanjutnya subdomain tersebut telah didelegasikan.

3. Istilah

Beberapa istilah/singkatan yang digunakan dalam database pada sebuah zone :

4. Change Log

16 Februari 2003

18 Februari 2003

19 Februari 2003

5. Salinan

Salinan ijin dari Penerbit O'Reilly (Sejarah Internet, Sejarah DNS, Konsep dan hirarki DNS) :

From: Cindy Wetterlund <[email protected]>
Subject: Re: Ask about permission  
To: Asfihani <[email protected]>(by way of Mary Hubben <[email protected]>) 
Cc: [email protected], [email protected] 
Date: Tue, 18 Feb 2003 13:51:35 -0800 
X-Mailer: QUALCOMM Windows Eudora Version 4.3.2 
X-Spam-Status: No, hits=-5.0 required=5.0 tests=IN_REP_TO version=2.20 
X-Spam-Level:  Message-Id: <[email protected]>

Hello Asfihani,
Thank you for your mail and inquiry.

O'Reilly gives you permission to use the below mentioned material 
from "DNS and BIND" 3rd edition for educational purposes only.  
Since there is a new edition available, it will be appreciated if you add to 
the reference information a link to the source http://www.oreilly.com/catalog/dns4/
so readers know where to find the most current information.

I hope this is helpful.
Best,
Cindy

Salinan ijin dari Internet Software Consortium (Sejarah BIND) :

From: Paul Vixie <[email protected]> 
Subject: Re: Ask about permission  
To: Asfihani <[email protected]> 
Cc: [email protected] Date: Mon, 17 Feb 2003 15:59:20 +0000 
X-Mailer: MH-E 7.2; nmh 1.0.4; GNU Emacs 21.2.1 
X-Spam-Status: No, hits=-5.0 required=5.0 tests=IN_REP_TO version=2.20 
X-Spam-Level:  Message-Id: <[email protected]>

no problem.  please give us attribution when you quote our material. 
but, you may quote as much of it as you wish. 

6. Referensi