Sipariş: saglamproxy.com

Giriş Yap ↗

Güvenlik ve Ağ

DNS sızıntısı ve socks5h: alan adı çözümü nerede yapılıyor

Proxy kullanırken trafik proxy üzerinden gitse bile alan adı sorguları yerel DNS çözümleyicisinden çıkabilir. Bu yazı sızıntının nedenini, socks5 ile socks5h farkını ve davranışı nasıl doğrulayacağınızı anlatır.

3 dk okuma

Bir uygulamanın proxy kullanması, ağdaki her paketin proxy üzerinden gittiği anlamına gelmez. Bağlantıdan önce yapılan alan adı sorgusu (DNS) istemci tarafında kalmışsa, yerel ağınız ve DNS sağlayıcınız hangi siteye gitmek istediğinizi görmeye devam eder. Buna yaygın olarak DNS sızıntısı denir. Sorun çoğunlukla bir şema adındaki tek harfle, socks5 yerine socks5h yazmakla çözülür.

Sızıntı nasıl oluşur

Bir URL'ye bağlanmak iki ayrı işten oluşur: alan adını IP adresine çevirmek ve o adrese bağlanmak. Proxy kullanan bir istemci bu işlerden ilkini kendisi yaparsa, DNS sorgusu istemcinin işletim sistemi çözümleyicisinden çıkar ve yalnızca bağlantı proxy üzerinden kurulur. İstemci alan adını olduğu gibi proxy'ye verirse ad çözümü proxy tarafında yapılır.

Ad çözümünün yapıldığı yer, istemcinin gönderdiği adres türüne göre değişir
SenaryoDNS sorgusu nereden çıkarProxy'ye giden
socks5:// (cURL, PySocks)İstemci makinesiHedef IP adresi
socks5h:// (cURL, PySocks)Proxy sunucusuAlan adı
HTTP proxyProxy sunucusuİstekteki veya CONNECT satırındaki alan adı

socks5 ile socks5h

SOCKS5 isteği üç adres türü taşıyabilir: IPv4, IPv6 ve alan adı (RFC 1928, bölüm 5). socks5h şemasındaki h, "hostname" ifadesinden gelir ve istemciye ad çözümünü yapmamasını, alan adını proxy'ye iletmesini söyler. Şema adı kütüphaneden kütüphaneye aynı mantıkla kullanılır ancak ayrıntılar değişebilir; kullandığınız aracın belgesini kontrol edin.

Bash
# Ad çözümü yerel makinede yapılır (sızıntı riski)
curl --proxy socks5://KULLANICI:SIFRE@proxy.example.com:PORT https://example.com

# Ad çözümü proxy tarafında yapılır
curl --proxy socks5h://KULLANICI:SIFRE@proxy.example.com:PORT https://example.com
cURL'de yerel ve uzak ad çözümü

Python requests ile aynı ayrım geçerlidir. requests[socks] eklentisi PySocks kullanır ve socks5h şemasını uzak çözüm olarak yorumlar.

Python
import requests

# "socks5h" = alan adı proxy tarafında çözülür
proxy = "socks5h://KULLANICI:[email protected]:PORT"
r = requests.get(
    "https://example.com",
    proxies={"http": proxy, "https": proxy},
    timeout=15,
)
print(r.status_code)
requests ile uzaktan ad çözümü

Node.js tarafında socks-proxy-agent paketi de socks5h:// şemasında alan adını proxy'ye bırakır; socks5:// şemasında ad yerelde çözülür. Go'da golang.org/x/net/proxy ile kurulan SOCKS5 dialer, bağlantı adresi bir alan adıysa onu doğrudan proxy'ye iletir; yine de paket sürümünüzün davranışını aşağıdaki doğrulama yöntemiyle teyit etmeniz önerilir.

Tarayıcı ve uygulamalarda ayar

Tarayıcılarda ve masaüstü uygulamalarında davranış şema adıyla değil, ayarla belirlenir. Firefox'ta SOCKS v5 seçildiğinde "Proxy DNS when using SOCKS v5" seçeneği, ad çözümünü proxy'ye bırakır; bu seçenek kapalıysa sorgular yerelden çıkar. Diğer uygulamalarda benzer bir seçenek varsa açın; yoksa uygulamanın belgesine bakın.

Sızıntıyı doğrulama

En güvenilir yöntem, ağ arayüzündeki DNS trafiğini gözlemlemektir. Bir terminalde 53 numaralı porttaki paketleri dinlerken diğerinde isteği çalıştırın. Aşağıdaki komut bir Linux makinesini varsayar ve yönetici yetkisi ister.

Bash
# Terminal 1: yerel DNS sorgularını izle
sudo tcpdump -n -i any port 53

# Terminal 2: istek at
curl --proxy socks5h://KULLANICI:SIFRE@proxy.example.com:PORT https://example.com
DNS sorgusunun yerel arayüzde görünüp görünmediğini kontrol etme

Beklenen sonuç, socks5h ile yapılan isteğin hedef alan adı için yerel arayüzde bir DNS sorgusu üretmemesidir. Aynı komutu socks5:// ile tekrarladığınızda sorgunun göründüğünü doğrulayabilirsiniz. Proxy sunucusunun adının kendisi (proxy.example.com) yerelde çözüldüğü için o sorgu her iki durumda da görünür; bu beklenen davranıştır.

Uzak çözümün sonuçları

  • Yerel ağ ve yerel DNS sağlayıcısı, proxy üzerinden erişilen alan adlarını sorgu olarak görmez.
  • Ad çözümünü proxy yapar; dönen IP, proxy çıkış noktasının bulunduğu ağın çözümleyicisine bağlıdır. Konuma göre farklı adres dönen servislerde bu fark görülebilir.
  • Yerel hosts dosyası ve yerel DNS filtreleri bu yolda devreye girmez.
  • Proxy sunucusu ad çözümlemesinde başarısız olursa SOCKS5 cevabında 0x04 (ana makineye ulaşılamıyor) gibi bir hata kodu döner; sorun yerel DNS'te değil proxy tarafındadır.

Özet

  • Proxy üzerinden bağlanmak, DNS sorgusunun da proxy üzerinden gittiği anlamına gelmez.
  • socks5:// ad çözümünü istemcide, socks5h:// proxy'de yapar.
  • HTTP proxy ile alan adı proxy'ye iletildiği için ad çözümü proxy tarafında olur.
  • Davranışı tcpdump gibi bir araçla gözlemleyerek doğrulayın.
  • DNS sızıntısını kapatmak tek başına tam gizlilik sağlamaz.

01SIK SORULANLAR

Sık sorulan sorular

02İLGİLİ OKUMALAR

İlgili makaleler

03İLGİLİ ÜRÜNLER

Bu konuyla ilgili ürünler

Sipariş saglamproxy.com üzerinde, Türkçe arayüzde tamamlanır.
  • P-08

    HTTP & SOCKS5 Proxy

    Protokol katmanı: HTTP veya SOCKS5 seçimi sipariş sırasında. ISP Proxy ile aynı sipariş sayfası.

    • HTTP
    • SOCKS5
    • Kullanıcı / şifre
    Satın Al
  • P-04

    Residential Proxy

    GB bazlı fiyatlanan, dönen residential IP erişimi. 30 günlük paketler.

    • Rotating
    • GB paketi
    • HTTP(S) / SOCKS5
    Satın Al