Dalam bentuk yang paling sederhana, Domain Name System (DNS) sebenarnya merupakan kumpulan nama host dan alamat IP. Database ini diperlukan oleh DNS untuk menjalankan fungsinya sebagai penerjemah nama host ke alamat IP atau sebaliknya dari suatu domain yang diwakilinya maupun dari domain lain yang tersimpan didalam cache database DNS tersebut.

DNS sangat dibutuhkan oleh berbagai macam aplikasi yang terhubung ke internet, untuk menerjemahkan nama host yang dihubunginya dengan alamat IP yang dimiliki oleh host tersebut. Ketika suatu aplikasi menghubungi www.molaviarman.net , maka sebenarnya aplikasi tersebut tidak akan langsung menghubungi www.molaviarman.net , tetapi mencari tahu terlebih dahulu alamat IP yang dipakai oleh host tersebut dan DNS-lah yang menyediakan layanan tesebut.

Ketika alamat IP sudah diperoleh, maka aplikasi tersebut akan menghubungi alamat IP tersebut. Oleh karena itu aplikasi DNS merupakan salah satu layanan yang sangat penting di internet, karena tanpa internet tidak akan semudah mengingat www.molaviarman.net.

Bagaimana DNS Bekerja ?

DNS merupakan sistem database terdistribusi. Terdistribusi disini berarti server DNS hanya akan menyimpan data nama host atau komputer dari domain yang diwakilinya saja. DNS tersebut tidak menyimpan data host atau komputer dari domain yang tidak diwakilinya. Tetapi server DNS yang saling terpisah tersebut, bagaimanapun juga terkoneksi dan bertukar data dengan server DNS yang lain ketika server tersebut membutuhkan data mengenai komputer atau host yang berada di bawah domain yang diwakilinya.

Di DNS , ada beberapa istilah dan konsep yang perlu dimengerti terlebih dahulu sebelum kita membahas secara rinci konfigurasi DNS seperti otoritatif , rekursif dan delegasi.

Server Cache VS Otoritatif

Server DNS memiliki dua fungsi utama, yaitu sebagai server nama otoritatif dan sebagai resolver / cache. DNS yang berfungsi sebagai server nama berarti server DNS tersebut akan menjawab pertanyaan mengenai domain yang diwakilinya. Sebagai contoh, server DNS molaviarman.net hanya bertanggung jawab atas penerjemahan nama host ke alamat IP dari host yang berada dibawah domain molaviarman.net seperti mail.molaviarman.net , www.molaviarman,net dan sebagainya.

Server DNS ini bersifat otoritatif terhadap domain molaviarman.net dalam arti akan menjawab pertanyaan untuk domain molaviarman.net dan juga pada saat yang sama bersifat non-rekursif. Non-rekursif berarti server tidak akan menjawab permintaan yang ditunjukkan bukan untuk domain yang diwakilinya.

Fungsi server DNS yang kedua adalah sebagai resolver / cache. Server DNS jenis ini hanya meneruskan permintaan ke server DNS yang lain dan menyimpan jawaban atas permintaan tersebut di cachenya. Berlawanan dengan server otoritatif yang bersifat non-rekursif, server jenis ini bersifat rekursif yang akan menjawab permintaan atas domain apapun.

Yang perlu diperhatikan dalam mendesain server DNS adalah hendaknya kita memisahkan antara server DNS yang berfungsi sebagai server otiritatif dan server cache. Kebanyakan server DNS berfungsi baik sebagai server nama otoritatif dan juga sebagai server cache. Lalu mengapa kita perlu memisahkan kedua fungsi tersebut ke dalam dua server DNS yang berbeda?

Ada dua keuntungan jika kita memisahkan kedua fungsi tersebut dan keduanya berhubungan dengan masalah keamanan. Pertama adalah membuat server DNS anda lebih dapat diandalkan dari perspektif ketersediaan layanan. Jika anda menggabungkan kedua fungsi server tersebut, maka jika misalkan terjadi serangan DoS terhadap server DNS anda, maka anda akan mengalami kegagalan atas kedua fungsi tersebut. Server DNS anda akan gagal menjadi server otoritatif terhadap domain anda dan juga gagal melayani permintaan untuk meresolusi domain lain dari klien anda.

Kedua pemisahan fungsi akan membuat hacker yang berhasil menguasai server DNS anda hanya menguasai salah satu fungsi tersebut, tetapi tidak keduanya. Sehingga memisahkan kedua fungsi tersebut dapat membatasi kemungkinan kedua fungsi server DNS anda dapat dikuasi dengan satu serangan saja.

