DNSDIST (default filer)

 

Berikut ini adalah Panduan Final dnsdist langkah demi langkah, lengkap, akurat, dan siap dipraktikkan oleh pemula. Panduan ini disusun berdasarkan keinginan Anda, yaitu:

🔁 Semua klien secara default diarahkan ke DNS 2 (Bind9 + RPZ)
Hanya IP tertentu (misal 192.168.15.150 dan 192.168.88.8) yang dibebaskan dari filtering, dan diarahkan ke DNS 3 (PowerDNS Recursor)


🌐 Topologi DNS Anda

Peran IP Keterangan
dnsdist 172.16.200.34 Dispatcher DNS (DNS 1)
DNS 2 172.16.200.2 Bind9 + RPZ (Filter)
DNS 3 172.16.200.18 PowerDNS Recursor (Netral)

✅ LANGKAH 1 — Instalasi dnsdist di Ubuntu 24.04

sudo apt update
sudo apt install dnsdist

✅ LANGKAH 2 — Siapkan File Konfigurasi Utama

Backup file lama:

sudo cp /etc/dnsdist/dnsdist.conf /etc/dnsdist/dnsdist.conf.bak

Edit file konfigurasi:

sudo nano /etc/dnsdist/dnsdist.conf

Lalu isi seperti ini:

-- ========================
-- Konfigurasi Dasar dnsdist
-- ========================

addLocal("172.16.200.34:53")     -- Dengarkan permintaan DNS
addLocal("[::]:53")              -- IPv6 opsional
setACL({"192.168.0.0/16", "127.0.0.1"})  -- Sesuaikan subnet klien

-- ========================
-- Server Upstream (Resolver)
-- ========================

-- DNS 2 = Filtering (Bind9 + RPZ)
newServer({
  address = "172.16.200.2:53",
  name = "DNS2_Filter",
  useClientSubnet = true,
  pool = "filtering_pool"
})

-- DNS 3 = Netral (PowerDNS Recursor)
newServer({
  address = "172.16.200.18:53",
  name = "DNS3_Normal",
  useClientSubnet = true,
  pool = "normal_pool"
})

setPoolPolicy("filtering_pool", firstAvailable)
setPoolPolicy("normal_pool", firstAvailable)

-- ========================
-- Include daftar IP dibebaskan dari filter
-- ========================
include("/etc/dnsdist/nonfilter-clients.lua")

-- ========================
-- Default Rule: Semua ke Filtering (DNS 2)
-- ========================
addRule(AllRule(), PoolAction("filtering_pool"))

-- ========================
-- Logging & Monitoring (Opsional)
-- ========================
setLogLevel(Info)
setLogSyslog(true)
setConsoleSocket("/var/run/dnsdist.sock")
setConsoleACL("127.0.0.1/32")
webserver("0.0.0.0:8083")
setKey("KunciRahasiaGantiSaya123!@#")

✅ LANGKAH 3 — Buat File IP Bebas Filter

Buat file:

sudo nano /etc/dnsdist/nonfilter-clients.lua

Isi file dengan IP-IP yang dibebaskan dari filtering:

-- IP-IP klien yang diarahkan ke DNS3 (tidak difilter)
local free_clients = {
  "192.168.15.150/32",
  "192.168.88.8/32"
}

for _, ip in ipairs(free_clients) do
  addRule(NetmaskGroupRule({ip}), PoolAction("normal_pool"))
end

✅ LANGKAH 4 — Validasi Konfigurasi

Sebelum dijalankan, pastikan konfigurasi benar secara sintaks:

sudo dnsdist --check-config

✅ Jika muncul Configuration check passed, lanjutkan.


✅ LANGKAH 5 — Aktifkan dan Jalankan dnsdist

sudo systemctl restart dnsdist
sudo systemctl status dnsdist

✅ LANGKAH 6 — Konfigurasi Firewall

Di DNS 1 (dnsdist):

sudo ufw allow 53/udp
sudo ufw allow 53/tcp
sudo ufw allow 8083/tcp
sudo ufw allow out to 172.16.200.2 port 53 proto udp
sudo ufw allow out to 172.16.200.18 port 53 proto udp
sudo ufw enable

Di DNS 2 dan DNS 3:

sudo ufw allow from 172.16.200.34 to any port 53 proto udp

✅ LANGKAH 7 — Uji Coba

🔹 Dari IP 192.168.15.150 atau 192.168.88.8:

dig @172.16.200.34 example.com

Harus diteruskan ke DNS 3 (netral)

🔹 Dari IP lain (misal 192.168.1.100):

dig @172.16.200.34 example.com

Harus diteruskan ke DNS 2 (filtered)

🔍 Monitoring (opsional):

sudo dnsdist -c

Dalam CLI, jalankan:

showRules()
showServers()
showPools()

🧠 Catatan Tambahan

Hal Saran
Menambah IP netral Cukup edit file /etc/dnsdist/nonfilter-clients.lua lalu restart
File IP terlalu banyak Bisa pisah jadi banyak file dan include() beberapa kali
Akses web dashboard http://172.16.200.34:8083/
Ubah ACL Gunakan setACL() untuk batasi siapa yang bisa query ke dnsdist

🏁 Kesimpulan

Dengan panduan ini:

  • Semua klien otomatis lewat DNS filtering

  • IP khusus dibebaskan dari filter

  • Pemisahan aturan mudah diatur dan scalable

  • Aman, efisien, dan siap produksi

Jika Anda ingin versi installer otomatis (bash script) atau integrasi ke database (misal untuk ISP), saya siap bantu lanjutkan.

Comments

Popular posts from this blog

Cara Menyembunyikan Router MikroTik Rumahan dari ISP Broadband

billing bawal

Strategi Indonesia 2045–2120: Model Pembangunan Lima Fase Berkeadilan dan Berbasis Bukti