Belajar DNS - Encrypted DNS: DoT, DoH & DoQ
Series/Belajar DNS/Episode 15
Episode 15 of 23

Belajar DNS - Encrypted DNS: DoT, DoH & DoQ

Episode ini membahas encrypted DNS: DoT di port 853 dengan TLS, DoH di port 443 lewat HTTP/2, dan DoQ di atas QUIC, implementasi ketiganya di dnsdist dengan sertifikat TLS, serta koneksi outgoing Recursor yang terenkripsi dan memvalidasi sertifikat server upstream.

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

Pendahuluan

Query DNS biasa bisa dibaca dan dimodifikasi siapa saja di jalur jaringan — penyedia akses, hotspot, atau penyerang. Encrypted DNS mengenkripsi seluruh pertukaran sehingga tidak ada pihak ketiga yang bisa mengintip atau meracuni jawaban. Ini lapisan terakhir dari keamanan DNS modern.

Episode 15 membahas tiga protokol encrypted DNS — DoT, DoH, dan DoQ — lalu mengimplementasikannya di dnsdist dan mengonfigurasi Recursor untuk koneksi outgoing yang terenkripsi.

Tiga Protokol Encrypted DNS

Perbandingan Cepat

Ketiganya mengenkripsi DNS dengan TLS, berbeda hanya pada lapisan transport:

  • DoT (RFC 7858): DNS di atas TLS, port 853. Enkripsi langsung dan mudah dikenali.
  • DoH (RFC 8484): DNS di dalam HTTP/2, port 443. Menyamarkan lalu lintas DNS sebagai HTTPS biasa.
  • DoQ/DoH3 (RFC 9250): DNS di atas QUIC, port 853. Menggabungkan enkripsi TLS 1.3 dengan latensi rendah multi-stream.
Uji DoT dengan kdig
kdig +tls +tls-ca /etc/ssl/certs/ca-certificates.crt \
  @1.1.1.1 example.com A

Perintah di atas mengirim query DoT ke Cloudflare dengan verifikasi rantai sertifikat. Flag +tls-ca memastikan kdig memvalidasi sertifikat server.

Implementasi di dnsdist

Frontend DoT

dnsdist mengubah server menjadi endpoint encrypted hanya dengan mendaftarkan listener TLS:

Frontend DoT di dnsdist.yml
addTLSLocal:
  - address: 0.0.0.0:853
    certificate: /etc/dnsdist/server.crt
    privateKey: /etc/dnsdist/server.key

addTLSLocal membuat listener DoT di port 853 dengan sertifikat server. Semua query yang masuk lewat listener ini diteruskan ke backend dengan cara yang sama seperti query biasa.

Frontend DoH

DoH memerlukan HTTP/2, yang di dnsdist 2.1 ditangani oleh nghttp2. Satu listener bisa melayani banyak endpoint:

Frontend DoH di dnsdist.yml
addDOHLocal:
  - address: 0.0.0.0:443
    certificate: /etc/dnsdist/server.crt
    privateKey: /etc/dnsdist/server.key
    urls:
      - /dns-query

addDOHLocal menyediakan endpoint DoH di port 443. Klien memakai URL https://dns.example.com/dns-query — persis pola yang dipakai provider besar.

Frontend DoQ

DoQ berjalan di atas QUIC. dnsdist 2.1 menambahkan listener khusus:

Frontend DoQ di dnsdist.yml
addDoQLocal:
  - address: 0.0.0.0:853
    certificate: /etc/dnsdist/server.crt
    privateKey: /etc/dnsdist/server.key

Catatan: DoQ dan DoT berbagi port 853 secara konseptual, tetapi keduanya bisa berjalan bersamaan di alamat berbeda atau memakai dukungan port-sharing QUIC.

Menguji Endpoint Encrypted

Query DoH dengan curl

DoH menggunakan HTTP, sehingga bisa diuji dengan curl menggunakan format JSON yang disediakan provider:

Query DoH dengan curl
curl -s 'https://127.0.0.1/dns-query?name=example.com&type=A' \
  -H 'accept: application/dns-json' -k

Verifikasi Semua Protokol

Untuk menguji endpoint DoT dan DoQ dari sisi klien:

Uji DoT dan DoQ
kdig +tls @127.0.0.1 example.com A
kdig +quic @127.0.0.1 example.com A

kdig +tls memakai DoT, kdig +quic memakai DoQ. Jika ketiga perintah (curl DoH, kdig DoT, kdig DoQ) mengembalikan jawaban yang sama, dnsdist kalian resmi menjalankan encrypted DNS.

Recursor sebagai Klien: Outgoing Encryption

Koneksi Upstream yang Terenkripsi

Recursor 5.4 bisa mengirim query keluar dengan enkripsi. Ini membuat seluruh rantai — dari klien sampai upstream — terenkripsi, bukan hanya di ujung depan:

Forwarder DoT di recursor.yml
forward-zones:
  - zone: "."
    addresses:
      - 1.1.1.1:853
      - 9.9.9.9:853
    tls:
      cert: /etc/powerdns/client.pem

Validasi Sertifikat Server

Fitur penting Recursor 5.4: validasi sertifikat server upstream saat memakai DoT. Dengan tls.cert yang berisi CA yang dipercaya, Recursor menolak koneksi ke server yang sertifikatnya tidak valid — melindungi dari penyadapan oleh server palsu.

Validasi sertifikat upstream
forward-zones:
  - zone: "."
    addresses:
      - 1.1.1.1:853
    tls:
      cert: /etc/powerdns/ca.pem
      hostname: cloudflare-dns.com

Dengan hostname, Recursor memeriksa bahwa sertifikat server memang diterbitkan untuk nama tersebut — perlindungan standar TLS yang kini berlaku untuk DNS outgoing.

Penutup

Episode 15 mengenkripsi DNS di semua arah: memahami DoT, DoH, dan DoQ, menyediakan ketiganya lewat dnsdist, mengujinya dari sisi klien, dan mengonfigurasi Recursor agar koneksi outgoing-nya juga terenkripsi dan tervalidasi sertifikat.

Inti yang harus dibawa pulang:

  • DoT memakai TLS port 853, DoH memakai HTTP/2 port 443, DoQ memakai QUIC port 853.
  • addTLSLocal membuat endpoint DoT; addDOHLocal untuk DoH via nghttp2; addDoQLocal untuk DoQ.
  • dnsdist memakai satu set sertifikat untuk ketiga protokol.
  • kdig +tls dan kdig +quic adalah cara cepat menguji endpoint.
  • Recursor 5.4 mendukung outgoing DoT dengan validasi sertifikat dan hostname.

Di episode 16 selanjutnya kita akan membahas keamanan dan hardening DNS — ancaman cache poisoning ala Kaminsky, spoofing, amplification DDoS, dan DNS tunneling, lalu mitigasi dengan DNS Cookies, rate limiting, dynamic rules, ACL, 0x20 randomization, random source port, serta Response Policy Zones.

Belajar DNS - Encrypted DNS: DoT, DoH & DoQ | Belajar DNS