Dalam membuat server DNS kita juga harus memperhatikan dimana akan kita letakkan server DNS yang berfungsi sebagai server nama otoritatif dan server cache. Server nama otoritatif hendaknya kita letakkan didalam DMZ dan melayani langsung permintaan dari internet, tetapi server cache hendaknya diletakkan didalam jaringan lokal. atau DMZ dan tidak terekspose secara langsung dari internet. Hal ini dilakukan agar server cache terlindungi dari akses langsung internet.

Langkah konfigurasi :

Langkah 1 : instalasi
# apt install bind9 dnsutils bind9utils
Langkah 2 : editing file named.conf.options
# cd /etc/bind
# nano named.conf.options 
Output :
options {
 directory "/var/cache/bind";
 // If there is a firewall between you and nameservers you want
 // to talk to, you may need to fix the firewall to allow multiple
 // ports to talk. See http://www.kb.cert.org/vuls/id/800113
 // If your ISP provided one or more IP addresses for stable
 // nameservers, you probably want to use them as forwarders.
 // Uncomment the following block, and insert the addresses replacing
 // the all-0's placeholder.

 forwarders {
 202.45.67.1; 8.8.8.8;
 };
  
 /==================================================================
 // If BIND logs error messages about the root key being expired,
 // you will need to update your keys. See https://www.isc.org/bind-keys
 //==================================================================
 dnssec-validation auto;
 auth-nxdomain no;
 listen-on-v6 { any; };
 listen-on port 53 { localhost; 202.45.67.0/24; };
 allow-query { localhost; 202.45.67.0/24; };
 recursion yes;
};
Langkah 3 : edit file named.conf.local
# nano /etc/bind/named.conf.local
Output :
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
 
 zone "jalanlain.com" {
 type master;
 file "/etc/bind/forward.jalanlain.com";
};
 zone "67.45.202.in-addr.arpa" {
 type master;
 file "/etc/bind/reverse.jalanlain.com";
}; 
Langkah 4 : edit file forward.jalanlain.com
# cp db.local forward.jalanlain.comforward
# nano forward.jalanlain.com
Output :
;
 ; BIND data file for local loopback interface
 ;
 $TTL    604800
 @       IN      SOA     jalanlain.com. root.jalanlain.com. (
                               2         ; Serial
                          604800         ; Refresh
                           86400         ; Retry
                         2419200         ; Expire
                          604800 )       ; Negative Cache TTL
 ;
 @       IN      NS      ns1.jalanlain.com.
 @       IN      NS      ns2.jalanlain.com.
 @       IN      A       202.45.67.21
 ns1     IN      A       202.45.67.21
 ns2     IN      A       202.45.67.21
 www     IN      CNAME   jalanlain.com.  
Langkah 5 : edit file reverse.jalanlain.com
# cp db.127 reverse.jalanlain.com
# nano reverse.jalanlain.com
Output :
;
 ; BIND reverse data file for local loopback interface
 ;
 $TTL    604800
 @       IN      SOA     jalanlain.com. root.jalanlain.com. (
                               1         ; Serial
                          604800         ; Refresh
                           86400         ; Retry
                         2419200         ; Expire
                          604800 )       ; Negative Cache TTL
 ;
 @        IN      NS      ns1.jalanlain.com.
 @        IN      NS      ns2.jalanlain.com.
 ns1     IN      A       202.45.67.21
 ns2     IN      A       202.45.67.21
 @       IN      A       202.45.67.21
 21      IN      PTR     jalanlain.com.
 21      IN      PTR     ns1.jalanlain.com.
Langkah 6 : start , status 
# systemctl start bind9
# systemctl status bind9
# named-checkconf
Langkah 7 : edit resolv.conf
# nano /etc/resolv.conf
search jalanlain.com
nameserver 202.45.67.21
nameserver 202.45.67.1
Langkah 8 : pembuktian DNS berjalan
# nslookup jalanlain.com
# nslookup 202.45.67.21
# dig jalanlain.com
Langkah 9 : cek konfigurasi
# named-checkconf /etc/bind/named.conf
Langkah 10 : cek zone
# named-checkzone jalanlain /etc/bind/forward.jalanlain.com
# named-checkzone jalanlain /etc/bind/reverse.jalanlain.com