Ağ Güvenliği5 dk okuma
DNS sızıntısı nedir? Proxy ve VPN’de adlar nerede çözülür
DNS sızıntısı, trafiğiniz proxy veya VPN üzerinden çıkarken gideceğiniz alan adlarının yine yerel ağınızın çözümleyicisine sorulmasıdır. Bağlantı başka bir adresten çıksa da hangi adlara gittiğiniz yerel tarafta görünür kalır.
DNS sızıntısı, bir uygulamanın veri trafiğini proxy ya da VPN üzerinden gönderdiği hâlde, bağlanacağı alan adını önce yerel çözümleyiciye, çoğu zaman internet sağlayıcınızın DNS sunucusuna sormasıdır. Hedef site proxy’nin adresini görür; ama hangi adı sorguladığınız, sizin gerçek adresinizle birlikte yerel ağda ve o çözümleyicide iz bırakır. Bu rehber sızıntının nerede doğduğunu, nasıl kapatıldığını ve testlerin neyi gösterip neyi göstermediğini anlatıyor.
Bir bağlantı açılırken DNS nerede devreye girer?
Bir TCP bağlantısı IP adresine açılır; bu yüzden ornek.com gibi bir ad önce bir adrese çevrilmelidir. Bu çeviriyi kimin yaptığı yapılandırmaya bağlıdır: işletim sisteminin ayarlı çözümleyicisi (sağlayıcı, şirket ağı ya da genel bir DNS hizmeti), proxy sunucusunun kendi çözümleyicisi veya VPN’in tünel içinden sunduğu çözümleyici. Klasik DNS, 53 numaralı porttan şifresiz gider; yoldaki ağ, sorgulanan adları okuyabilir.
Sızıntının anatomisi
- Uygulama
ornek.comadresini açmak ister ve adı işletim sistemine çözdürür. - Sorgu, yerel ağınızın çözümleyicisine şifresiz olarak gider.
- Dönen IP adresiyle proxy’ye “şu IP’ye bağlan” denir.
- Hedef site yalnızca proxy’nin çıkış adresini görür.
- Ancak çözümleyici,
ornek.comsorgusunu sizin gerçek adresinizden almıştır. Sızıntı budur.
VPN’de mekanizma biraz farklıdır ama sonuç aynıdır: tünel kurulduğu hâlde işletim sistemi DNS sorgularını VPN’in sunduğu çözümleyici yerine fiziksel ağ arayüzündeki sağlayıcı çözümleyicisine gönderebilir. Birden fazla ağ arayüzünde DNS sunucusu tanımlı olduğunda sistemlerin hangi sunucuyu seçtiği, işletim sistemine ve VPN istemcisinin ayarlarına bağlıdır.
SOCKS5’te asıl fark: socks5 ile socks5h
SOCKS5 protokolü (RFC 1928 (yeni sekmede açılır)) bağlantı isteğinde hedefi IPv4 adresi, IPv6 adresi ya da alan adı olarak taşıyabilir. Hedef alan adı olarak gönderilirse adı proxy çözer ve yerel DNS hiç kullanılmaz. Hangi yolun seçileceğine istemci karar verir. curl ve Python requests bu kararı şemayla belirler: socks5:// adı yerelde çözer, socks5h:// adı proxy’ye bırakır (requests belgeleri (yeni sekmede açılır), curl kılavuzu (yeni sekmede açılır)).
| İstemci ve yazım | Hedef adı kim çözer? | Sonuç |
|---|---|---|
curl --socks5 veya -x socks5://… | Yerel çözümleyici | Sorgu yerel ağdan çıkar |
curl --socks5-hostname veya -x socks5h://… | Proxy | Yerel DNS sorgusu yok |
requests socks5://… | Yerel çözümleyici | Sorgu yerel ağdan çıkar |
requests socks5h://… | Proxy | Yerel DNS sorgusu yok |
Node.js socks-proxy-agent ile socks5:// / socks5h:// | Yerel / proxy | Aynı kural |
HTTP proxy (-x http://…), ad ile istek | Proxy | İstemci adı CONNECT satırında ya da tam URL içinde iletir |
# Ad yerelde çözülür: api.ipify.org sorgusu yerel çözümleyicinize gider
curl --socks5 PROXY_ADRESI:PORT --proxy-user KULLANICI:PAROLA \
"https://api.ipify.org?format=json"
# Ad proxy’de çözülür: yerel DNS sorgusu yapılmaz
curl --socks5-hostname PROXY_ADRESI:PORT --proxy-user KULLANICI:PAROLA \
"https://api.ipify.org?format=json"
# Aynısı, URL biçimiyle
curl -x "socks5h://KULLANICI:PAROLA@PROXY_ADRESI:PORT" "https://api.ipify.org?format=json"HTTP proxy’de durum daha basittir: standart istemciler HTTPS için CONNECT api.ipify.org:443, düz HTTP için tam URL gönderir; hedef adını proxy çözer. Sızıntı, adı kendisi çözüp proxy’ye IP adresi gönderen uygulamalarda ortaya çıkar. SOCKS5’in protokol düzeyindeki ayrıntıları için SOCKS5 proxy nedir? rehberine bakabilirsiniz.
Sızıntıyı kapatmak, adı yerel ağdan gizlemez
Şifresiz bir HTTP proxy’ye giden CONNECT ornek.com:443 satırı ve SOCKS5’e alan adıyla gönderilen bağlantı isteği, sizinle proxy arasındaki hatta açık metindir. Yerel ağ, DNS sorgusu görmese de bu satırdan hedef adını okuyabilir. Bu hattı korumak için proxy bağlantısının kendisinin TLS ile sarılması (HTTPS proxy) ya da trafiğin şifreli bir tünelden geçmesi gerekir. Proxy tek başına şifreleme eklemez.
Tarayıcılar: proxy ayarları, DoH ve uygulama dışı trafik
- SOCKS ve uzak DNS: Firefox’un bağlantı ayarlarında SOCKS v5 kullanırken DNS sorgularını proxy üzerinden gönderme seçeneği bulunur. Tarayıcıda SOCKS5 kullanıyorsanız bu seçeneğin açık olduğunu doğrulayın.
- DNS over HTTPS (DoH): RFC 8484 (yeni sekmede açılır) ile tanımlanan DoH, sorguları seçtiğiniz çözümleyiciye HTTPS içinde gönderir. Yerel ağ sorgulanan adları okuyamaz; ama seçtiğiniz çözümleyici bütün sorguları görür. DoH bir proxy değildir; hedefin gördüğü adresi değiştirmez.
- Sistem proxy ayarı her uygulamayı kapsamaz: İşletim sistemindeki proxy ayarını yalnızca bu ayarı okuyan uygulamalar kullanır. Diğer uygulamalar hem DNS sorgularını hem trafiğini doğrudan gönderir.
- SNI: Doğrudan (proxy’siz) bir HTTPS bağlantısında TLS el sıkışmasının SNI alanı, Encrypted Client Hello kullanılmadıkça hedef adı ağ üzerinde açık taşır. DNS’i şifrelemek bu alanı kendiliğinden gizlemez.
WebRTC: DNS değil, ayrı bir IP sızıntısı
WebRTC, tarayıcıda gerçek zamanlı ses, görüntü ve veri bağlantıları kurmak için ICE yöntemiyle aday adresler toplar; bunun için çoğunlukla UDP üzerinden STUN sunucularına başvurur. Tarayıcının proxy ayarı bu UDP trafiğini her zaman kapsamayabilir; bu durumda bir sayfa, HTTP trafiğiniz proxy’den çıkarken gerçek genel IP adresinizi öğrenebilir. Güncel tarayıcılar yerel ağ adreslerini çoğu durumda mDNS adlarıyla gizler; genel adresin görünüp görünmediği ise tarayıcıya ve ayarlarına bağlıdır. WebRTC kullanmıyorsanız tarayıcınızın WebRTC ile ilgili ayarlarını ve politika seçeneklerini gözden geçirin.
Nasıl test edilir?
- Çıkış adresi: Proxy açıkken IP Sorgulama sayfasını açın. Görünen adres proxy’nin çıkış adresi olmalıdır. Bu adım DNS’i değil, yalnızca trafiğin hangi adresten çıktığını gösterir.
- Yerel DNS trafiği: İsteği yaparken kendi makinenizde 53 numaralı portu izleyin.
socks5ile hedef adın sorgusunu görürsünüz;socks5hile görmemeniz gerekir. DoH (443) ve DNS over TLS (853) kullanan sorgular 53 numaralı portta görünmez. - Çözümleyici kimliği: Çevrim içi DNS sızıntı testleri, tarayıcınıza kendilerine ait benzersiz alt alan adlarını çözdürür ve yetkili sunucularına hangi özyinelemeli çözümleyicinin geldiğini raporlar. Sağlayıcınızın çözümleyicisini görüyorsanız sorgular yerelden çıkıyordur.
- Kayıtları karşılaştırma: DNS Sorgulama aracı bir adın A, AAAA ve diğer kayıtlarını listeler. Bir sızıntı testi değildir; ama bir adın beklenen adreslere çözülüp çözülmediğini görmenizi sağlar.
# Birinci terminal: 53 numaralı porttaki sorguları izleyin
sudo tcpdump -n -i any port 53
# İkinci terminal: önce socks5, sonra socks5h ile aynı isteği yapın
curl -s -x "socks5://KULLANICI:PAROLA@PROXY_ADRESI:PORT" "https://api.ipify.org?format=json"
curl -s -x "socks5h://KULLANICI:PAROLA@PROXY_ADRESI:PORT" "https://api.ipify.org?format=json"Temiz sonuç ne anlama gelir, ne anlama gelmez?
Temiz bir test, test anında, test ettiğiniz uygulama için ad çözümlemenin beklediğiniz yerden yapıldığını gösterir. Bundan fazlasını göstermez:
- Diğer uygulamaların da aynı yolu kullandığını göstermez.
- WebRTC, çerezler, oturum açılmış hesaplar ve tarayıcı parmak izinin bilgi vermediğini göstermez.
- Proxy sağlayıcısının veya kullanılan çözümleyicinin sorguları görmediğini göstermez; adı kim çözüyorsa sorguyu o görür.
- “Anonim” olduğunuzu göstermez. Proxy ve VPN, kimin neyi gördüğünü değiştirir; görünürlüğü ortadan kaldırmaz.
- Kalıcı değildir. Tarayıcı güncellemesi, ağ değişikliği veya VPN’in yeniden bağlanması sonucu değiştirebilir; testi ara ara tekrarlayın.
Özet
SOCKS5 kullanıyorsanız socks5h:// veya --socks5-hostname tercih edin; HTTP proxy’de hedef adını proxy’ye ileten standart istemcileri kullanın; tarayıcıda SOCKS kullanıyorsanız uzak DNS seçeneğini açın ve proxy ayarını okumayan uygulamaları ayrıca değerlendirin. HTTP ile SOCKS5 arasında seçim yapıyorsanız HTTP & SOCKS5 Proxy sayfası, iki protokolün hangi paketlerde seçilebildiğini anlatır. Proxy ile VPN’in DNS’i nasıl ele aldığını yan yana görmek için VPN ve proxy farkı rehberi iyi bir sonraki adım.
Sık sorulanlar