bind_dnsDNS server berfungsi untuk melakukan translasi suatu nama domain terhadap ip address (forward) ataupun sebaliknya (reverse). Pada penerapannya, minimal DNS server yang bekerja adalah master dan slave agar saling backup satu sama lain ketika salah satu server down, atau bisa lebih dari dua server sehingga lebih dikenal dengan No Single Point of Failure.

Dokumentasi artikel ini akan disampaikan penggunaan dan penerapan DNS server hanya sebagai master atau dengan kata lain satu server saja. Untuk proses penerapan lebih dari satu DNS server hanya pada penerapan sinkronisasi master nameserver terhadap slaves nameserver termasuk informasi file zone atas domain yang di deklarasikan pada suatu DNS server, sehingga setiap domain akan memiliki record yang sama di setiap DNS servernya.

Berikut beberapa mapping DNS sebagai contoh pointing domain terhadap ip address yang dipersiapkan terlebih dahulu sebelum konfigurasi.

Server IP Address Service FQDN
Server A 192.168.137.2 DNS ns1.chrootid.com
Server B 192.168.137.3 Web www.chrootid.com
Server B 192.168.137.3 FTP ftp.chrootid.com
Server C 192.168.137.4 Mail mail.chrootid.com

Konfigurasi Hostname Server

Setiap hostname suatu server harus resolv terhadap ip address.

vim /etc/sysconfig/network
HOSTNAME=ns1.chrootid.com
vim /etc/hosts
192.168.137.2 ns1 ns1.chrootid.com

Installasi paket bind

Proses instalasi paket, dependensis untuk kelengkapan file konfigurasi, init script dan lainnya menggunakan perintah yum berikut.

yum -y install bind bind-utils

Konfigurasi file

Pada pelaksanaannya untuk konfigurasi file diproses menjadi dua, pertama konfigurasi file untuk deklarasi domain didalam DNS server, kedua konfigurasi file untuk proses mapping atau pointing pada file db zone. Untuk mapping sendiri dibedakan menjadi dua, pertama forward zone yang berfungsi untuk menyimpan informasi mapping dari suatu nama domain / host terhadap ip address, dan yang kedua adalah reverse zone yang berfungsi untuk mapping dari ip address terhadap suatu domain atau host atau yang biasa disebut rDNS dengan tipe record nya PTR atau pointer.

Deklarasi Domain

Secara default, kelengkapan file konfigurasi sudah tersimpan di dalam direktori /etc namun sebelum melakukan proses konfigurasi ada baiknya dapat diproses backup terlebih dahulu untuk file original yang disimpan sebagai sample file konfigurasi.

cp /etc/named.conf /etc/named.conf-ori

Apabila tidak ditemukan maka bisa mendapatkan sample file dari direktori /usr/share/doc/bind langsung.

cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /etc/named.conf

Apabila hendak mendeklarasikan suatu domain didalam DNS server maka dapat diproses melalui konfigurasi file /etc/named.conf dan dalam hal ini akan dideklarasikan domain chrootid.com

vim /etc/named.conf
options {
## direktori file zone ##
directory "/var/named";
 
## deklarasi DNS resolver untuk forward paket DNS query terhadap public DNS google ##
forwarders { 8.8.8.8; };
};
 
## deklarasi domain chrootid.com ##
zone "chrootid.com" IN {
        type master;
        file "/var/named/chrootid.com.db"; ## deklarasi file forward zone di dalam dir /var/named ##
        allow-update { none; };
};
 
## deklarasi reverse zone network 192.168.137.0 ##
zone "137.168.192.in-addr.arpa" IN {
        type master;
        file "/var/named/192.168.137.db"; ## deklarasi file reverse zone di dalam dir /var/named ##
        allow-update { none; };
};

Konfigurasi file zone

File konfigurasi baik forward zone ataupun reverse zone secara default sudah tersimpan didalam direktori /var/named. Jika default file zone masih belum ditemukan didalam direktori tersebut maka bisa menyalin sample file konfigurasinya dari direktori /usr/share/doc/bind. Pada artikel ini, asusmsi bahwa default file zone masih belum tersedia di dalam direktori /var/named sehingga perlu di salin dari direktori /usr/share/doc/bind terlebih dahulu

rsync -ah /usr/share/doc/bind-9.8.2/sample/var/named/named.* /var/named/

