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.

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.
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.
klien -> dnsdist (frontend) -> pool 1: recursor-a
-> pool 2: recursor-bBackend 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 statis dnsdist ditulis di dnsdist.yml. Contoh berikut membuat satu frontend di port 53 dan dua backend recursor:
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/8setLocal menentukan frontend yang didengar. newServer mendaftarkan backend. acl membatasi siapa yang boleh bertanya. Setelah itu mulai service dan uji:
sudo systemctl restart dnsdist
dig @127.0.0.1 example.com A +shortKonsol dnsdist menampilkan status backend secara langsung:
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 menentukan backend mana yang menerima query berikutnya:
setServerPolicy:
leastOutstanding:Dengan setServerPolicy.leastOutstanding, dnsdist selalu memilih backend yang paling senggang. Ini mencegah satu recursor kelebihan beban sementara yang lain menganggur.
dnsdist terus memantau backend-nya. Jika sebuah backend gagal menjawab, statusnya ditandai down dan lalu lintas dialihkan. Setting checkTimeout, checkInterval, dan maxCheckFailures bisa disesuaikan:
newServer:
- address: 192.0.2.11:53
checkTimeout: 500
checkInterval: 30ACL 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.
dnsdist -c
showACL()
quit()dnsdist punya dashboard berbasis web untuk melihat statistik real-time:
webserver:
- address: 127.0.0.1:8083
password: ganti-password-iniBuka 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.
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:
setLocal membuat frontend, newServer mendaftarkan backend, acl membatasi klien.leastOutstanding mengirim query ke backend tersenggang; roundrobin membagi rata.dnsdist -c) dan web dashboard menampilkan status backend secara live.Di episode 8 selanjutnya kita akan membahas tools diagnosis dan troubleshooting dasar — dig +trace, +short, +dnssec, dan +nssearch, perbandingan drill dan kdig, serta membaca log dengan pdns_control dan membedah lalu lintas port 53 dengan tcpdump.