SOCKS5 proxy nedir yazımızda kavramı tanıttık. Burada protokolün içine bakıyoruz: istemci ile sunucu arasında hangi baytlar gidip geliyor, adres nasıl belirtiliyor ve bu tasarım neden HTTP proxy'den daha genel amaçlı bir araç üretiyor?
SOCKS5, RFC 1928'de tanımlanmış oldukça sade bir protokoldür. Sadeliği gücünün kaynağıdır: uygulama katmanındaki veriyi hiç yorumlamaz, yalnızca TCP (ve isteğe bağlı UDP) trafiğini taşır.
Üç Aşamalı El Sıkışma
Kimlik doğrulama gerekmiyorsa üç tur ikiye iner. HTTP proxy'nin CONNECT yöntemine göre biraz daha fazla tur gerektirir ama baytlar çok daha küçüktür.
Aşama 1 — Selamlama
İstemci ilk paketinde protokol sürümünü ve desteklediği kimlik doğrulama yöntemlerini bildirir:
Sunucu tek baytlık bir yanıtla seçimini bildirir: 0x00 (kimlik gerekmez), 0x02 (kullanıcı/şifre) veya 0xFF (kabul edilebilir yöntem yok).
Sunucu 0xFF döndürüp bağlantıyı kapatıyorsa, istemciniz sunucunun beklediği kimlik yöntemini sunmuyor demektir. "Bağlantı sessizce kapandı" şikâyetinin en yaygın nedeni budur.
Aşama 2 — Kimlik Doğrulama
Yöntem 0x02 seçildiyse RFC 1929'da tanımlı alt görüşme yapılır: sürüm baytı, kullanıcı adı uzunluğu ve kullanıcı adı, şifre uzunluğu ve şifre. Sunucu tek baytlık başarı/başarısızlık döndürür.
Ayrıntılı karşılaştırma ve pratik yapılandırma için SOCKS5 kimlik doğrulama yazımıza bakabilirsiniz.
Aşama 3 — CONNECT İsteği
Kimlik geçildikten sonra istemci hedefi bildirir. Burada SOCKS5'in en önemli tasarım kararı devreye girer: adres üç farklı biçimde verilebilir.
ATYP=0x03 alan adı anlamına gelir; bu durumda DNS çözümlemesini proxy yapar. Bu tek bayt, DNS sızıntısını önlemenin anahtarıdır.
Neden HTTP Proxy'den Daha Genel?
HTTP proxy isteği okur ve yorumlar; SOCKS5 yalnızca taşır. Bu yüzden SOCKS5 üzerinden e-posta, oyun, dosya aktarımı ve tarayıcı trafiği aynı anda geçebilir.
| Özellik | HTTP proxy | SOCKS5 |
|---|---|---|
| Çalıştığı katman | Uygulama (7) | Oturum (5) |
| Protokol desteği | Yalnızca HTTP(S) | Herhangi bir TCP, isteğe bağlı UDP |
| İçeriği yorumlama | Evet | Hayır |
| Başlık ekleme | Yapabilir | Yapamaz |
| Önbellekleme | Mümkün | Mümkün değil |
| DNS çözümleme | Proxy tarafında | Seçilebilir (ATYP) |
| El sıkışma turu | 1 (CONNECT) | 2–3 |
Detaylı karşılaştırma için HTTP proxy ve SOCKS5 farkı yazımıza bakabilirsiniz.
SOCKS5 Şifreleme Yapar mı?
Hayır. Bu, en yaygın yanlış anlamadır. SOCKS5 bir taşıma protokolüdür; şifreleme sunmaz. Trafiğinizin güvenliği, taşınan içeriğin kendi şifrelemesine bağlıdır:
- HTTPS üzerinden geçiyorsa: TLS uçtan uca korur; proxy içeriği göremez.
- Düz HTTP ise: Proxy operatörü içeriği okuyabilir.
- Kimlik bilgisi: SOCKS5 kullanıcı adı/şifresi düz metin gönderilir.
SOCKS5'in kimlik bilgileri şifrelenmeden iletilir. Güvenilmeyen bir ağda SOCKS5 proxy kullanıyorsanız, kimlik bilgileriniz aradaki bir gözlemci tarafından okunabilir. Bu senaryoda SSH tüneli üzerinden SOCKS5 kullanmak daha güvenlidir — yöntemi ayrı bir yazıda anlattık.
Pratik Kullanım
socks5h şemasındaki h "hostname" anlamına gelir ve DNS çözümlemesinin proxy tarafında yapılmasını sağlar. Sızıntıyı önlemek için her zaman bunu tercih edin.
Ne Zaman SOCKS5 Seçmelisiniz?
SOCKS5 tercih edin
- HTTP dışı protokoller taşıyacaksanız (e-posta, FTP, oyun).
- DNS çözümlemesini proxy tarafında yapmak istiyorsanız.
- UDP trafiği gerekiyorsa.
- Proxy'nin başlıklarınıza dokunmasını istemiyorsanız.
- Uygulama yalnızca SOCKS destekliyorsa.
HTTP proxy yeterli
- Yalnızca web trafiği taşıyacaksanız.
- Önbellekleme istiyorsanız.
- Aracınız yalnızca HTTP proxy destekliyorsa.
- En düşük el sıkışma turu önemliyse.
- Kurumsal filtreleme kuralları gerekiyorsa.
Özet
SOCKS5, uygulama verisine hiç bakmadan TCP ve UDP trafiğini taşıyan sade bir oturum katmanı protokolüdür. Üç aşamalı el sıkışması, üç farklı adres türü desteği ve alan adı seçeneği sayesinde DNS sızıntısını önleme imkânı sunar. Şifreleme sağlamaz; güvenlik taşınan içeriğin kendi şifrelemesine bağlıdır. Web dışı trafik taşımanız gerekiyorsa doğru araçtır. Ürün ayrıntıları için SOCKS5 proxy sayfamıza, test için proxy kontrol aracımıza bakabilirsiniz.