Administrasi Server Jaringan

DNS Server (BIND9)

Panduan praktikum instalasi dan konfigurasi DNS Server menggunakan BIND9 di Debian & Ubuntu Server. Mencakup konsep Domain Name System, Forward & Reverse Zone, Subdomain, DNS Record (A, CNAME, PTR, MX), DNS Resolver, dan Troubleshooting.

DNS Server di Linux (BIND9)

Domain Name System (DNS) adalah protokol jaringan fundamental yang berfungsi menerjemahkan nama domain yang mudah diingat manusia (Fully Qualified Domain Name / FQDN), seperti smk-tkj.sch.id, menjadi alamat IP numerik komputer (IP Address), seperti 192.168.50.2, dan sebaliknya.

DNS sering diibaratkan sebagai "Buku Telepon Internet". Tanpa adanya DNS Server, setiap pengguna harus menghafal kombinasi deretan angka IP Address dari setiap server dan website yang ingin diakses.

Jobsheet Praktikum 08: Administrasi Server Jaringan
Waktu Praktikum: 4 x 45 Menit
Tingkat SMK: XI / XII TJKT (TKJ)

1. Konsep & Arsitektur DNS

A. Struktur Hierarki DNS

DNS diorganisasikan dalam struktur pohon terbalik (inverted tree) yang berjenjang secara hierarkis:

                      [ . (Root Domain) ]
                               │
            ┌──────────────────┼──────────────────┐
        [ .id ]             [ .com ]           [ .net ]     (Top-Level Domain / TLD)
            │                  │
      [ .sch.id ]        [ google.com ]                     (Second-Level Domain / SLD)
            │
    [ smk-tkj.sch.id ]                                      (Third-Level / Domain Name)
            │
    ┌───────┴───────┬───────────────┐
 [ www ]         [ mail ]       [ portal ]                  (Subdomain / Hostname)
  1. Root Domain (.): Tingkat tertinggi dalam hierarki DNS yang dikelola oleh 13 kluster Root Server global.
  2. Top-Level Domain (TLD): Ekstensi domain global seperti .com, .org, .net, maupun ccTLD (country-code) seperti .id, .uk, .sg.
  3. Second-Level Domain (SLD): Kategori turunan domain di bawah TLD, contohnya .sch.id (sekolah), .ac.id (kampus), .co.id (perusahaan).
  4. Third-Level Domain / Domain: Nama unik instansi atau organisasi, misalnya smk-tkj.sch.id.
  5. Subdomain / Hostname: Bagian spesifik yang mengarah ke layanan server tertentu, misalnya www (Web), mail (Email), portal (Portal Siswa).

B. Tipe-Tipe DNS Record Utama

Tipe RecordNama LengkapFungsi & Penjelasan
AIPv4 AddressMemetakan nama host / domain ke alamat IPv4 32-bit (contoh: smk-tkj.sch.id → 192.168.50.2).
AAAAIPv6 AddressMemetakan nama host / domain ke alamat IPv6 128-bit.
CNAMECanonical NameMembuat nama alias (alias/nickname) yang merujuk ke domain atau record A lainnya (contoh: www alias ke smk-tkj.sch.id).
PTRPointerMemetakan alamat IP ke nama domain (Reverse Lookup), vital untuk verifikasi keamanan email server.
NSName ServerMenentukan DNS Server yang berwenang (authoritative) atas suatu zona domain.
SOAStart of AuthorityMenyimpan metadata otoritatif zona: Nama server utama, email administrator, nomor serial (serial number), dan interval waktu refresh/expire.
MXMail ExchangeMengarahkan email yang ditujukan ke domain ke Mail Server penanggung jawab, dilengkapi dengan nilai prioritas (preference).
TXTTextMenyimpan catatan teks sembarang, sering digunakan untuk autentikasi keamanan SPF, DKIM, dan verifikasi domain Google/Cloudflare.

C. Alur Kerja Resolusi DNS (Query DNS)

Proses pencarian alamat IP dari nama domain berlangsung melalui langkah-langkah berikut:

1. Cek DNS Cache Lokal

Client (Web Browser / OS) memeriksa cache internal. Jika pernah dikunjungi, IP langsung digunakan tanpa query ke jaringan.

2. Recursive Query ke DNS Resolver

