Setiap kali Anda membuka sebuah situs, perangkat Anda meminta sebuah resolver untuk mengubah nama domain menjadi alamat IP. Pertanyaan itu adalah catatan teks polos tentang ke mana Anda hendak pergi, dan secara bawaan ia dikirim ke resolver mana pun yang diberikan jaringan Anda — biasanya milik penyedia internet Anda.
Kebocoran DNS adalah ketika permintaan itu pergi ke tempat yang tidak Anda maksudkan. Kasus yang lazim adalah perangkat yang sudah diatur memakai resolver pribadi atau terenkripsi, tapi karena salah satu dari beberapa sebab struktural tetap saja mengirim sebagian atau seluruh permintaan ke ISP. Tidak ada yang tampak rusak, dan itulah sebabnya kebocoran bisa bertahan bertahun-tahun tanpa disadari.
Apa yang sebenarnya dibocorkan DNS?
Domainnya, cap waktunya, dan sumbernya — dan itu sudah cukup untuk menyusun ulang satu sesi penjelajahan.
DNS klasik berjalan tanpa enkripsi lewat port 53. Siapa pun yang berada di antara Anda dan resolver bisa membaca permintaannya, dan resolver itu sendiri melihat setiap permintaan yang tercatat atas nama koneksi Anda. Ia tidak melihat halaman spesifiknya, tapi domainlah yang biasanya jadi bagian sensitifnya.
Enkripsi mengubah siapa yang memegang catatan ini, bukan apakah catatan itu ada:
| Transport | Terenkripsi? | Siapa yang melihat permintaannya |
|---|---|---|
| DNS polos (port 53) | Tidak | Jaringan Anda, ISP Anda, resolvernya |
| DNS over TLS (DoT, port 853) | Ya | Resolver yang Anda pilih |
| DNS over HTTPS (DoH, port 443) | Ya | Resolver yang Anda pilih; lebih sulit dibedakan jaringan dari lalu lintas web biasa |
| DNSSEC | Tidak — fungsinya autentikasi | Sama seperti DNS polos; ia membuktikan jawabannya asli, bukan menyembunyikannya |
DNSSEC adalah baris yang paling sering disalahpahami. Ia menandatangani jawaban supaya tidak bisa dipalsukan. Ia sama sekali tidak memberi kerahasiaan.
Bagaimana kebocoran sebenarnya terjadi?
Enam sebab struktural mencakup hampir semuanya.
| Sebab | Mekanismenya |
|---|---|
| Perutean terbelah | Sebagian lalu lintas lewat terowongan, DNS lewat antarmuka bawaan |
| IPv6 tidak dibawa | Terowongan hanya menangani IPv4, jadi permintaan IPv6 lewat jalur ISP |
| Resolusi paralel di OS | Windows bisa bertanya ke semua antarmuka sekaligus dan memakai jawaban pertama |
| DoH di tingkat peramban | Peramban menerjemahkan nama secara terpisah dari pengaturan sistem, ke dua arah |
| Router menimpa pengaturan | Router memaksakan resolvernya sendiri lewat DHCP atau menyadap port 53 |
| Captive portal | Jaringan hotel atau bandara membajak DNS untuk memaksa halaman login mereka |
Kasus peramban perlu dijabarkan, karena ia berlaku dua arah. Peramban dengan pengaturan DoH sendiri bisa melewati resolver sistem yang sudah Anda atur dengan cermat, dan sebaliknya peramban yang sudah diatur benar bisa menutupi kenyataan bahwa segala hal di luar peramban itu masih bocor. Memeriksa yang satu lalu berasumsi soal yang lain adalah kesalahan pengujian yang paling umum.
Bagaimana cara memeriksanya?
Ujilah setiap lapisan secara terpisah, karena hasilnya bisa saling bertentangan.
Sistem operasi — resolver mana yang terpasang:
| Sistem | Perintah |
|---|---|
| macOS | scutil --dns | grep nameserver |
| Windows | Get-DnsClientServerAddress |
| Linux (systemd-resolved) | resolvectl status |
| Linux (umum) | cat /etc/resolv.conf |
Resolver mana yang benar-benar menjawab — pengaturan dan perilaku nyata itu dua hal berbeda:
dig +short whoami.akamai.net mengembalikan alamat IP resolver yang melakukan
penerjemahan atas nama Anda. Bandingkan hasilnya dengan resolver yang Anda
harapkan.
Tingkat peramban: buka pengaturan DNS aman di peramban Anda dan perhatikan apakah ia aktif dan penyedia mana yang dipilih. Lalu buka halaman uji kebocoran DNS di peramban itu. Kalau halaman tersebut melaporkan resolver yang berbeda dari hasil uji baris perintah Anda, berarti peramban menerjemahkan nama sendiri.
IPv6: ulangi pemeriksaan dengan permintaan khusus IPv6. Terowongan yang hanya membawa IPv4 adalah penyebab tunggal paling umum dari kebocoran sebagian.
Bagaimana cara membaca hasilnya?
Bandingkan pemilik resolvernya dengan apa yang Anda harapkan, bukan dengan daftar alamat yang dianggap "bagus".
| Yang terlihat | Tafsirannya |
|---|---|
| Resolvernya milik ISP Anda, padahal Anda mengatur yang lain | Bocor |
| Beberapa resolver, salah satunya ISP Anda | Bocor sebagian — permintaannya terbelah |
| IPv4 menunjukkan resolver yang diharapkan, IPv6 menunjukkan ISP | Kebocoran IPv6 |
| Peramban dan sistem melaporkan resolver berbeda | Belum tentu bocor, tapi ada dua jalur terpisah yang perlu diverifikasi |
| Resolvernya berada di negara yang tak terduga | Sering kali normal — resolver anycast menjawab dari lokasi terdekat |
| Resolvernya adalah alamat privat router | Tidak konklusif; router meneruskan ke hulu, jadi periksa pengaturan routernya sendiri |
Baris terakhir itu menjebak orang di jaringan rumahan. Hasil 192.168.1.1 hanya
memberi tahu Anda bahwa routerlah yang menjawab. Ke mana router meneruskannya
adalah pertanyaan terpisah, yang jawabannya ada di pengaturan WAN atau DNS
router tersebut.
Apa batas dari memperbaiki ini?
Memperbaiki kebocoran DNS mengubah siapa yang tahu domain mana yang Anda cari. Itu tidak membuat kunjungannya jadi privat, dan melebih-lebihkan hal ini adalah cara utama topik ini disalahgambarkan.
Setelah namanya diterjemahkan, perangkat Anda membuka koneksi ke alamat IP itu. Pengamat mana pun di jalurnya melihat alamat tujuannya, dan di sebagian besar koneksi TLS nama server dikirim tanpa enkripsi dalam jabat tangan, kecuali Encrypted Client Hello dipakai di kedua ujung. Kedua sinyal itu mengenali situsnya tanpa perlu bantuan DNS.
Jadi rangkuman jujurnya sempit tapi nyata: DNS terenkripsi ke resolver pilihan Anda menghapus daftar teks polos berisi setiap domain yang Anda kunjungi dari jaringan lokal Anda dan dari log ISP Anda, lalu memindahkan daftar itu ke pengelola resolvernya. Ia memindahkan kepercayaan, bukan meniadakannya — dan itulah yang membuat siapa yang menjalankan resolver, serta apa yang mereka catat, jadi pertanyaan yang sebenarnya penting.