Belajar DNS - dnsdist Dasar
Episode 7 of 23

Belajar DNS - dnsdist Dasar

Episode ini membahas dnsdist sebagai DNS load balancer: konsep frontend listener dan backend pools, konfigurasi awal dengan newServer, kebijakan load balancing leastOutstanding dan roundrobin, pengaturan ACL, serta web dashboard untuk monitoring.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

Di episode 6 kalian punya recursor yang andal. Sekarang bayangkan harus melayani ribuan klien dengan lebih dari satu recursor, sekaligus memblokir penyerang. Di sinilah dnsdist masuk: load balancer DNS yang berdiri di depan, menerima semua query, memilih backend terbaik, dan menegakkan aturan keamanan.

Episode 7 memperkenalkan konsep inti dnsdist — frontend, backend, pool, dan kebijakan load balancing — lalu menutup dengan web dashboard. Kemampuan lanjutan seperti caching, rate limiting, dan scripting Lua menanti di episode 17.

Konsep Frontend dan Backend

Posisi dnsdist di Jaringan

dnsdist duduk persis di antara klien dan backend (recursor atau authoritative). Klien hanya melihat dnsdist; backend tidak pernah terekspos langsung. Ini memberi kalian satu titik kontrol untuk policy, keamanan, dan telemetry.

Topologi dnsdist
klien -> dnsdist (frontend) -> pool 1: recursor-a
                              -> pool 2: recursor-b

Backend dikelompokkan dalam pool. Dengan pool, kalian bisa membedakan lalu lintas: query recursive untuk umum masuk ke pool recursor, sementara query ke zone internal diarahkan ke pool authoritative.

Konfigurasi Awal

Membuat Server dan Listener

Konfigurasi statis dnsdist ditulis di dnsdist.yml. Contoh berikut membuat satu frontend di port 53 dan dua backend recursor:

dnsdist.yml dasar
setLocal:
  - address: 0.0.0.0:53
newServer:
  - address: 192.0.2.11:53
    name: recursor-a
  - address: 192.0.2.12:53
    name: recursor-b
acl:
  - 192.0.2.0/24
  - 127.0.0.0/8

setLocal menentukan frontend yang didengar. newServer mendaftarkan backend. acl membatasi siapa yang boleh bertanya. Setelah itu mulai service dan uji:

Mulai dnsdist dan uji
sudo systemctl restart dnsdist
dig @127.0.0.1 example.com A +short

Verifikasi lewat Konsol

Konsol dnsdist menampilkan status backend secara langsung:

Lihat status backend
dnsdist -c
showServers()
quit()

showServers() memperlihatkan setiap backend, status up/down, dan jumlah query yang dilayani. Jika salah satu backend down, dnsdist otomatis mengarahkan semua query ke yang sehat.

Kebijakan Load Balancing

leastOutstanding dan roundrobin

Kebijakan menentukan backend mana yang menerima query berikutnya:

  • leastOutstanding: mengirim query ke backend dengan jumlah pekerjaan belum selesai paling sedikit. Pilihan terbaik untuk backend dengan kapasitas berbeda.
  • roundrobin: membagi query secara bergiliran. Simpel dan adil untuk backend yang seragam.
  • hash dan policy kustom lain dibahas di episode 17.
Pilih kebijakan di dnsdist.yml
setServerPolicy:
  leastOutstanding:

Dengan setServerPolicy.leastOutstanding, dnsdist selalu memilih backend yang paling senggang. Ini mencegah satu recursor kelebihan beban sementara yang lain menganggur.

Health Check Otomatis

dnsdist terus memantau backend-nya. Jika sebuah backend gagal menjawab, statusnya ditandai down dan lalu lintas dialihkan. Setting checkTimeout, checkInterval, dan maxCheckFailures bisa disesuaikan:

Pengaturan health check
newServer:
  - address: 192.0.2.11:53
    checkTimeout: 500
    checkInterval: 30

ACL dan Web Dashboard

Membatasi Sumber Query

ACL di dnsdist bekerja seperti firewall di depan DNS: query dari alamat di luar daftar langsung ditolak. Ini wajib jika dnsdist terekspos ke jaringan yang tidak dipercaya.

Lihat ACL aktif
dnsdist -c
showACL()
quit()

Web Dashboard

dnsdist punya dashboard berbasis web untuk melihat statistik real-time:

Aktifkan web dashboard
webserver:
  - address: 127.0.0.1:8083
    password: ganti-password-ini

Buka http://127.0.0.1:8083 di browser lab kalian. Dashboard menampilkan grafik query per detik, distribusi tipe record, cache hit rate, dan status setiap backend — jendela pertama menuju observability yang akan kita perdalam di episode 19.

Penutup

Episode 7 menempatkan dnsdist di depan ekosistem kalian: satu frontend, banyak backend dalam pool, kebijakan yang memilih backend paling senggang, health check otomatis, dan dashboard untuk mengawasi semuanya.

Inti yang harus dibawa pulang:

  • dnsdist adalah load balancer yang menyembunyikan backend dari klien.
  • setLocal membuat frontend, newServer mendaftarkan backend, acl membatasi klien.
  • leastOutstanding mengirim query ke backend tersenggang; roundrobin membagi rata.
  • Health check otomatis memindahkan lalu lintas dari backend yang down.
  • Konsol (dnsdist -c) dan web dashboard menampilkan status backend secara live.

Di episode 8 selanjutnya kita akan membahas tools diagnosis dan troubleshooting dasardig +trace, +short, +dnssec, dan +nssearch, perbandingan drill dan kdig, serta membaca log dengan pdns_control dan membedah lalu lintas port 53 dengan tcpdump.

Belajar DNS - dnsdist Dasar | Belajar DNS