Jika tidak ada di cache, client mengirim permintaan ke DNS Server lokal (Resolver / ISP / BIND9).

3. Iterative Query ke Root Server & TLD

DNS Resolver mencari informasi secara berjenjang: Root Server (.) → TLD Server (.id) → Authoritative Name Server (ns1.smk-tkj.sch.id).

4. Jawaban Otoritatif & Caching

Authoritative Name Server mengembalikan IP 192.168.50.2. Resolver menyimpannya ke cache dan meneruskannya ke browser client.

DNS Server berkomunikasi menggunakan Port 53 UDP untuk query resolusi cepat standar, dan Port 53 TCP untuk respon berukuran besar (> 512 bytes) serta replikasi Zone Transfer (AXFR/IXFR) antar master-slave server.

2. Topologi & Skema Lab Praktikum

Pada jobsheet ini, kita akan membangun sebuah Authoritative DNS Server lokal menggunakan software BIND9 di Debian / Ubuntu Server:

[ Client VM / Komputer Siswa ]
IP Address : 192.168.50.100 (DHCP / Statis)
DNS Server : 192.168.50.2
               │
               │ (LAN / Host-Only Network: 192.168.50.0/24)
               ▼
[ Debian / Ubuntu BIND9 Server ]
IP Address  : 192.168.50.2/24
Gateway     : 192.168.50.1
Domain Name : smk-tkj.sch.id
Zone Reverse: 50.168.192.in-addr.arpa

Tabel Rencana DNS Record

Tipe RecordNama Host / SubdomainTarget TujuanKeterangan
SOA@ns1.smk-tkj.sch.id.Master Name Server & Admin
NS@ns1.smk-tkj.sch.id.Name Server Otoritatif
A@ (smk-tkj.sch.id.)192.168.50.2Domain Utama (Root Zone)
Ans1192.168.50.2Host Name Server
Aserver192.168.50.2Host Mesin Server
CNAMEwwwserver.smk-tkj.sch.id.Alias Web Server
CNAMEportalserver.smk-tkj.sch.id.Alias Portal Pembelajaran
Amail192.168.50.2Host Server Mail
MX (10)@mail.smk-tkj.sch.id.Mail Exchanger Prioritas 10
PTR2ns1.smk-tkj.sch.id.Reverse IP 192.168.50.2

3. Instalasi Paket BIND9

Jalankan perintah pembaruan repository dan instalasi paket BIND9 beserta utilitas diagnostiknya:

# Update repository
sudo apt update

# Install BIND9 dan tools pengujian DNS
sudo apt install bind9 bind9utils bind9-doc dnsutils -y
Paket dnsutils (atau bind9-dnsutils pada Debian/Ubuntu rilis baru) berisi utilitas pengujian vital seperti nslookup, dig, dan host.

Periksa status layanan BIND9 setelah selesai diinstal:

sudo systemctl status named

(Catatan: Layanan BIND9 di Linux Debian/Ubuntu dapat dipanggil dengan nama named maupun bind9).


4. Konfigurasi Opsi Global (named.conf.options)

File /etc/bind/named.conf.options mengatur perilaku global BIND9 seperti DNS Forwarder, hak akses query (ACL), dan validasi DNSSEC.

Buat salinan backup terlebih dahulu:

sudo cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bak
sudo nano /etc/bind/named.conf.options

Sesuaikan isinya seperti konfigurasi di bawah ini:

options {
    directory "/var/cache/bind";

    // ─── IP Listener ────────────────────────────────────────────────────────
    // Izinkan BIND9 mendengarkan query pada port 53 dari localhost & semua interface
    listen-on port 53 { any; };
    listen-on-v6 { any; };

    // ─── Hak Akses Query (Access Control) ───────────────────────────────────
    // Izinkan query dari localhost dan subnet client lab (192.168.50.0/24)
    allow-query { any; };
    allow-recursion { localhost; 192.168.50.0/24; };

    // ─── DNS Forwarders (Penerusan ke Internet) ────────────────────────────
    // Jika domain bukan domain lokal smk-tkj.sch.id, teruskan ke DNS Public
    forwarders {
        8.8.8.8;
        1.1.1.1;
    };

    // ─── Keamanan & Validasi ───────────────────────────────────────────────
    // Ubah ke "no" jika lab praktikum tidak memiliki koneksi internet aktif
    dnssec-validation auto;

    auth-nxdomain no;    # Sesuai standar RFC1035
};

