DNS 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.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.
Masih sangat awam dengan pembahasan seperti ini, salam kenal gan.