Cara Instal dan Konfigurasi BIND9 Sebagai DNS Forwarder di Debian 12

DNS (Domain Name System) adalah sistem penting dalam jaringan komputer yang berfungsi untuk menerjemahkan nama domain (seperti google.com) menjadi alamat IP yang dapat dikenali oleh perangkat jaringan. Tanpa DNS, pengguna harus mengingat alamat IP setiap situs web yang ingin dikunjungi, yang tentu saja tidak efisien.

Dalam infrastruktur jaringan modern, terutama di lingkungan ISP, data center, atau perusahaan besar, sangat umum digunakan DNS forwarder lokal. DNS forwarder bertugas meneruskan permintaan DNS ke server DNS lain (seperti milik Google, Cloudflare, atau OpenDNS) sekaligus menyimpan hasilnya di cache. Dengan begitu, jika ada klien lain yang melakukan permintaan ke domain yang sama, DNS forwarder dapat menjawabnya lebih cepat tanpa perlu melakukan query ulang ke internet.

Artikel ini akan membahas secara lengkap langkah-langkah instalasi dan konfigurasi BIND9 sebagai DNS Forwarder di Debian 12, menggunakan topologi jaringan nyata dengan integrasi ke Mikrotik dan sistem PPPoE.


Topologi Jaringan :

Sebelum mulai instalasi, berikut gambaran topologi jaringan yang digunakan:

        [Internet]
             │
         (eth1)
         [Mikrotik Router]
             │
         (eth2)
     ┌────────────────────────┐
     │     Proxmox Host       │
     │ IP: 10.27.27.2/24      │
     └────────────────────────┘
             │
     ├── VM1: dns1.pikiranberkilau.com (Debian 12)
     │         IP: 10.27.27.27 (Master Forwarder)
     │
     ├── VM2: dns2.pikiranberkilau.com (Debian 12)
     │         IP: 10.27.27.28 (Slave Forwarder)
             │
         (eth3)
     ────────────────▶ Network PPPoE Client (10.10.27.0/24)

Penjelasan singkat:

  • dns1.pikiranberkilau.com (10.27.27.27) → Server DNS utama (master forwarder)
  • dns2.pikiranberkilau.com (10.27.27.28) → Server DNS cadangan (slave forwarder)
  • Mikrotik Router → Menghubungkan jaringan internal dengan internet serta mendistribusikan DNS ke klien PPPoE
  • Klien PPPoE (10.10.27.0/24) → Menggunakan DNS lokal dari dns1 dan dns2

Dengan topologi ini, setiap klien akan melakukan resolusi nama domain melalui DNS lokal (dns1 dan dns2) untuk meningkatkan kecepatan serta efisiensi jaringan.

Langkah 1 – Instalasi BIND9 di Debian 12

Instalasi dilakukan pada kedua server DNS (dns1 dan dns2):

apt update
apt install bind9 bind9-utils bind9-dnsutils -y

Setelah proses instalasi selesai, pastikan service BIND berjalan dengan baik:

systemctl status bind9

Jika statusnya aktif, maka instalasi berhasil.

Langkah 2 – Konfigurasi BIND9 di dns1 (Master Forwarder)

Selanjutnya kita akan mengonfigurasi dns1.pikiranberkilau.com sebagai DNS forwarder utama.

Edit file konfigurasi utama BIND:

nano /etc/bind/named.conf.options

Isi dengan konfigurasi berikut:

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

    forwarders {
        8.8.8.8;
        1.1.1.1;
    };

    dnssec-validation auto;
    recursion yes;
    allow-query { any; };
    allow-recursion { any; };
    allow-transfer { 10.27.27.28; }; // izinkan transfer ke slave
    listen-on { 10.27.27.27; 127.0.0.1; };
    listen-on-v6 { none; };

    max-cache-size 512M;
    max-cache-ttl 86400;
    max-ncache-ttl 3600;
};

Penjelasan:

  • forwarders: Daftar DNS publik tujuan forward (Google & Cloudflare).
  • recursion yes: Mengizinkan klien melakukan query melalui server ini.
  • allow-query: Mengizinkan semua jaringan melakukan permintaan DNS.
  • max-cache-size: Membatasi ukuran cache agar tidak membebani memori.

Setelah konfigurasi selesai, periksa sintaks:

named-checkconf

Jika tidak ada error, restart service:

systemctl restart bind9
systemctl enable bind9

Langkah 3 – Konfigurasi BIND9 di dns2 (Slave Forwarder)

Selanjutnya konfigurasi dns2.pikiranberkilau.com agar menjadi server cadangan dan meneruskan permintaan ke dns1.

Edit file:

nano /etc/bind/named.conf.options