Kelengkapan konfigurasi zone sudah siap, sebelumnya ada point yang harus dicatat pada saat konfigurasi file zone.

  • Setiap karakter ‘@’ memiliki nilai null.
  • Setiap host atau FQDN harus diakhiri dengan karakter dot ‘.’  Contoh www.chrootid.com.

Konfigurasi forward zone

Konfigurasi file forward zone menyimpan informasi record DNS yang memetakan (mapping) atau pointing suatu host atau domain terhadap suatu ip address. Pastikan bahwa file forward zone sudah dideklarasikan pada saat deklarasi domain di dalam file konfigurasi /etc/named.conf

vim /var/named/chrootid.com.db

Sesuai dengan persiapan mapping sebelumnya dengan implenetasinya pada file konfigurasi forward zone berikut.

$TTL 14400
chrootid.com.   86400   IN      SOA     ns1.chrootid.com.    adit.chrooid.com.       (
                                                2015120901 ;Serial Number
                                                1200 ;refresh
                                                7200 ;retry
                                                604800 ;expire
                                                86400 ;minimum
)
chrootid.com.   86400   IN      NS      ns1.chrootid.com.
ns1 		14400   IN      A       192.168.137.2
chrootid.com.   14400   IN      A       192.168.137.3
www    		14400   IN      CNAME   chrootid.com.
ftp		14400   IN      CNAME   chrootid.com.
chrootid.com.   14400   IN      MX      0       mail.chrootid.com.
mail    	14400   IN      A   	192.168.137.4
  • SOA: Start of Authority merupakan informasi suatu DNS server mulai dari email administrator. serial number, timers refresh, expires dan lainnya.
  • NS: Nameserver record yang memberikan acuan lokasi DNS server suatu nama domain atau host.
  • A: Record yang berfungsi untuk pointing suatu domain atau host terhadap suatu ip address
  • MX: Record Mail Exchanger merupakan acuan lokasi mailbox/mail server suatu domain atau host. Memiliki niliai priority yang menunjukan nilai paling kecil adalah prioritas utama lokasi mailbox/mail server suatu domain atau host.
  • CNAME: Record Canonical Name digunakan sebagai nama alias yang menunjukan lokasi ip address yang sama dengan suatu domain atau host
  • TTL: Time To Live merupakan masa expired suatu informasi record atau ip address yang tersimpan pada suatu cache DNS host dalam satuan detik. Apabila expired atau habis maka akan melakukan fetching resolving record DNS nya kembali.
  • Detail informasi penjelesan tipe record DNS bisa merujuk pada URL artikel wiki https://en.wikipedia.org/wiki/List_of_DNS_record_types tersebut.

Konfigurasi reverse zone

Reverse zone atau yang bisa dikenal dengan reverse DNS (rDNS) merupakan mapping dari suatu ip address terhadap suatu host atau domain. Tipe record DNS pada file konfigurasi reverse zone adalah PTR atau pointer. Pada kasus yang didokumentasikan dalam artikel ini akan menambahkan rDNS untuk record mail.
Salah satu penggunaan reverse DNS umumnya adalah pada mail server guna menghindari pesan email yang masuk kedalam folder spam pada alamat email server tujuan, atau bahkan penolakan (rejecting) pesan email masuk oleh server penerima. Oleh karenanya, sebagaimana diketahui host mail.chrootid.com resolve terhadap ip address 192.168.137.4 sesuai yang telah dikonfigurasi di dalam file konfigurasi forward zone maka akan coba di tambahkan rDNS untuk record mail tersebut.
File konfigurasi reverse zone sesuai dengan yang telah dideklarasikan di dalam /etc/named.conf sebelumnya yaitu sebagai berikut.

vim /var/named/192.168.137.db
$TTL 14400
chrootid.com.   86400   IN      SOA     ns1.chrootid.com.    adit.chrooid.com.       (
                                                2015120901 ;Serial Number
                                                1200 ;refresh
                                                7200 ;retry
                                                604800 ;expire
                                                86400 ;minimum
)
IN NS      ns1.chrootid.com.
4		IN PTR	mail.chrootid.com.

Konfigurasi akhir

Setelah proses instalasi paket, konfigurasi file maka tahapan selanjutnya yaitu penyesuaian ownership file konfigurasi menjadi named. Named merupakan daemon service DNS server yang berjalan di dalam sistem linux.

