DNS Leak Saat Pakai Proxy: Penyebab, Cara Cek & Mengatasinya
Kamu sudah memasang proxy dan IP publik sudah berubah, tetapi resolver DNS yang terlihat masih berasal dari jaringan lokal atau ISP? Kondisi seperti ini sering disebut DNS leak. Proxy memang bisa mengubah jalur koneksi menuju website, tetapi proses menerjemahkan nama domain seperti example.com menjadi alamat IP belum tentu ikut melewati proxy.
Masalahnya bukan sekadar “proxy bekerja atau tidak”. Sebuah koneksi bisa benar-benar keluar menggunakan IP proxy sementara DNS masih dilakukan oleh perangkat lokal. Karena itu pengecekan proxy sebaiknya tidak berhenti pada melihat perubahan IP saja.
Artikel ini membahas bagaimana DNS bekerja ketika proxy digunakan, apa beda local DNS dan remote DNS, kenapa SOCKS5 belum tentu otomatis memindahkan DNS ke proxy, bagaimana socks5:// berbeda dengan socks5h://, serta cara troubleshooting kalau resolusi domain masih terjadi melalui jaringan lokal.
Kalau konsep IP dan port proxy masih belum familiar, kamu bisa mulai dari artikel apa itu IP proxy.
Apa Itu DNS Leak Saat Menggunakan Proxy?
DNS leak terjadi ketika traffic utama aplikasi sudah diarahkan melalui proxy, tetapi request DNS masih menggunakan resolver di luar jalur proxy yang diharapkan.
Misalnya kamu membuka:
Sebelum bisa membuat koneksi, aplikasi perlu mengetahui alamat IP milik example.com. Kalau aplikasi meminta DNS ke resolver lokal terlebih dahulu, alurnya kira-kira seperti ini:
example.com
Resolve IP
Koneksi
Dalam kondisi tersebut, website mungkin tetap melihat IP proxy, tetapi resolver lokal mengetahui domain yang sedang dicari.
Kalau resolusi dilakukan dari sisi proxy, alurnya berubah:
example.com
Resolve Domain
Perbedaan inilah yang biasa disebut local DNS resolution dan remote DNS resolution.
DNS dan Proxy Adalah Dua Proses yang Berbeda
Kesalahpahaman paling umum adalah menganggap perubahan IP otomatis berarti seluruh proses jaringan sudah melewati proxy.
Padahal ada dua proses yang berbeda:
| Proses | Fungsi |
|---|---|
| DNS Resolution | Menerjemahkan nama domain menjadi alamat IP. |
| Proxy Connection | Meneruskan koneksi aplikasi menuju server tujuan. |
Aplikasi dapat melakukan DNS terlebih dahulu, kemudian memberikan alamat IP hasil resolusi kepada proxy. Dalam kondisi lain, aplikasi dapat mengirim hostname langsung kepada proxy dan meminta proxy menangani tujuan tersebut.
Karena implementasinya berbeda-beda, jangan hanya melihat jenis proxy. Periksa juga bagaimana software yang digunakan menangani DNS.
Apa Bedanya Local DNS dan Remote DNS?
Local DNS Resolution
Pada local resolution, perangkat pengguna mencari alamat IP domain terlebih dahulu.
Proxy kemudian menerima alamat IP tujuan yang sudah diketahui oleh aplikasi.
Remote DNS Resolution
Pada remote resolution, aplikasi menyerahkan hostname ke proxy.
Dengan pola ini, aplikasi tidak harus melakukan lookup domain tujuan menggunakan resolver jaringan lokal.
Apakah SOCKS5 Otomatis Mencegah DNS Leak?
Tidak selalu.
SOCKS5 memang mendukung destination dalam bentuk IPv4, IPv6, maupun domain name. Spesifikasi SOCKS5 pada RFC 1928 menyediakan address type khusus untuk domain name. Artinya sebuah client bisa mengirim hostname langsung ke SOCKS5 proxy.
Tetapi kemampuan protokol tidak berarti setiap aplikasi otomatis menggunakan remote DNS.
Aplikasi masih bisa memilih melakukan resolusi lokal terlebih dahulu lalu mengirim alamat IP ke SOCKS5 proxy.
Kalau ingin memahami protokolnya lebih dalam, baca juga artikel SOCKS5 Proxy dan SOCKS4 vs SOCKS5.
Perbedaan socks5:// dan socks5h:// pada cURL
cURL memberikan contoh yang sangat jelas tentang perbedaan local DNS dan remote DNS.
Kalau menggunakan:
cURL melakukan resolusi hostname secara lokal.
Sementara:
hostname dikirim ke SOCKS5 proxy sehingga resolusi dilakukan dari sisi proxy.
| Format | Yang Resolve Hostname |
|---|---|
socks5:// |
Client / cURL |
socks5h:// |
SOCKS5 Proxy |
Contoh Local DNS dengan cURL
Misalnya kamu mempunyai SOCKS5 proxy pada:
IP:
203.0.113.20Port:
1080
Command berikut menggunakan local name resolution:
Dalam mode ini, cURL mencari IP milik example.com terlebih dahulu sebelum mengirim destination ke proxy.
Contoh Remote DNS dengan cURL
Untuk meminta SOCKS5 proxy menerima hostname langsung, gunakan:
Atau menggunakan opsi:
Dalam kondisi ini, cURL tidak menyelesaikan hostname tujuan secara lokal. Hostname dikirim kepada proxy.
Kenapa Huruf “h” pada socks5h Penting?
Huruf h pada format cURL tersebut bisa dianggap sebagai pengingat bahwa hostname diserahkan ke proxy.
Perbedaan satu huruf terlihat kecil, tetapi efeknya pada DNS cukup besar:
Keduanya menggunakan SOCKS5, tetapi lokasi DNS resolution berbeda.
Butuh Proxy untuk Testing DNS dan Koneksi?
GudangProxy menyediakan daftar proxy gratis yang dapat difilter berdasarkan negara, protokol, tingkat anonimitas, dan status koneksi. Pilih endpoint yang sesuai lalu uji perilaku IP serta DNS dari aplikasi yang kamu gunakan.
Lihat Daftar Proxy Gratis →Bagaimana dengan HTTP Proxy?
Perilaku HTTP proxy berbeda dari SOCKS.
Pada penggunaan HTTP proxy standar, client biasanya mengirim request dengan hostname kepada proxy. Untuk HTTPS, client umumnya meminta proxy membuat tunnel ke hostname dan port tujuan.
cURL sendiri mendokumentasikan bahwa HTTP dan HTTPS proxy menggunakan name resolution dari sisi proxy untuk destination.
Tetapi ini tidak berarti sebuah browser atau aplikasi sama sekali tidak menghasilkan DNS query lokal. Software modern dapat melakukan DNS untuk fungsi tambahan seperti prefetch, secure DNS, service discovery, atau koneksi lain di luar request utama.
Karena itu pengecekan DNS harus dilakukan berdasarkan aplikasi yang benar-benar digunakan, bukan hanya berdasarkan teori protokol.
DNS Leak Tidak Sama dengan IP Leak
Keduanya sering dicampur padahal masalahnya berbeda.
| Jenis | Yang Terlihat |
|---|---|
| IP Leak | Server tujuan masih melihat IP koneksi asli. |
| DNS Leak | Lookup domain terjadi melalui resolver yang tidak diharapkan. |
Kamu bisa mengalami kondisi:
- IP sudah proxy, DNS masih lokal.
- IP proxy dan DNS remote.
- IP asli karena proxy tidak aktif.
- DNS menggunakan DoH terpisah dari proxy.
Jadi pengecekan IP saja belum menggambarkan seluruh jalur jaringan.
Apa Hubungan DNS over HTTPS dengan Proxy?
DNS over HTTPS atau DoH adalah metode mengirim query DNS melalui koneksi HTTPS.
Tujuannya terutama melindungi isi query DNS dari pengamatan langsung pada jaringan lokal.
Namun ada satu hal yang perlu dibedakan: DNS terenkripsi bukan berarti DNS otomatis mengikuti proxy.
Browser dapat membuka koneksi HTTPS sendiri menuju DoH resolver. Apakah koneksi tersebut ikut proxy atau langsung ke internet bergantung pada browser, konfigurasi proxy, kebijakan jaringan, serta mode secure DNS yang digunakan.
DoH Bisa Membuat Pengujian DNS Lebih Membingungkan
Kalau DoH aktif, kamu mungkin tidak melihat query DNS biasa pada UDP atau TCP port 53.
Ini tidak berarti domain tidak sedang di-resolve. Query mungkin berjalan sebagai traffic HTTPS menuju DoH resolver.
| Jenis DNS | Traffic Umum |
|---|---|
| DNS tradisional | UDP/TCP port 53 |
| DNS over TLS | Umumnya TCP port 853 |
| DNS over HTTPS | HTTPS, biasanya port 443 |
RFC 8484 mendefinisikan DNS over HTTPS dengan memetakan query dan response DNS ke pertukaran HTTP.
Bagaimana Firefox Menangani DNS over HTTPS?
Firefox memiliki DNS over HTTPS sendiri. Pada mode perlindungan default, Firefox dapat menggunakan secure DNS ketika tersedia.
Namun Mozilla juga menjelaskan bahwa pada kondisi tertentu Firefox dapat menggunakan resolver default sistem sebagai fallback, misalnya jika secure DNS tidak tersedia atau ada kebijakan jaringan tertentu.
Karena itu hasil pengujian DNS di Firefox tidak selalu identik pada semua jaringan.
Kalau kamu menggunakan proxy langsung di browser Firefox, baca juga artikel cara setting proxy di Firefox.
Bagaimana Chrome Menangani Secure DNS?
Chrome juga memiliki fitur Secure DNS.
Dalam mode otomatis, Chrome mencoba melakukan lookup DNS secara aman. Dokumentasi Chrome menjelaskan bahwa kalau secure lookup mengalami masalah pada mode tersebut, Chrome dapat melakukan lookup menggunakan mode yang tidak terenkripsi.
Artinya hasil DNS yang terlihat dapat berubah bergantung pada konfigurasi browser dan jaringan.
Untuk konfigurasi proxy Chrome sendiri, tersedia panduan cara menggunakan proxy di Chrome.
Cara Cek DNS Lokal dari Sistem
Sebelum troubleshooting proxy, ada baiknya mengetahui resolver apa yang digunakan perangkat.
Linux dengan systemd-resolved
Output dapat menampilkan DNS server pada interface jaringan tertentu.
Linux Sederhana
Perlu diingat, file ini terkadang hanya menunjuk ke local stub resolver sehingga bukan selalu resolver upstream sebenarnya.
macOS
Command tersebut membantu melihat resolver yang terdaftar di macOS.
Windows PowerShell
Ini menunjukkan DNS server yang dikonfigurasi pada interface Windows.
Cara Melihat Apakah DNS Port 53 Masih Keluar
Kalau kamu mengelola perangkat sendiri dan ingin troubleshooting lebih dalam, network capture dapat membantu.
Di Linux, salah satu contoh sederhana menggunakan tcpdump:
Kemudian jalankan aplikasi yang sedang diuji dan buka domain baru.
Kalau terlihat query DNS menuju resolver jaringan lokal, berarti setidaknya ada aplikasi atau proses yang masih melakukan DNS biasa dari perangkat tersebut.
Cara Membandingkan socks5 dan socks5h dengan tcpdump
Kamu bisa membuat pengujian sederhana.
Terminal pertama:
Terminal kedua, coba:
Kemudian bandingkan dengan:
Pada konfigurasi normal cURL, mode socks5:// melakukan local name resolution, sedangkan socks5h:// menyerahkan hostname kepada proxy.
Kenapa Pengujian DNS Bisa Terpengaruh Cache?
DNS mempunyai mekanisme cache. Kalau hostname baru saja di-resolve, aplikasi atau sistem operasi mungkin menggunakan hasil yang tersimpan tanpa melakukan query baru.
Akibatnya kamu bisa menjalankan packet capture tetapi tidak melihat DNS request sama sekali.
Beberapa sumber cache yang mungkin terlibat antara lain:
- cache aplikasi,
- cache browser,
- cache resolver sistem,
- local DNS service,
- cache pada jaringan.
Karena itu gunakan domain yang belum baru saja diakses atau pahami mekanisme cache sebelum menarik kesimpulan.
Apakah DNS Leak Selalu Berarti Proxy Rusak?
Tidak.
Proxy dapat bekerja tepat sesuai desain sementara aplikasi memilih melakukan DNS secara lokal.
Contoh paling jelas adalah cURL dengan:
Dalam kondisi itu proxy SOCKS5 tetap bekerja, tetapi hostname memang sengaja di-resolve oleh client.
Jadi troubleshooting yang benar bukan hanya mengganti server proxy, melainkan memeriksa:
- jenis proxy,
- cara aplikasi melakukan DNS,
- pengaturan secure DNS,
- pengaturan remote DNS,
- resolver sistem,
- dan jalur koneksi aplikasi.
Kenapa Website Tetap Bisa Dibuka Walau DNS Proxy Gagal?
Ada beberapa kemungkinan.
Hostname mungkin masih berada di cache lokal, browser dapat memakai DoH, aplikasi bisa fallback ke resolver lain, atau software mempunyai mekanisme DNS sendiri.
Karena itu satu keberhasilan membuka website belum cukup untuk memastikan jalur DNS yang digunakan.
DNS Leak pada SOCKS4 vs SOCKS5
SOCKS4 standar berfokus pada alamat IPv4 sehingga client biasanya perlu mengetahui IP destination terlebih dahulu.
SOCKS4a menambahkan mekanisme yang memungkinkan hostname dikirim kepada proxy.
SOCKS5 mempunyai format address yang mendukung domain name secara langsung.
| Mode | Remote Hostname Resolution |
|---|---|
| SOCKS4 | Umumnya tidak |
| SOCKS4a | Bisa |
| SOCKS5 | Bisa jika aplikasi mengirim hostname |
Perbandingan lebih lengkap tersedia di artikel SOCKS4 vs SOCKS5.
Apakah DNS Leak Membocorkan Password?
DNS query bukan tempat website mengirim password akun.
DNS terutama digunakan untuk menemukan alamat jaringan berdasarkan nama domain.
Namun resolver dapat mengetahui domain yang diminta. Dari perspektif privasi, metadata domain tersebut tetap dapat menjadi informasi yang sensitif pada konteks tertentu.
Isi koneksi HTTPS seperti password, path tertentu, atau body request dilindungi oleh TLS selama koneksi HTTPS berjalan dengan valid dan tidak sedang diintersep.
Apakah DNS Leak Mengungkap IP Asli ke Website?
Tidak secara langsung.
DNS leak dan IP leak merupakan dua masalah berbeda. Kalau koneksi website benar-benar dibuat melalui proxy, server tujuan umumnya melihat alamat IP proxy.
Namun resolver yang menerima query DNS dapat melihat sumber query sesuai jalur DNS yang digunakan.
Untuk memahami perbedaan IP asli dan IP proxy, baca artikel IP Proxy.
Bagaimana dengan Proxy Transparent dan Anonymous?
Tingkat anonimitas proxy membahas informasi yang diteruskan oleh proxy pada traffic tertentu, sedangkan DNS resolution merupakan masalah terpisah.
Proxy elite sekalipun tidak otomatis menjamin aplikasi melakukan remote DNS jika client masih menyelesaikan hostname secara lokal.
Kalau ingin memahami klasifikasi anonimitas, baca artikel Proxy Anonymous.
Kenapa DNS Resolver Terlihat Berbeda dari Lokasi Proxy?
Ini belum tentu error.
Proxy dan DNS resolver merupakan layanan yang berbeda. Server proxy dapat berada di satu negara sementara resolver yang digunakannya berada di lokasi lain atau menggunakan jaringan anycast global.
Lokasi geografis resolver tidak selalu identik dengan lokasi exit IP proxy.
DNS Lokal vs Remote: Mana yang Lebih Cocok?
Tidak ada jawaban yang selalu benar untuk semua kebutuhan.
| Kebutuhan | Pendekatan |
|---|---|
| Testing sederhana | Local DNS bisa cukup. |
| Ingin destination di-resolve dari sisi proxy | Remote DNS. |
| Jaringan perusahaan dengan internal DNS | Sering membutuhkan resolver lokal perusahaan. |
| Testing geolocation DNS | Remote DNS bisa lebih relevan. |
| Service internal | Local/private resolver mungkin wajib. |
Jangan memaksa remote DNS pada semua konfigurasi jika aplikasi memang perlu mengakses hostname internal yang hanya dikenal oleh resolver lokal.
Checklist Troubleshooting DNS Leak Proxy
Kalau IP proxy sudah berubah tetapi DNS masih tidak sesuai harapan, lakukan pemeriksaan secara bertahap.
1. Pastikan Proxy Benar-Benar Aktif
Cek IP publik sebelum dan sesudah proxy digunakan.
2. Identifikasi Jenis Proxy
Pastikan apakah endpoint merupakan HTTP, HTTPS, SOCKS4, SOCKS4a, atau SOCKS5.
3. Periksa Cara Aplikasi Resolve Domain
Cari opsi seperti:
- Remote DNS
- Proxy DNS
- Resolve hostname through proxy
- SOCKS5 hostname
4. Kalau Menggunakan cURL, Cek Skema
Kalau membutuhkan remote resolution pada cURL, gunakan socks5h:// atau --socks5-hostname.
5. Cek Secure DNS Browser
Browser dapat mempunyai DNS over HTTPS sendiri yang tidak selalu mengikuti pengaturan resolver sistem.
6. Cek Resolver Sistem
Pastikan kamu mengetahui DNS server yang digunakan Windows, macOS, atau Linux.
7. Periksa Cache DNS
Jangan menganggap tidak ada query baru berarti tidak ada DNS resolution.
8. Gunakan Packet Capture Jika Perlu
Untuk troubleshooting jaringan sendiri, packet capture dapat membantu melihat apakah query DNS tradisional masih keluar dari perangkat.
Kesalahan yang Sering Terjadi Saat Mengatasi DNS Leak
- Menganggap perubahan IP otomatis memindahkan DNS.
- Menganggap semua SOCKS5 selalu remote DNS.
- Menggunakan
socks5://di cURL padahal ingin remote DNS. - Tidak menyadari browser sedang memakai DoH.
- Mengetes domain yang masih berada di cache.
- Mengira resolver berbeda lokasi berarti proxy tidak bekerja.
- Mengubah DNS sistem padahal masalahnya ada pada aplikasi.
- Mengaktifkan terlalu banyak fitur DNS sekaligus sehingga troubleshooting menjadi sulit.
Praktik yang Lebih Aman Saat Mengatur DNS dan Proxy
Jangan hanya mengejar hasil “semua lewat proxy” tanpa memahami kebutuhan jaringan.
- Gunakan remote DNS kalau memang destination perlu di-resolve dari sisi proxy.
- Pertahankan resolver lokal jika dibutuhkan untuk domain internal perusahaan.
- Gunakan proxy yang dapat dipercaya untuk traffic sensitif.
- Gunakan HTTPS supaya isi aplikasi tetap terlindungi oleh TLS.
- Periksa pengaturan DoH browser sebelum menyimpulkan ada kebocoran.
- Jangan menonaktifkan fitur keamanan TLS hanya untuk memperbaiki masalah DNS.
- Tes IP dan DNS secara terpisah.
FAQ DNS Leak Saat Menggunakan Proxy
Apa itu DNS leak pada proxy?
DNS leak adalah kondisi ketika koneksi aplikasi sudah menggunakan proxy tetapi lookup domain masih dilakukan melalui resolver lain yang tidak diharapkan, misalnya resolver jaringan lokal.
Apakah SOCKS5 otomatis membuat DNS lewat proxy?
Tidak selalu. SOCKS5 mendukung hostname sebagai destination, tetapi aplikasi tetap menentukan apakah hostname dikirim ke proxy atau di-resolve secara lokal terlebih dahulu.
Apa beda socks5 dan socks5h?
Pada cURL, socks5:// menggunakan local name resolution, sedangkan socks5h:// mengirim hostname ke proxy agar resolusi dilakukan dari sisi SOCKS5 proxy.
Apakah DNS leak berarti IP proxy tidak bekerja?
Tidak. IP proxy bisa bekerja dengan benar sementara DNS tetap dilakukan secara lokal. IP routing dan DNS resolution adalah dua proses yang berbeda.
Apakah DNS over HTTPS mencegah DNS leak?
DoH mengenkripsi query DNS menuju resolver DoH, tetapi tidak otomatis menjamin query tersebut melewati proxy yang sama. Jalurnya tetap bergantung pada aplikasi dan konfigurasi jaringan.
Kenapa tidak ada traffic port 53 tetapi DNS masih bekerja?
Browser atau aplikasi bisa menggunakan DNS over HTTPS yang berjalan melalui HTTPS, biasanya port 443. Cache DNS juga bisa membuat lookup baru tidak diperlukan.
Bagaimana cara menggunakan remote DNS dengan cURL?
Untuk SOCKS5, gunakan proxy dengan format socks5h://IP:PORT atau gunakan opsi --socks5-hostname.
Apakah HTTP proxy melakukan DNS dari sisi proxy?
Pada penggunaan HTTP proxy standar, destination hostname umumnya diproses oleh proxy. Namun aplikasi tetap dapat menghasilkan DNS query sendiri untuk kebutuhan lain, jadi perilaku aktual sebaiknya diuji dari aplikasi yang digunakan.
Apakah DNS leak membocorkan password?
Tidak secara langsung. DNS membawa informasi nama domain, bukan password website. Password yang dikirim melalui koneksi HTTPS tetap berada dalam traffic TLS selama koneksi tersebut valid dan tidak diintersep.
Apakah resolver DNS harus berada di negara yang sama dengan proxy?
Tidak. DNS resolver dan proxy merupakan layanan berbeda, dan resolver dapat menggunakan jaringan atau lokasi yang tidak sama dengan exit IP proxy.