5. Deklarasi Zona Domain (named.conf.local)

File /etc/bind/named.conf.local digunakan untuk mendaftarkan zona yang dikelola oleh server kita:

  1. Forward Zone: Mengonversi nama domain smk-tkj.sch.id → IP Address.
  2. Reverse Zone: Mengonversi IP Address 192.168.50.2 → Nama Domain.

Buka file konfigurasi:

sudo nano /etc/bind/named.conf.local

Tambahkan blok zona berikut pada baris paling bawah:

// ─── Zona Forward (Domain ke IP) ──────────────────────────────────────────
zone "smk-tkj.sch.id" {
    type master;
    file "/etc/bind/db.smk-tkj.sch.id";
};

// ─── Zona Reverse (IP ke Domain) ──────────────────────────────────────────
// Subnet 192.168.50.x dibalik 3 oktet pertamanya menjadi 50.168.192.in-addr.arpa
zone "50.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192";
};

Perhatikan penulisan nama zona reverse: Tiga oktet pertama dari subnet 192.168.50.0 harus ditulis secara terbalik (50.168.192) diikuti dengan domain khusus .in-addr.arpa.


6. Membuat File Database Forward Zone

Salin template bawaan db.local menjadi file zona forward kita:

sudo cp /etc/bind/db.local /etc/bind/db.smk-tkj.sch.id
sudo nano /etc/bind/db.smk-tkj.sch.id

Ubah seluruh isinya menjadi seperti berikut:

;
; BIND data file for forward zone smk-tkj.sch.id
;
$TTL    604800
@       IN      SOA     ns1.smk-tkj.sch.id. root.smk-tkj.sch.id. (
                              2026082901 ; Serial (Format: YYYYMMDDNN)
                                  604800 ; Refresh (1 minggu)
                                   86400 ; Retry (1 hari)
                                 2419200 ; Expire (4 minggu)
                                  604800 ) ; Negative Cache TTL (1 minggu)
;
; ─── Name Server (NS Record) ────────────────────────────────────────────────
@       IN      NS      ns1.smk-tkj.sch.id.

; ─── Mail Exchanger (MX Record) ────────────────────────────────────────────
@       IN      MX  10  mail.smk-tkj.sch.id.

; ─── A Records (Alamat IPv4 Utama & Host) ──────────────────────────────────
@       IN      A       192.168.50.2
ns1     IN      A       192.168.50.2
server  IN      A       192.168.50.2
mail    IN      A       192.168.50.2

; ─── CNAME Records (Nama Alias) ────────────────────────────────────────────
www     IN      CNAME   server.smk-tkj.sch.id.
portal  IN      CNAME   server.smk-tkj.sch.id.
ftp     IN      CNAME   server.smk-tkj.sch.id.
Aturan Tanda Titik (.) di Akhir FQDN:
Selalu perhatikan tanda titik di akhir nama domain (contoh: ns1.smk-tkj.sch.id.). Jika Anda lupa menulis tanda titik di akhir, BIND9 akan otomatis menambahkan nama domain zona sehingga terbaca menjadi ns1.smk-tkj.sch.id.smk-tkj.sch.id (Error!).

7. Membuat File Database Reverse Zone

Salin template bawaan db.127 menjadi file zona reverse kita:

sudo cp /etc/bind/db.127 /etc/bind/db.192
sudo nano /etc/bind/db.192

Ubah seluruh isinya menjadi konfigurasi berikut:

;
; BIND reverse data file for 192.168.50.0/24 (50.168.192.in-addr.arpa)
;
$TTL    604800
@       IN      SOA     ns1.smk-tkj.sch.id. root.smk-tkj.sch.id. (
                              2026082901 ; Serial
                                  604800 ; Refresh
                                   86400 ; Retry
                                 2419200 ; Expire
                                  604800 ) ; Negative Cache TTL
;
; ─── Name Server ────────────────────────────────────────────────────────────
@       IN      NS      ns1.smk-tkj.sch.id.

; ─── PTR Records (Oktet Terakhir IP -> FQDN) ────────────────────────────────
; 192.168.50.2 -> ns1, domain utama, mail, dll
2       IN      PTR     ns1.smk-tkj.sch.id.
2       IN      PTR     smk-tkj.sch.id.
2       IN      PTR     server.smk-tkj.sch.id.
2       IN      PTR     mail.smk-tkj.sch.id.