chgrp named /var/named/*

Tambahkan DNS resovler untuk proses forward paket DNS query.

vim /etc/resolv.conf
nameserver 192.168.137.2

Jalankan service named sebagai daemon DNS server serta pastikan servicenya dapat berjalan secara otomatis pada saat server boot atau reboot.

service named restart && chkconfig named on

Percobaan DNS Server

Proses install dan konfigurasi belum dapat dinyatakan selesai sebelum dilakukan proses percobaan. Prosesnya sendiri dapat menggunakan perintah dig yang sudah terinstall bersama dengan tools DNS lain atau bind-utils.
Pertama testing record dari file konfigurasi forward zone.

root@ns1 [~]# dig any chrootid.com @192.168.137.2

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.5 <<>> any chrootid.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18900
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;chrootid.com.                  IN      ANY

;; ANSWER SECTION:
chrootid.com.           86400   IN      SOA     ns1.chrootid.com. adit.chrooid.com. 2015120901 1200 7200 604800 86400
chrootid.com.           14400   IN      NS      ns1.chrootid.com.
chrootid.com.           14400   IN      A       192.168.137.3
chrootid.com.           14400   IN      MX      0 mail.chrootid.com.

;; ADDITIONAL SECTION:
ns1.chrootid.com.    14400    IN      A       192.168.137.2

;; Query time: 230 msec
;; SERVER: 4.2.2.2#53(4.2.2.2)
;; WHEN: Fri Feb  3 01:19:48 2016
;; MSG SIZE  rcvd: 379

Kemudian selanjutnya percobaan hasil konfigurasi reverse zone dan masih menggunakan tools yang sama yaitu dig sebagai berikut.

root@ns1 [~]# dig -x 192.168.137.4 @192.168.137.2

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.5 <<>> -x 192.168.137.4
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30674
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

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

;; ANSWER SECTION:
4.137.168.192.in-addr.arpa. 86400 IN     PTR     mail.chrootid.com.

;; Query time: 24 msec
;; SERVER: 4.2.2.2#53(4.2.2.2)
;; WHEN: Fri Feb  3 01:26:12 2016
;; MSG SIZE  rcvd: 74

Catatan khusus

  • Konfigurasi DNS server masih sebatas single point of failure karena hanya memiliki satu DNS server atau nameserver.
  • Direkomendasikan memiliki lebih dari satu DNS server (master dan slaves) dengan cara menambahkan nameservernya lebih dari satu record NS (ns1, ns2, ns3 dst) sebagai backup nameserver apabila mengalami failure (down). Deklarasikan nameserver tambahan sebagai slave serta sinkronisasikan seluruh data-data record file zone /var/named agar setiap DNS server (master dan slaves) memiliki record yang sama.
  • DNS Server yang telah dikonfigurasi beserta domainnya yang di deklarasikan  adalah masih dalam lingkup ip private atau localhost dan sudah berjalan dengan baik.
  • Apabila sudah memiliki DNS server dengan ip public maka bisa merujuk pada konfigurasi artikel untuk konfigurasi DNS servernya.
  • Apabila sudah memiliki domain public yang di dapat (order) dari penyedia domain maka daftarkan Child Nameserver (record NS beserta dengan ip address NS nya) dan Nameserver menyesuaikan dengan yang telah dikonfigurasi di sisi server melalui panel domain yang telah disediakan oleh provider domain atau bisa request untuk dibuatkan kepada pihak provider domain terkait.
  • Konfigurasi reverse DNS masih dalam lingkup ip private atau localhost dan sudah berjalan dengan baik.
  • Apabila sudah memiliki DNS server dengan ip public dan ingin menambahkan rDNS atau PTR record maka silahkan request penambahan PTR record kepada DNS server service provider atau hosting provider penyedia ip address public tersebut, sebab setiap ip public memiliki acuan lokasi NS untuk menyimpan informasi reverse DNS untuk setiap blok ip address publicnya, serta NS tersebut adalah DNS Server service provider terkait.
  • Setiap ada perubahan atau update NS di sisi panel domain yang disediakan oleh provider domain maka hasil dari DNS query yaitu ip address public yang direspon DNS server tidak langsung berubah, dikarenakan ada masa propagasi DNS di jaringan Internet untuk setiap DNS resolver Internet Service Provider. Estimasinya relatif, namun pada umumnya setelah TTL expired selama 86400 detik atau sekitar 24 jam, setelahnya DNS resolver akan melakukan fetching ulang terhadap parent / root DNS server kembali untuk update informasi NS record atas domain tujuan yang hendak di resolve.