DNS (Domain Name Systems), berperan sebagai penerjemah antara ip adress dengan hostname suatu mesin. Baik di internet maupun di jaringan lokal. DNS ini sangat membantu kita dalam mengakses suatu mesin ataupun sebuah website yang mungkin kita sendiri tidak hapal satu-persatu IP address nya. Kebanyakan orang pasti lebih mudah mengingat sebuah nama dibandingkan mengingat beberapa digit angka, dalam konteks ini IP address. Kecuali jumlah uang itu pasti cepet 😀
DNS menterjemahkan IP address ke hostname maupun hostname ke IP address. DNS merupakan service yang wajib dari sebuah jaringan server yang diakses oleh banyak orang.
Kebutuhan
- Server DNS
Hostname = ns.raihan.net
IP Address = 192.168.80.119
IP DNS = 192.168.80.119 - Klien 1
Hostname = www.raihan.net
IP Address = 192.168.80.191
IP DNS = 192.168.80.119 - Klien 2
Hostname = repo.raihan.net
IP Address = 192.168.80.192
IP DNS = 192.168.80.119
Instalasi BIND
Jika kita menggunakan Centos, untuk melakukan konfigurasi kita bisa menggunakan paket yang bernama BIND. Instalasi bisa dilakukan dengan perintah dibawah ini
[root@ns ~]# yum install bind bind-utils -y
Setelah itu, edit file named.conf
[root@ns ~]# nano /etc/named.conf
Contoh bagian yang harus di edit ada dibawah. Bagian yang ditebalkan adalah bagian yang perlu ditambahkan. Tambahkan nama zonenya. Disini saya menggunakan nama domain raihan.net
options {
listen-on port 53 { 127.0.0.1; 192.168.80.119;};
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; any;};
zone "." IN {
type hint;
file "named.ca";
};
zone "raihan.net" IN {
type master;
file "db.raihan.net";
allow-update { none; };
};
zone "80.168.192.in-addr.arpa" IN {
type master;
file "db.80.168.192";
allow-update { none; };
};
Penambahan File Forward & Reverse DNS
Selanjutnya menambahkan file forward dan reverse DNS. Pada centos 7 direktori default untuk kedua file tersebut adalah /var/named. Dan untuk pemberian nama harus disesuaikan dengan yang tercantum di file named.conf, misalnya db.raihan.net untuk file forwardnya dan db.80.168.192 untuk file reversenya.
[root@ns ~]# nano /var/named/db.raihan.net
Bentuk filenya kurang lebih seperti dibawah ini
$TTL 86400
@ IN SOA ns.raihan.net. root.raihan.net. (
2018100901 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
@ IN NS ns.raihan.net.
@ IN NS www.raihan.net.
@ IN NS repo.raihan.net.
@ IN A 192.168.80.119
@ IN A 192.168.80.191
@ IN A 192.168.80.192
ns IN A 192.168.80.119
www IN A 192.168.80.191
repo IN A 192.168.80.192
Selanjutnya membuat file reverse
[root@ns ~]# nano /var/named/db.80.168.192
Bentuk filenya kurang lebih seperti dibawah ini
$TTL 86400
@ IN SOA ns.raihan.net. root.raihan.net. (
2018100902 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
@ IN NS ns.raihan.net.
@ IN NS www.raihan.net.
@ IN NS repo.raihan.net.
ns IN A 192.168.80.119
www IN A 192.168.80.191
repo IN A 192.168.80.192
119 IN PTR ns.raihan.net.
191 IN PTR www.raihan.net.
192 IN PTR repo.raihan.net.
Setelah membuat file forward dan reverse DNS, pastikan bahwa file named.conf beserta kedua file tersebut sudah benar. Untuk cek file named.conf bisa mengetikkan perintah
[root@ns ~]# named-checkconf /etc/named.conf
Jika keluarannya kosong, maka file named.conf sudah benar. Untuk cek file forward bisa mengetikkan perintah
[root@ns ~]# named-checkzone raihan.net /var/named/db.raihan.net zone raihan.net/IN: loaded serial 2018100901 OK [root@ns ~]# named-checkzone raihan.net /var/named/db.80.168.192 zone raihan.net/IN: loaded serial 2018100902 OK
Jika result file forward dan reversenya seperti diatas berarti sudah ok. Jika belum benar maka akan muncul keterangan di baris mana kesalahannya. Entah kurang titik, koma, titik koma (;), A record belum ditambahkan dan lain-lain. Selanjutnya hidupkan bind servicenya menggunakan perintah
[root@ns ~]# systemctl start named
[root@ns ~]# systemctl enable named
Konfigurasi Tambahan
Setelah itu ada beberapa konfigurasi tambahan dari mulai firewall, hingga permission file forward dan reverse. Service DNS menggunakan port 53, supaya DNS bisa melewati firewall maka kita harus allow port 53 dengan perintah
[root@ns ~]# firewall-cmd --permanent --add-port=53/tcp success [root@ns ~]# firewall-cmd --permanent --add-port=53/udp success [root@ns ~]# firewall-cmd --reload success
Selanjutnya menambahkan permission untuk file forward dan reverse maupun file named.conf
[root@ns ~]# chgrp named -R /var/named/ [root@ns ~]# chown root:named /etc/named.conf ownership of '/etc/named.conf' retained as root:named [root@ns ~]# restorecon -rv /var/named/ [root@ns ~]# restorecon /etc/named.conf
Terakhir edit file resolv.conf. Masukkan IP server DNS. Urutan IP-IP di resolv.conf sangat mempengaruhi urutan mesin untuk resolv masing-masing DNS. Jika urutan pertamanya adalah ip lokal maka server akan resolv pertama kali ke dns lokal bukan dns publik.
[root@ns ~]# nano /etc/resolv.conf
# Generated by NetworkManager search raihan.net nameserver 192.168.80.119 nameserver 192.168.80.29
Restart network
[root@ns ~]# systemctl restart network
Testing
Selanjutnya adalah testing. Sebelum testing dari klien coba testing dulu dari server itu sendiri, apakah domain sudah terdeteksi. Ketikkan perintah dibawah ini. Sesuaikan perintah dengan nama domain yang diberikan. Lihat apakah hasilnya sesuai dengan konfigurasi yang sebelumnya dilakukkan
[root@ns ~]# dig raihan.net ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> raihan.net ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37144 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 3, ADDITIONAL: 4 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;raihan.net. IN A ;; ANSWER SECTION: raihan.net. 86400 IN A 192.168.80.119 raihan.net. 86400 IN A 192.168.80.192 raihan.net. 86400 IN A 192.168.80.191 ;; AUTHORITY SECTION: raihan.net. 86400 IN NS ns.raihan.net. raihan.net. 86400 IN NS www.raihan.net. raihan.net. 86400 IN NS repo.raihan.net. ;; ADDITIONAL SECTION: ns.raihan.net. 86400 IN A 192.168.80.119 www.raihan.net. 86400 IN A 192.168.80.191 repo.raihan.net. 86400 IN A 192.168.80.192 ;; Query time: 0 msec ;; SERVER: 192.168.80.119#53(192.168.80.119) ;; WHEN: Kam Okt 11 11:24:35 WIB 2018 ;; MSG SIZE rcvd: 189
Testing apakah DNS bisa mentranslasikan hostname ke ip atau ip ke hostname. Ketikkan perintah
[root@ns ~]# nslookup raihan.net Server: 192.168.80.119 Address: 192.168.80.119#53 Name: raihan.net Address: 192.168.80.191 Name: raihan.net Address: 192.168.80.119 Name: raihan.net Address: 192.168.80.192 [root@ns ~]# nslookup 192.168.80.119 Server: 192.168.80.119 Address: 192.168.80.119#53 119.80.168.192.in-addr.arpa name = ns.raihan.net. [root@ns ~]# nslookup 192.168.80.191 Server: 192.168.80.119 Address: 192.168.80.119#53 191.80.168.192.in-addr.arpa name = www.raihan.net. [root@ns ~]# nslookup 192.168.80.192 Server: 192.168.80.119 Address: 192.168.80.119#53 192.80.168.192.in-addr.arpa name = repo.raihan.net.
Pastikan hasilnya sudah benar. Jika sudah benar, coba untuk testing dari sisi klien. Misalnya ping dari klien yang memiliki hostname www.raihan.net ke klien yang memiliki hostname repo.raihan.net dan sebaliknya. Jika kedua klien tersebut running dan ip addressnya sesuai dengan konfigurasi DNS server, maka hasil pingnya pasti reply.
C:\Users\Raihan1>ping www.raihan.net Pinging www.raihan.net [192.168.80.191] with 32 bytes of data: Reply from 192.168.80.191: bytes=32 time<1ms TTL=64 Reply from 192.168.80.191: bytes=32 time<1ms TTL=64 Reply from 192.168.80.191: bytes=32 time=1ms TTL=64 Reply from 192.168.80.191: bytes=32 time=1ms TTL=64 Ping statistics for 192.168.80.191: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 1ms, Average = 0ms
C:\Users\Raihan2>ping repo.raihan.net Pinging www.raihan.net [192.168.80.192] with 32 bytes of data: Reply from 192.168.80.192: bytes=32 time<1ms TTL=64 Reply from 192.168.80.192: bytes=32 time<1ms TTL=64 Reply from 192.168.80.192: bytes=32 time=1ms TTL=64 Reply from 192.168.80.192: bytes=32 time=1ms TTL=64 Ping statistics for 192.168.80.192: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 1ms, Average = 0ms