Isi:

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

    forwarders {
        10.27.27.27; // Forward ke dns1
        8.8.8.8;
        1.1.1.1;
    };

    dnssec-validation auto;
    recursion yes;
    allow-query { any; };
    allow-recursion { any; };
    listen-on { 10.27.27.28; 127.0.0.1; };
    listen-on-v6 { none; };

    max-cache-size 512M;
    max-cache-ttl 86400;
    max-ncache-ttl 3600;
};

Periksa kembali:

named-checkconf

Lalu restart service:

systemctl restart bind9
systemctl enable bind9

Langkah 4 – (Opsional) Tambahkan Zona Lokal Internal

Jika kamu memiliki domain internal (misalnya pikiranberkilau.com) dan ingin agar resolusi dilakukan di jaringan lokal, lakukan langkah berikut:

Di dns1 (Master)

Edit file:

nano /etc/bind/named.conf.local

Tambahkan:

zone "pikiranberkilau.com" {
    type master;
    file "/etc/bind/db.pikiranberkilau.com";
    allow-transfer { 10.27.27.28; };
};

Kemudian buat file zona:

nano /etc/bind/db.pikiranberkilau.com

Isi contoh:

$TTL 604800
@   IN  SOA dns1.pikiranberkilau.com. admin.pikiranberkilau.com. (
        2025102901 ; Serial
        3600       ; Refresh
        1800       ; Retry
        1209600    ; Expire
        86400 )    ; Minimum TTL
;
@       IN  NS      dns1.pikiranberkilau.com.
@       IN  NS      dns2.pikiranberkilau.com.
dns1    IN  A       10.27.27.27
dns2    IN  A       10.27.27.28
www     IN  A       10.27.27.100

Di dns2 (Slave)

Edit:

nano /etc/bind/named.conf.local

Isi:

zone "pikiranberkilau.com" {
    type slave;
    masters { 10.27.27.27; };
    file "/var/cache/bind/db.pikiranberkilau.com";
};

Restart keduanya:

systemctl restart bind9

Langkah 5 – Integrasi dengan Mikrotik

Agar seluruh klien PPPoE mendapatkan DNS dari server lokal, atur DNS di Mikrotik:

/ip dns
set servers=10.27.27.27,10.27.27.28 allow-remote-requests=yes

Selanjutnya, agar DNS otomatis terdistribusi ke klien PPPoE:

/ppp profile
set [find name=default] dns-server=10.27.27.27,10.27.27.28

Dengan pengaturan ini, setiap klien yang terhubung melalui PPPoE akan langsung menggunakan DNS lokal tanpa perlu konfigurasi manual.

Langkah 6 – Pengujian

Dari dns1:

dig google.com @127.0.0.1

Dari dns2:

dig google.com @10.27.27.28

Dari klien PPPoE:

nslookup google.com

Jika hasil query keluar dengan cepat, berarti konfigurasi sudah benar dan caching DNS sudah berfungsi.

Langkah 7 – Menambahkan Logging DNS (Opsional)

Untuk memantau aktivitas DNS, aktifkan logging di dns1:

nano /etc/bind/named.conf.local

Tambahkan:

logging {
    channel query_log {
        file "/var/log/named/queries.log" versions 3 size 10m;
        severity info;
        print-time yes;
    };
    category queries { query_log; };
};

Buat folder log dan ubah izin:

mkdir -p /var/log/named
chown bind:bind /var/log/named
systemctl restart bind9

Lihat log dengan:

tail -f /var/log/named/queries.log

Kesimpulan

Dengan menggunakan BIND9 sebagai DNS forwarder di Debian 12, jaringan kamu akan mendapatkan resolusi DNS yang lebih cepat, stabil, dan efisien. Server dns1.pikiranberkilau.com bertugas meneruskan permintaan DNS ke server publik seperti Google atau Cloudflare, sementara dns2.pikiranberkilau.com berperan sebagai cadangan dan caching tambahan.

Integrasi dengan Mikrotik dan distribusi otomatis ke klien PPPoE membuat sistem ini ideal untuk jaringan lokal, warnet, hingga ISP kecil. Dengan konfigurasi yang benar dan logging yang aktif, administrator jaringan dapat memantau dan mengoptimalkan performa DNS dengan mudah.

Kata Penutup

Membangun DNS forwarder lokal menggunakan BIND9 di Debian 12 adalah solusi efektif untuk mengoptimalkan performa jaringan dan meningkatkan keandalan sistem resolusi nama. Dengan menambahkan fitur caching, logging, serta integrasi dengan Mikrotik, sistem ini dapat berjalan stabil dan efisien di lingkungan jaringan kecil hingga menengah.

Leave a Comment