Belajar DNS - Dynamic Updates & Automation
Series/Belajar DNS/Episode 12
Episode 12 of 23

Belajar DNS - Dynamic Updates & Automation

Episode ini membahas RFC 2136 dynamic update: mengaktifkan DNS update dengan pdnsutil enable-dnsupdate dan forward-dnsupdate, melakukan update otomatis lewat nsupdate, serta integrasi dari DHCP, Docker, dan skrip provisioning dengan kombinasi API.

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

Pendahuluan

Di dunia yang berubah cepat, mengedit zone secara manual adalah kutukan: lambat, rawan salah ketik, dan tidak bisa mengejar kecepatan container atau VM yang berganti IP setiap menit. Dynamic update (RFC 2136) memecahkan masalah ini dengan mengizinkan klien menambah, mengubah, dan menghapus record lewat protokol.

Episode 12 membahas pengaktifan dynamic update di PowerDNS, praktik nsupdate, dan integrasi dengan DHCP, Docker, serta skrip provisioning. Setelah episode ini, perubahan DNS bisa dilakukan oleh mesin, bukan oleh manusia.

Mengaktifkan Dynamic Update

pdnsutil enable-dnsupdate

Dynamic update tidak aktif secara default. Aktifkan per zone:

Aktifkan dynamic update
pdnsutil enable-dnsupdate example.com
pdnsutil show-zone example.com | grep -i dnsupdate

pdnsutil enable-dnsupdate example.com menandai zone example.com menerima update dinamis. Untuk mengaktifkan secara global, atur dnsupdate=yes di pdns.conf — tetapi mengaktifkan per zone lebih aman karena kontrolnya lebih halus.

Restriksi Berdasarkan Sumber

Karena dynamic update mengubah data secara langsung, kalian wajib membatasi siapa yang boleh melakukannya. Cara paling tepat adalah TSIG: buat key per klien atau per kelompok, lalu beri hak update hanya pada zone yang bersangkutan.

Buat TSIG key untuk klien DHCP
pdnsutil generate-tsig-key dhcp-key hmac-sha256
pdnsutil add-tsig-key dhcp-key hmac-sha256 <key-hash>

Dengan TSIG, permintaan update tanpa tanda tangan yang valid akan ditolak. Ini jauh lebih baik daripada membuka dynamic update tanpa otentikasi.

nsupdate: Alat Update Dinamis

Melakukan Update Pertama

nsupdate adalah klien standar untuk RFC 2136. Buat file instruksi lalu jalankan:

Tambah record via nsupdate
cat > /tmp/update.txt << 'EOF'
server 127.0.0.1
zone example.com
update add laptop.example.com 300 A 192.0.2.100
send
EOF
 
nsupdate -v /tmp/update.txt

Instruksi di atas menambah laptop.example.com dengan TTL 300 detik dan alamat 192.0.2.100. Dengan TSIG, tambahkan flag -k:

nsupdate dengan TSIG
nsupdate -k /etc/bind/Kdhcp-key.+165+00000.key -v /tmp/update.txt

Menghapus dan Mengganti

Update dinamis juga menghapus record, berguna saat VM mati:

Hapus record via nsupdate
cat > /tmp/delete.txt << 'EOF'
server 127.0.0.1
zone example.com
update delete laptop.example.com A
send
EOF
 
nsupdate -v /tmp/delete.txt

Kombinasi tambah, hapus, dan ganti lewat script membuat DNS menjadi database yang hidup mengikuti keadaan infrastruktur.

Integrasi dari Berbagai Sumber

DHCP dan Docker

Kasus paling umum adalah DHCP yang mendaftarkan host: setiap kali klien mendapat alamat IP, DHCP server menjalankan script yang memanggil nsupdate. Pola yang sama dipakai untuk container: saat container naik dan mendapat IP, skrip provisioning mendaftarkan namanya di DNS.

Contoh skrip provisioning sederhana
HOST=app-01
IP=192.0.2.101
{
  echo "server 127.0.0.1"
  echo "zone example.com"
  echo "update delete $HOST.example.com A"
  echo "update add $HOST.example.com 300 A $IP"
  echo "send"
} | nsupdate -k /etc/bind/Kapp.key -v

Skrip di atas bersifat idempotent: menghapus record lama dulu lalu menambahkan yang baru, sehingga aman dijalankan berulang kali tanpa error duplikat.

Kombinasi dengan API

Untuk otomatisasi skala besar, padukan dynamic update dengan API PowerDNS (episode 20): API untuk operasi zona dan record terstruktur, nsupdate untuk update cepat dari klien seperti DHCP. Keduanya saling melengkapi — API menangani perubahan administratif, nsupdate menangani perubahan operasional berkecepatan tinggi.

Validasi perubahan lewat dig
dig @127.0.0.1 laptop.example.com A +short

Keamanan Dynamic Update

Prinsip yang Harus Dipegang

Dynamic update adalah pintu yang bisa disalahgunakan. Aturan yang wajib kalian terapkan:

  • Aktifkan per zone, bukan global, kecuali ada alasan kuat.
  • Wajib TSIG: tanpa tanda tangan, update ditolak.
  • TTL pendek (300 detik atau kurang) untuk record yang sering berubah.
  • Batasi sumber klien lewat firewall dan allow-update-from di pdns.conf.
Membatasi sumber update
allow-update-from=192.0.2.0/24

allow-update-from membatasi alamat yang boleh mengirim dynamic update. Gabungkan dengan TSIG, dan kalian memiliki dua lapis pertahanan sekaligus.

Penutup

Episode 12 membuat DNS kalian menjadi dinamis: mengaktifkan update per zone, melakukan perubahan otomatis lewat nsupdate, mengintegrasikannya dengan DHCP dan Docker, dan mengamankannya dengan TSIG serta restriksi sumber.

Inti yang harus dibawa pulang:

  • pdnsutil enable-dnsupdate mengaktifkan update dinamis per zone.
  • nsupdate menambah, mengubah, dan menghapus record lewat RFC 2136.
  • Skrip provisioning idempotent menghapus dulu lalu menambah record.
  • Dynamic update wajib diamankan dengan TSIG dan allow-update-from.
  • Kombinasikan dynamic update dengan API untuk otomatisasi menyeluruh.

Di episode 13 selanjutnya kita akan membahas DNSSEC: signing zone di sisi Authoritative — konsep KSK dan ZSK, algoritma RSA dan ECDSA P-256, record RRSIG, DNSKEY, DS, NSEC, dan NSEC3, serta praktik pdnsutil secure-zone, rotasi key, dan publikasi DS ke registrar.

Belajar DNS - Dynamic Updates & Automation | Belajar DNS