SOCKS4a proxy
SOCKS4a nedir
SOCKS4a, Ying-Da Lee tarafından önerilen SOCKS4 protokolünün bir uzantısıdır. Orijinal SOCKS4'ten temel farkı, istemcinin IP adresi yerine alan adı gönderebilmesi ve DNS çözümlemesinin proxy sunucusu tarafında yapılmasıdır.
Standart SOCKS4'te istemci, isteği göndermeden önce alan adını kendisi bir IP adresine çözümlemek zorundadır. Bu bir sorun yaratır: DNS sorgusu doğrudan istemciden çıkar ve ziyaret edilen web siteleri hakkında bilgi açığa çıkar. SOCKS4a bu sorunu çözer.
SOCKS4'ün DNS sorunu
SOCKS4 nasıl çalışır
- İstemci example.com adresine bağlanmak ister
- İstemci DNS sorgusunu doğrudan yapar (proxy üzerinden değil)
- 93.184.216.34 IP'sini alır
- Proxy'ye şu komutu gönderir: "93.184.216.34:80 adresine bağlan"
- Proxy bir TCP bağlantısı kurar
Sorun: 2. adımdaki DNS sorgusu ISP tarafından, DNS sunucusu tarafından ve trafiği izleyen herkes tarafından görülebilir. Bu bir DNS sızıntısıdır.
SOCKS4a nasıl çalışır
- İstemci example.com adresine bağlanmak ister
- İstemci proxy'ye şu komutu gönderir: "example.com:80 adresine bağlan"
- Proxy example.com'u kendisi bir IP'ye çözümler
- Proxy bir TCP bağlantısı kurar
DNS sorgusu tamamen proxy'nin arkasında gizlenir.
Teknik uygulama
SOCKS4 istek formatı
| Alan | Boyut | Açıklama |
|---|---|---|
| VER | 1 bayt | Sürüm (0x04) |
| CMD | 1 bayt | Komut (0x01 = CONNECT) |
| DSTPORT | 2 bayt | Hedef port |
| DSTIP | 4 bayt | Hedef IP |
| USERID | değişken | Tanımlayıcı dizesi |
| NULL | 1 bayt | 0x00 (sonlandırıcı) |
SOCKS4a istek formatı
Format aynıdır, ancak bir hile içerir: DSTIP alanı 0.0.0.x biçiminde geçersiz bir IP içerir (x > 0). USERID'nin NULL sonlandırıcısından sonra alan adı eklenir:
| Alan | Boyut | Açıklama |
|---|---|---|
| VER | 1 bayt | 0x04 |
| CMD | 1 bayt | 0x01 |
| DSTPORT | 2 bayt | Hedef port |
| DSTIP | 4 bayt | 0.0.0.1 (SOCKS4a işareti) |
| USERID | değişken | Tanımlayıcı dizesi |
| NULL | 1 bayt | 0x00 |
| DOMAIN | değişken | Alan adı (example.com) |
| NULL | 1 bayt | 0x00 |
Proxy, 0.0.0.x biçiminde bir IP gördüğünde USERID'den sonra çözümlenecek bir alan adının geldiğini anlar.
SOCKS4 vs SOCKS4a vs SOCKS5
| Parametre | SOCKS4 | SOCKS4a | SOCKS5 |
|---|---|---|---|
| Proxy tarafında DNS | Hayır | Evet | Evet |
| Kimlik doğrulama | Hayır | Hayır | Evet |
| UDP | Hayır | Hayır | Evet |
| IPv6 | Hayır | Hayır | Evet |
| BIND komutu | Evet | Evet | Evet |
| ASSOCIATE komutu | Hayır | Hayır | Evet |
SOCKS4a'nın avantajları
1. DNS sızıntısını ortadan kaldırır
Temel avantajı, istemcinin DNS sorgularını doğrudan yapmamasıdır. Tüm DNS etkinliği proxy'nin arkasında gizlenir.
2. Protokolün basitliği
SOCKS4a'nın uygulanması SOCKS5'e göre daha kolaydır. Kimlik doğrulama aşaması yoktur, UDP desteği yoktur — yalnızca TCP CONNECT vardır.
3. Geriye dönük uyumluluk
Bir SOCKS4a istemcisi SOCKS4a proxy ile çalışabilir ve istek formatı SOCKS4 ile geriye dönük uyumludur.
4. .onion ve dahili alan adlarına erişim
DNS proxy tarafında çözümlendiği için SOCKS4a, herkese açık DNS tarafından çözümlenmeyen alan adlarına erişmek için kullanılabilir (örneğin Tor üzerinden .onion).
Kısıtlamalar
1. Kimlik doğrulama yok
SOCKS4a kimlik doğrulamayı desteklemez. Proxy adresini bilen herkes onu kullanabilir.
2. UDP yok
Yalnızca TCP bağlantıları desteklenir. UDP üzerinden DNS sorguları, VoIP ve oyun trafiği desteklenmez.
3. IPv6 yok
DSTIP alanı 4 bayttır, yalnızca IPv4 içindir.
4. Eskimiş protokol
SOCKS5, SOCKS4a'nın yerini aldı; tüm yeteneklerine ek olarak kimlik doğrulama, UDP ve IPv6 sunuyor.
SOCKS4a ne zaman kullanılır
- Eski sistemler — SOCKS5'i desteklemeyen eski yazılımlar
- Basit senaryolar — kimlik doğrulama ve UDP gerekmediğinde
- Tor bağlantıları — Tor, .onion çözümlemesi için SOCKS4a'yı destekler
- Minimum ek yük — protokol gecikmesinin en düşük olması önemli olduğunda
Yazılım desteği
| Program | SOCKS4a |
|---|---|
| curl | Evet (--socks4a) |
| Tor | Evet (birincil protokol) |
| ProxyChains | Evet |
| Firefox | network.proxy.socks_remote_dns üzerinden |
| PuTTY | Evet |
Sonuç
SOCKS4a, DNS sızıntısı sorununu çözerek SOCKS4'ten sonraki önemli bir evrim adımı oldu. Bugün standart SOCKS5 olsa da, SOCKS4a'yı anlamak eski sistemlerle çalışmak ve proxy protokollerinin evrimini kavramak için faydalıdır.