Keterangan Angka 2 di Kolom Kiri:
Karena zona mencakup 192.168.50.0/24, angka 2 merepresentasikan host IP 192.168.50.2.


8. Uji Validasi Sintaks Konfigurasi BIND9

Sebelum merestart service, selalu lakukan pengujian sintaks untuk memastikan tidak ada kesalahan ketik atau titik yang tertinggal.

A. Uji Sintaks File Konfigurasi BIND9

sudo named-checkconf

(Jika tidak ada output teks yang muncul, artinya konfigurasi named sudah 100% valid tanpa error).

B. Uji Database Forward Zone

sudo named-checkzone smk-tkj.sch.id /etc/bind/db.smk-tkj.sch.id

Output yang Diharapkan:

zone smk-tkj.sch.id/IN: loaded serial 2026082901
OK

C. Uji Database Reverse Zone

sudo named-checkzone 50.168.192.in-addr.arpa /etc/bind/db.192

Output yang Diharapkan:

zone 50.168.192.in-addr.arpa/IN: loaded serial 2026082901
OK

9. Menerapkan Konfigurasi & Menjalankan BIND9

Jika semua pengujian menghasilkan status OK, restart dan aktifkan service BIND9:

# Restart layanan BIND9
sudo systemctl restart named

# Aktifkan agar otomatis berjalan saat booting
sudo systemctl enable named

# Cek status running
sudo systemctl status named

Pastikan status layanan menunjukkan Active: active (running).


10. Konfigurasi DNS Resolver

Agar mesin server dan perangkat client menggunakan BIND9 server kita untuk menjawab permintaan domain, kita perlu mengonfigurasi DNS Resolver.

A. Di Mesin DNS Server Sendiri

Edit file /etc/resolv.conf:

sudo nano /etc/resolv.conf

Tambahkan baris berikut di bagian atas:

nameserver 127.0.0.1
nameserver 192.168.50.2
search smk-tkj.sch.id
Pada Debian/Ubuntu yang menggunakan systemd-resolved atau resolvconf, pastikan konfigurasi DNS permanen diatur melalui /etc/network/interfaces (Debian) atau /etc/netplan/*.yaml (Ubuntu) dengan menambahkan parameter nameservers: [192.168.50.2, 8.8.8.8].

B. Di Mesin Client (Linux / Windows)

  • Linux Client: Tambahkan nameserver 192.168.50.2 pada /etc/resolv.conf atau Netplan.
  • Windows Client: Buka Network Connections → Properties IPv4 → Isi Preferred DNS server: 192.168.50.2.
  • Integrasi DHCP Server: Jika menggunakan ISC-DHCP-Server, ubah parameter di /etc/dhcp/dhcpd.conf:
    option domain-name-servers 192.168.50.2, 8.8.8.8;
    option domain-name "smk-tkj.sch.id";
    

11. Pengujian Resolusi DNS

Lakukan pengujian dari server maupun client menggunakan perintah-perintah berikut:

A. Pengujian Menggunakan nslookup

1. Forward Lookup (Domain Utama & Subdomain):

nslookup smk-tkj.sch.id 192.168.50.2

Hasil Output:

Server:     192.168.50.2
Address:    192.168.50.2#53

Name:   smk-tkj.sch.id
Address: 192.168.50.2

2. Forward Lookup CNAME Alias (www & portal):

nslookup www.smk-tkj.sch.id 192.168.50.2

Hasil Output:

Server:     192.168.50.2
Address:    192.168.50.2#53

www.smk-tkj.sch.id  canonical name = server.smk-tkj.sch.id.
Name:   server.smk-tkj.sch.id
Address: 192.168.50.2

3. Reverse Lookup (IP ke Domain):

nslookup 192.168.50.2 192.168.50.2

Hasil Output:

2.50.168.192.in-addr.arpa   name = ns1.smk-tkj.sch.id.
2.50.168.192.in-addr.arpa   name = smk-tkj.sch.id.

B. Pengujian Menggunakan dig (Domain Information Groper)

dig memberikan informasi detail mengenai flag, header DNS, dan waktu respon query:

dig @192.168.50.2 smk-tkj.sch.id

Perhatikan bagian berikut pada output:

  • status: NOERROR → Query sukses dijawab.
  • flags: qr aa rd ra → Huruf aa berarti Authoritative Answer (jawaban resmi dari master zone server).
  • ANSWER SECTION → Menampilkan record smk-tkj.sch.id. IN A 192.168.50.2.

Cek Record MX (Mail Server):

dig @192.168.50.2 smk-tkj.sch.id MX

Cek Reverse Lookup (dig -x):

dig @192.168.50.2 -x 192.168.50.2

C. Pengujian Menggunakan host dan ping

# Perintah ringkas host
host smk-tkj.sch.id
host www.smk-tkj.sch.id
host 192.168.50.2

# Pengujian konektivitas ICMP via domain
ping smk-tkj.sch.id -c 3
ping portal.smk-tkj.sch.id -c 3

12. Konfigurasi Firewall (UFW)

Jika server mengaktifkan firewall UFW (Uncomplicated Firewall), buka port layanan DNS (TCP dan UDP port 53):

# Buka port DNS 53 UDP dan TCP
sudo ufw allow 53/tcp
sudo ufw allow 53/udp

# Atau menggunakan profil bawaan aplikasi
sudo ufw allow "Bind9"

# Muat ulang & cek status UFW
sudo ufw reload
sudo ufw status

13. Monitoring & Troubleshooting DNS

A. Memeriksa Log BIND9 secara Realtime

Gunakan journalctl untuk mendeteksi error zona atau query yang ditolak:

sudo journalctl -u named -f

B. Tabel Troubleshooting Umum

Gejala MasalahKemungkinan PenyebabSolusi Praktis
Status query SERVFAIL1. Forwarders internet tidak terjangkau.
2. dnssec-validation gagal saat server offline.
Ubah dnssec-validation no; di named.conf.options jika di lab offline tanpa internet.
Status query NXDOMAINRecord subdomain belum terdaftar di file database zona.Tambahkan record A / CNAME yang sesuai di /etc/bind/db.smk-tkj.sch.id lalu naikkan Serial Number.
Status query REFUSEDParameter allow-query atau allow-recursion memblokir IP client.Pastikan allow-query { any; }; aktif di named.conf.options.
Domain menjadi ganda: www.smk-tkj.sch.id.smk-tkj.sch.idLupa membubuhkan tanda titik (.) di akhir FQDN pada file database zone.Tambahkan titik di akhir nama domain, contoh: server.smk-tkj.sch.id. lalu restart service.
Perubahan record tidak berefek pada client1. Lupa menaikkan nilai Serial Number SOA.
2. Cache DNS pada OS client belum dibersihkan.
Naikkan Serial Number di zone file, restart named, lalu di client Windows jalankan ipconfig /flushdns.
BIND9 gagal start (Job failed)Terdapat kesalahan sintaks titik koma (;) atau kurung kurawal ({ }).Jalankan named-checkconf untuk menemukan nomor baris yang error.

14. Jobsheet Praktikum Siswa

  1. Instalasi & Verifikasi Service: Pasang paket bind9, bind9utils, dan dnsutils pada mesin Linux Server Anda. Tunjukkan screenshot status aktif systemctl status named.
  2. Konfigurasi Forward & Reverse Zone: Buat zona domain dengan format nama Anda sendiri, misalnya nama-siswa.sch.id (IP Server Anda). Konfigurasikan file /etc/bind/named.conf.local, /etc/bind/db.nama-siswa, dan /etc/bind/db.ip.
  3. Uji Validasi Sintaks: Jalankan perintah named-checkconf, named-checkzone forward, dan named-checkzone reverse. Pastikan semuanya menghasilkan output OK.
  4. Pembuatan Subdomain & Alias: Tambahkan minimal 3 subdomain record (www, portal, mail) dan 1 record MX.
  5. Uji Resolusi dari Client: Dari PC/VM Client, lakukan pengujian menggunakan nslookup dan ping ke domain utama serta subdomain yang telah dibuat. Buktikan hasil Forward Lookup dan Reverse Lookup berhasil.
  6. Laporan Praktikum: Dokumentasikan seluruh tangkapan layar langkah 1 s/d 5 ke dalam format Laporan Praktikum ASJ.

Sudah Selesai Mempelajari Modul Ini?

Tandai modul ini untuk mencatat progress belajar Anda.