DNS sızıntısı, bir proxy üzerinden bağlanmanıza rağmen ziyaret ettiğiniz alan adlarının sorgusunun proxy üzerinden değil, yerel ağınızın ya da internet servis sağlayıcınızın DNS çözümleyicisine gitmesidir. Trafik proxy'den geçer ama "hangi siteye gidiyorsunuz?" bilgisi yerelde açıkça görünür. Bu rehber sızıntının nasıl oluştuğunu, proxy ve DNS sızıntısı testini kendi ortamınızda nasıl yapacağınızı ve nasıl kapatacağınızı anlatıyor.
Sızıntı nasıl oluşur?
Bir web adresine ulaşmak için iki iş yapılır: alan adı IP adresine çevrilir (DNS), sonra bağlantı kurulur. Bu iki işin kim tarafından yapıldığı, kullandığınız proxy türüne ve istemci ayarına göre değişir.
| Kurulum | Ad çözümlemesini kim yapar? | Sızıntı riski |
|---|---|---|
| HTTP proxy, düz HTTP isteği | Proxy (istek alan adını taşır) | Düşük, istemci kusursuz davranıyorsa |
| HTTP proxy, HTTPS için CONNECT | Proxy (CONNECT satırında ad vardır) | Düşük |
SOCKS5, socks5:// şeması | İstemci, yerelde | Yüksek: ad yerel DNS'e gider |
SOCKS5, socks5h:// şeması | Proxy | Düşük |
| Proxy dışında kalan uygulama/hizmet | Yerel sistem | Proxy'yi hiç kullanmadığı için tam sızıntı |
SOCKS5 (RFC 1928): yöntem pazarlığı, isteğe bağlı kullanıcı adı/parola (RFC 1929), bağlantı isteği ve yanıt.
- 1. İstemci → Proxy: İstemci desteklediği yöntemleri sunar
- 2. Proxy → İstemci: Proxy bir yöntem seçer
- 3. İstemci → Proxy: Kullanıcı adı ve parola gönderilir (isteğe bağlı)
- 4. Proxy → İstemci: Proxy kimlik bilgisini onaylar (isteğe bağlı)
- 5. İstemci → Proxy: İstemci bağlantı ister
- 6. Proxy → Hedef: Proxy hedefe TCP bağlantısı açar
- 7. Proxy → İstemci: Proxy sonucu bildirir
- 8. İstemci → Hedef: Veri proxy üzerinden aktarılır
Düz bağlantı
İstemci desteklediği yöntemleri sunar
- VER
- 0x05
- NMETHODS
- sunulan yöntem sayısı
- METHODS
- 0x00 kimlik yok · 0x02 kullanıcı/parola
SOCKS5 kendi başına şifrelemez. socks5:// ile ad istemcide, socks5h:// ile proxy’de çözülür. Kontrol aracımız yalnızca TCP CONNECT sınar.
SOCKS5 protokolü adresi üç biçimde taşıyabilir: IPv4, IPv6 ya da alan adı. socks5h şeması istemciye "alan adını çözmeden olduğu gibi gönder" der; socks5 ise önce yerelde çözer ve proxy'ye bir IP verir. Aynı proxy, aynı hedef; tek fark şemadır. Ayrıntılı karşılaştırma için HTTP ve SOCKS5 farkı rehberine bakın.
Sızıntının diğer kaynakları
- Proxy kullanmayan uygulamalar: Sistem ayarını okumayan bir uygulama ya da arka plan hizmeti doğrudan çıkar ve yerel DNS'i kullanır.
- Tarayıcıda şifreli DNS (DoH): Etkin olduğunda sorgular 53 portunda görünmez ama bir DoH hizmetine gidebilir. Tarayıcı hedef adı proxy'ye bırakıyorsa sorun yoktur; emin olmak için testi tekrarlayın.
- IPv6: Proxy yalnızca IPv4 taşıyorsa ve makinenizde IPv6 etkinse bazı bağlantılar proxy'yi hiç kullanmadan IPv6 üzerinden çıkabilir. IPv4 / IPv6 bilgisi aracı bağlantınızın durumunu gösterir.
- WebRTC: DNS değil, gerçek IP'nizi gösterebilen ayrı bir tarayıcı özelliğidir. DNS sızıntısı testini WebRTC testiyle karıştırmayın.
- Ön çözümleme (prefetch): Bazı tarayıcılar sayfadaki bağlantıların adlarını önceden çözer; ayarı proxy ile uyumlu olmayabilir.
Test 1: curl ile şema farkını görmek
En basit yöntem, yerelde asla çözülemeyecek bir alan adı kullanmaktır. .invalid uzantısı bu amaç için ayrılmıştır ve hiçbir DNS çözümleyicisinde sonuç döndürmez. İki şemayla aynı komutu çalıştırdığınızda hatanın kaynağı hangi tarafın ad çözdüğünü gösterir.
curl -sS -v --max-time 15 -x socks5://KULLANICI:[email protected]:1080 http://yerel-cozulemez.invalid/
curl -sS -v --max-time 15 -x socks5h://KULLANICI:[email protected]:1080 http://yerel-cozulemez.invalid/socks5://ile hata, proxy'ye hiç ulaşılmadan "Could not resolve host" olur: ad yerelde çözülmeye çalışılmıştır.socks5h://ile bağlantı proxy'ye gider ve hata bir SOCKS5 bağlantı hatası olarak döner: çözümlemeyi proxy denemiş, bulamamıştır.
Test 2: 53 portunu izleyerek gerçek sızıntıyı görmek
Kesin sonuç, ağ arayüzünden çıkan DNS paketlerine bakarak alınır. Yöntem: dinlemeyi başlatın, proxy'li oturumda hedef siteyi açın, dinlemede o alan adının sorgusu görünüyor mu bakın.
- 1
Yerel DNS önbelleğini temizleyin
Aksi halde önceden çözülmüş adlar yeniden sorulmaz ve sızıntıyı kaçırırsınız. Windows'ta
ipconfig /flushdns; macOS'tasudo dscacheutil -flushcache; systemd-resolved kullanan Linux'taresolvectl flush-caches. - 2
DNS paketlerini izleyin
Linux/macOS terminalinde aşağıdaki tcpdump komutunu çalıştırın. Windows'ta Wireshark'ı açıp görüntü filtresine
dnsyazın. - 3
Proxy'li tarayıcıdan test alan adını ziyaret edin
Daha önce ziyaret etmediğiniz bir alan adı seçin ki önbellekte olmasın.
- 4
Sonucu yorumlayın
Alan adı için bir sorgu çıkışı görüyorsanız ad yerelde çözülüyor demektir (sızıntı). Hiç sorgu görünmüyorsa çözümleme proxy'de yapılıyordur. DoH etkinse sorgular 53 portunda görünmez; tarayıcının güvenli DNS ayarını geçici olarak kapatarak testi tekrarlayın.
sudo tcpdump -i any -n udp port 53 or tcp port 53ipconfig /flushdns
ipconfig /displaydns | findstr /i "ziyaret-ettiginiz-alan-adi"Sızıntıyı kapatma
- 1SOCKS5 kullanıyorsanız şemayı `socks5h://` yapın. Python
requests'tesocks5h://KULLANICI:[email protected]:1080, cURL'de-x socks5h://...yazın. - 2Firefox'ta SOCKS v5 seçiliyken "DNS sorgularını proxy üzerinden yap" kutusunu işaretleyin. Adımlar için proxy nasıl ayarlanır rehberine bakın.
- 3HTTP proxy kullanıyorsanız istemcinin hedefi yerelde çözüp IP'ye bağlanmadığından emin olun; kendi yazdığınız kodda hedef olarak IP değil alan adı verin.
- 4Proxy dışında kalan uygulamalar için sistem geneli proxy ayarlayın ya da o uygulamanın kendi proxy seçeneğini kullanın.
- 5IPv6 çıkışını denetleyin; proxy IPv6 taşımıyorsa makinenizde IPv6'yı geçici olarak kapatıp testi tekrarlayın.
import requests
proxy = "socks5h://KULLANICI:[email protected]:1080" # pip install "requests[socks]"
r = requests.get("https://example.com/", proxies={"http": proxy, "https": proxy}, timeout=15)
print(r.status_code)Sonucu DNS araçlarıyla çapraz doğrulamak
Bazı alan adları, çözümleyiciye göre farklı IP döner (coğrafi yönlendirme). Proxy üzerinden ulaşılan IP ile yerel çözümleyicinizin döndürdüğü IP farklıysa ve bağlantı yerel IP'ye değil proxy'nin çözdüğü IP'ye kurulduysa çözümleme proxy'de yapılıyordur. DNS Sorgulama aracı bir alan adı için genel çözümleyicilerden gelen kayıtları gösterir; bunu kendi yerel sonuçlarınızla karşılaştırabilirsiniz. Bu yöntem bir ipucu verir, paket yakalama testi kadar kesin değildir.
Proxy'nin kendisinin çalıştığından emin değilseniz önce proxy kontrol aracını kullanın; bağlantı sorunlarıyla DNS sızıntısını karıştırmamak için proxy bağlantı hataları rehberi de yardımcı olur.
Önce proxy bağlantınızın çalıştığını doğrulayın, sonra DNS testini yapın.
Proxy Kontrol Et