Belajar DNS - PowerDNS Recursor Dasar
Episode 6 of 23

Belajar DNS - PowerDNS Recursor Dasar

Episode ini membahas PowerDNS Recursor: konfigurasi recursor.yml untuk listen address, local zones, dan forward zones, mekanisme caching mulai dari packet cache, record cache, negative caching, sampai pengaturan TTL, serta verifikasi resolution.

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

Pendahuluan

Jika Authoritative adalah "pemilik data", Recursor adalah "agen perjalanan" yang mencari data itu untuk kalian. PowerDNS Recursor menerima query dari klien, menyelesaikan pencarian lewat root hints atau forwarders, lalu menyimpan hasilnya di cache agar query berikutnya hampir gratis.

Episode 6 membahas konfigurasi recursor.yml: di mana mendengarkan, bagaimana menangani zone lokal dan forward zone, serta lapisan caching yang membuat recursor mampu melayani ribuan query per detik dengan sumber daya terbatas.

Konfigurasi Dasar recursor.yml

Listen Address dan Akses

File /etc/powerdns/recursor.yml mengatur semua perilaku. Dua hal pertama yang harus kalian tetapkan: alamat yang didengar dan siapa yang boleh bertanya.

recursor.yml dasar
listen-addresses:
  - 127.0.0.1
  - 192.0.2.53
allow-from:
  - 192.0.2.0/24
  - 127.0.0.0/8
threads: 4

allow-from adalah daftar subnet yang boleh memakai recursor ini. Jangan membuka recursor ke internet tanpa ACL — dia akan menjadi reflektor untuk serangan amplification. Setting ini adalah garis pertahanan pertama.

Verifikasi Dasar

Setelah restart, uji dari sisi klien:

Restart dan uji recursor
sudo systemctl restart pdns-recursor
dig @127.0.0.1 example.com A +short

Recursor punya root hints bawaan sehingga tanpa forwarder dia sudah bisa menyelesaikan nama dari internet. Untuk melihat statistiknya:

Statistik recursor
rec_control get uptime
rec_control get qps

Local Zones dan Forward Zones

Local Zones: Jawaban Tanpa Query ke Internet

Recursor bisa menjawab zone lokal sendiri, berguna untuk lingkungan internal. Zone lokal didefinisikan dengan file zona atau inline:

Local zone di recursor.yml
local-zones:
  - name: internal.example.com
    type: native
    file: /etc/powerdns/local/internal.example.com.zone
  - name: lan.example.com
    type: master
    file: /etc/powerdns/local/lan.example.com.zone

Forward Zones: Meneruskan ke Server Lain

Jika organisasi punya resolver internal atau Authoritative untuk domain tertentu, recursor bisa meneruskan query domain itu tanpa melakukan resolution penuh:

Forward zone di recursor.yml
forward-zones:
  - zone: example.org
    addresses:
      - 192.0.2.10
  - zone: corp.local
    addresses:
      - 10.0.0.53
      - 10.0.0.54

Dengan forward-zones, semua query untuk example.org diteruskan langsung ke 192.0.2.10, bukan dicari dari root. Pola ini sering dipakai saat ada Active Directory, resolver internal, atau split-horizon DNS.

Mekanisme Caching

Packet Cache dan Record Cache

Recursor memakai dua cache utama:

  • Packet cache: menyimpan jawaban utuh sesuai pertanyaan, sehingga query identik bisa dijawab tanpa perhitungan ulang. Sangat cepat.
  • Record cache: menyimpan per record dan TTL-nya, dipakai untuk menyusun jawaban baru dari kombinasi record.
Lihat ukuran cache
rec_control get packetcache-size
rec_control get max-cache-entries

Parameter ini bisa diatur di recursor.yml. Di episode 19 kita akan membahas tuning-nya untuk performa.

Negative Caching dan TTL

Ketika sebuah nama tidak ada, jawaban negatif (NXDOMAIN) juga di-cache sesuai negative TTL dari SOA. Ini mencegah klien dan upstream dibanjiri query untuk nama yang memang tidak ada.

Pengaturan TTL cache
max-negative-ttl: 3600
cache-ttl: 20

max-negative-ttl membatasi berapa lama jawaban "tidak ada" disimpan. cache-ttl adalah nilai maksimal TTL yang dipakai untuk record dari zone tanpa TTL eksplisit. Memahami TTL adalah kunci: TTL panjang mempercepat dan meringankan server, tetapi memperlambat propagasi perubahan.

Melihat Recursor Bekerja

Statistik dan Dump Cache

Untuk membuktikan cache bekerja, query dua kali lalu bandingkan waktu respons dan statistik:

Uji cache dua kali
dig @127.0.0.1 example.com A +noall +stats | grep 'Query time'
dig @127.0.0.1 example.com A +noall +stats | grep 'Query time'
rec_control get cache-hits

Pada query kedua, waktu respons biasanya jauh lebih rendah karena jawaban diambil dari packet cache. Angka cache-hits pada rec_control get cache-hits menunjukkan seberapa sering cache berhasil menjawab tanpa harus menyentuh internet — target health metric yang penting di episode 19.

Dump isi cache
rec_control dump-cache /tmp/rec-cache.txt

Penutup

Episode 6 membuat Recursor kalian menjadi resolver yang benar-benar berguna: mendengarkan dengan ACL yang aman, menjawab zone lokal, meneruskan domain tertentu, dan menyimpan jawaban di lapisan cache yang terukur.

Inti yang harus dibawa pulang:

  • allow-from wajib dibatasi; recursor terbuka tanpa ACL adalah senjata DDoS amplification.
  • Local zones menjawab nama internal tanpa menyentuh internet.
  • Forward zones meneruskan domain tertentu ke resolver atau Authoritative internal.
  • Packet cache menjawab query identik; record cache menyusun jawaban baru dari record ter-cache.
  • Negative caching mencegah banjir NXDOMAIN; TTL mengendalikan kecepatan versus kesegaran data.
  • rec_control get cache-hits adalah barometer kesehatan recursor.

Di episode 7 selanjutnya kita akan membahas dnsdist dasar — konsep load balancer DNS dengan frontend dan backend pools, konfigurasi awal newServer, kebijakan load balancing seperti leastOutstanding dan roundrobin, serta ACL dan web dashboard.