Ditutorial kali ini kita akan membahas cara membuat DNS (DOMAIN NAME SERVER) Server dengan bind9, distro Linux yang kita gunakan adalah Ubuntu 20.04. Penggunaan memory untuk DNS server bisa dibilang ramah memory, untuk DNS Server yang saya kelola saya menggunakan 1 GB memory, maksimum memory yang digunakan 200 MB untuk 100 Domain.
Dengan mengelola DNS anda, ada banyak kemudahan yang bisa didapatkan, seperti tidak perlu menggunakan DNS hosting yang mahal, lokasi server bebas dipilih. Diluar itu ada kekurangannya, yaitu anda perlu mengelola dan mengupdate server DNS tersebut.
DNS (Domain Name system) digunakan untuk menerjemahkan nama domain ke alamat IP. Sebagai contoh anda mengunjungi google.com, DNS server akan menerjemahkan alamat tersebut ke IP 172.217.194.102
, dengan begitu data situs google.com yang anda buka akan diberikan oleh IP tersebut.
Kebutuhan System
1. Server Ubuntu dengan Public IP
2. Nama domain (bisa menggunakan subdomain)
Cara untuk mengkonfigurasi DNS untuk subdomain atau domain, caranya sama saja. Yang paling penting anda melakukan setting DNS untuk domain tersebut. Sebagai contoh untuk DNS, saya menggunakan Cloudflare untuk mengelola domain jaranguda.com, tetapi untuk subdomain cluster.jaranguda.com saya ingin DNS dikelola oleh bind9, caranya adalah tambahkan Name Server untuk cluster.jaranguda.com di Cloudflare.
Persiapan Sistem
Update dan upgrade semua software yang ada di Ubuntu 20.04 ke versi terbaru
sudo apt update && sudo apt upgrade -y
bila ada update kernel, sangat di sarankan untuk restart agar Ubuntu menggunakan kernel tersebut.
sudo reboot
Informasi domain dan IP
# | Nilai | Keterangan |
---|---|---|
DOMAIIN | jaranguda.com | |
IP Server | 192.168.88.20 | IP Publik server |
Domain Name server | ns1.jaranguda.com ns2.jaranguda.com |
saat mengikuti tutorial ini, ingat untuk mengganti jaranguda.com
menjadi domain anda sendiri.
Domain Registrar
Di tempat anda mendaftarkan domain perlu diset nameserver ke ns1.jaranguda.com
. Tiap-tiap registrar memiliki tampilan yang berbeda, untuk namesilo caranya seperti berikut ini
Install bind9 di Ubuntu
Software bind9 sudah tersedia di repository Ubuntu, jadi bisa langsung di install dengan apt
sudo apt install bind9 -y
Untuk menambahkan DNS untuk domain baru, tambahkan zone untuk domain tersebut di /etc/bind/named.conf.default-zones
. Agar memudahkan konfigurasinya gunakana nama zone dan nama file konfignya sesuai dengan nama domain yang disetting, cara ini akan sangat membantu bisa anda mengelola banyak domain. Tiap zone file mengelola domain/subdomain yang berhubungan dengan domain/subdomain tersebut. Sebagai contoh kita akan mengkonfigurasi DNS untuk domain jaranguda.com.
Buka file /etc/bind/named.conf.default-zones
tambahkan dibaris paling bawah
zone "jaranguda.com" { type master; file "/etc/bind/jaranguda.com.conf"; };
Untuk informasi dns jaranguda.com kita simpan di /etc/bind/jaranguda.com.conf
, buat file tersebut lalu isi dengan
$TTL 86400 @ IN SOA jaranguda.com. dnsadmin.jaranguda. ( 1647361418 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS ns1.jaranguda.com. @ IN NS ns2.jaranguda.com. @ IN A 192.168.10.1 @ IN AAAA 2a01:4xf8:1d1e:83fd::1 @ IN MX 1 aspmx.l.google.com. @ IN MX 10 alt1.aspmx.l.google.com. @ IN MX 10 alt2.aspmx.l.google.com. @ IN MX 10 alt3.aspmx.l.google.com. @ IN MX 10 alt4.aspmx.l.google.com. ns1 IN A 192.168.10.1 ns2 IN A 192.168.10.1 blog IN A 192.168.10.1
NS : bagian ini harus ditambahkan, agar bind9 mengenali name server yang bertanggung jawab.
@ : root domain, dalam contoh ini adalah jaranguda.com
A : IP address dari subdomain/domain, IP publik server
AAAA: A menggunakan IPv6
MX : record mail server, alamat dari mail server yang digunakan. Pada contoh saya menggunakan Google Workspace
ns1, ns2 dan blog pada contoh diatas adalah subdomain
Bagian serial, harus di update setiap kali anda melakukan perubahan. Pada contoh saya menggunakan unix time, yang bisa diambil dengan menjalankan perintah echo $(date +%s)
di terminal Linux.
Sebelum service bind9 di restart, validasi terlebih dahulu
sudo named-checkconf
bila tidak ada pesan error yang muncul, restart bind9
sudo systemctl restart named
lalu cek status service bind9
sudo systemctl restart named
kurang lebh outputnya
● named.service - BIND Domain Name Server Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-03-15 17:20:00 UTC; 41s ago Docs: man:named(8) Main PID: 3052 (named) Tasks: 5 (limit: 2275) Memory: 13.4M CGroup: /system.slice/named.service └─3052 /usr/sbin/named -f -u bind
verifikasi kalo kita sudah bisa melakukan query domain jaranguda.com
dari server dengan mengeksekusi perintah dig jaranguda.com @127.0.0.1
; <<>> DiG 9.16.24-RH <<>> ns jaranguda.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1781 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;jaranguda.com. IN NS ;; ANSWER SECTION: jaranguda.com. 86356 IN NS ns1.jaranguda.com. jaranguda.com. 86356 IN NS ns2.jaranguda.com. ;; Query time: 10 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Mar 16 21:43:08 WIB 2022 ;; MSG SIZE rcvd: 59
Cek DNS dari Luar
Perubahan DNS (DNS propagation) bisa berlangsung sampai beberapa jam, di beberapa kasus sampai 24 jam. Untuk melewati batasan ini, kita bisa langsung melakukan query dari Public DNS server, contoh dari Cloudflare dan Google. Jalankan perintah ini di terminal
dig jaranguda.com @8.8.8.8 dig jaranguda.com @1.1.1.1
hasilnya harusnya sama dengan sewaktu melakukan query dari localhost
bang mau tanya klo ip publik cm 1 terus sy pasang di router apakah bisa tetap install bind9 di ubuntu dengan ip server lokal ? mohon pencerahannya
Bisa ngga ada masalah, ngga punya public IP juga bisa, kalo mau pake buat lokal