İçeriğe geç

RedSocks ve SOCKS5: Linux sistemlerinde farkları ve kullanımı

Прокси
RedSocks ve SOCKS5: Linux sistemlerinde farkları ve kullanımı

SOCKS5, istemciler ile sunucular arasındaki paketleri bir proxy üzerinden yönlendiren çok yönlü bir ağ protokolüdür; RedSocks ise giden TCP bağlantılarını sistem seviyesinde yakalayıp bir SOCKS5 proxy'sine veya doğrudan proxy'ye ileten şeffaf bir yönlendirme daemon'udur. Linux sistemlerinde SOCKS5 iletişim standardı işlevi görürken, RedSocks yerleşik proxy yapılandırma desteği olmayan uygulamaları "proxy'lemek" için gereken altyapı aracı olarak çalışır.

SOCKS5 protokolünü anlamak

SOCKS5 (Socket Secure sürüm 5) RFC 1928'de tanımlanmıştır ve OSI modelinin 5. Katmanında (Oturum Katmanı) çalışır. Yalnızca web trafiğini yorumlayıp iletebilen HTTP proxy'lerinin aksine SOCKS5 protokolden bağımsızdır. TCP ve UDP dahil olmak üzere herhangi bir protokol veya programın ürettiği her türlü trafiği işler; bu da onu web scraping, SEO izleme ve güvenli uzaktan erişim gibi yüksek performanslı görevler için sektör standardı yapar.

GProxy gibi premium bir sağlayıcı kullanıldığında SOCKS5, seleflerine kıyasla birkaç teknik avantaj sunar:

  • Kimlik doğrulama: SOCKS5, GSS-API ve kullanıcı adı/parola şemaları dahil birden fazla kimlik doğrulama yöntemini destekler; böylece proxy ağ geçidine yalnızca yetkili kullanıcılar erişebilir.
  • UDP desteği: SOCKS4'ten farklı olarak SOCKS5, DNS sorguları, VoIP uygulamaları ve akış hizmetleri için kritik olan User Datagram Protocol'ü (UDP) destekler.
  • IPv6 uyumluluğu: SOCKS5, IPv6'nın daha geniş adres alanını işleyebilir ve modern ağ ortamları için geleceğe dönük bir temel sağlar.
  • Daha düşük gecikme: SOCKS5 veri başlıklarını yeniden yazmadığı için (HTTP proxy'lerinin aksine) ek yük azalır; bu da daha hızlı paket işleme ve daha düşük gecikme demektir.

SOCKS5'in temel sınırlaması, istemci uygulamadan açık destek gerektirmesidir. Örneğin bir web tarayıcısının veya bir cURL komutunun SOCKS5 sunucusunun IP'sine ve portuna elle yönlendirilmesi gerekir. Bir uygulamanın (eski bir veritabanı istemcisi veya özel bir binary gibi) proxy ayarları yoksa, SOCKS5 tek başına onun trafiğini yönlendiremez.

Linux ortamlarında RedSocks'un rolü

RedSocks "eksik yapılandırma" sorununu çözer. Linux sisteminin arka planında çalışan ve yerel bir portu dinleyen bir daemon'dur. Giden paketleri ağ arayüzünden çıkmadan önce yakalayıp bir SOCKS5 sunucusuna yönlendirmek için iptables veya nftables ile birlikte çalışır.

Bu sürece "Şeffaf Proxy'leme" denir. Uygulama trafiğinin proxy üzerinden geçtiğinin farkında değildir; uzak bir IP adresine bağlanmaya çalışır, ancak güvenlik duvarı kurallarıyla yönlendirilen Linux çekirdeği bağlantıyı RedSocks'un yerel portuna aktarır. RedSocks da bu bağlantıyı SOCKS5 protokolüne sarar ve GProxy uç noktasına gönderir.

RedSocks ve SOCKS5: Linux sistemlerinde farkları ve kullanımı

RedSocks, Proxychains'ten nasıl ayrılır

Pek çok Linux yöneticisi proxychains aracını bilir, ancak RedSocks üretim ortamları için daha sağlam bir çözüm sunar. proxychains, standart C kütüphanesi fonksiyonlarına (connect() gibi) bağlanmak için LD_PRELOAD kullanır ve statik olarak bağlanmış binary'lerde, Go tabanlı uygulamalarda veya standart kütüphaneleri atlayan programlarda başarısız olur. RedSocks ağ seviyesinde çalışır; yani uygulamanın nasıl derlendiği veya hangi kütüphaneleri kullandığı onun için fark etmez. Ağ yığınına ulaşan her şeyi yakalar.

Teknik karşılaştırma: RedSocks ve yerleşik SOCKS5

Linux altyapınız için doğru yaklaşımı seçmek üzere şu mimari farkları göz önünde bulundurun:

Özellik Yerleşik SOCKS5 uygulaması RedSocks yönlendirici
OSI katmanı Katman 5 (Oturum) Katman 3/4 (Ağ/Taşıma)
Yapılandırma Uygulamaya özgü ayarlar Sistem genelinde (iptables + daemon)
Uygulama desteği Yerleşik proxy ayarları gerektirir Her uygulamayla çalışır
Kurulum karmaşıklığı Düşük (tek komut/ayar) Orta (güvenlik duvarı yapılandırması gerekir)
DNS işleme Proxy tarafından yapılabilir Çoğu zaman ayrı bir DNS yönlendirici gerekir
Performans Minimum ek yük Çekirdek yönlendirmesi nedeniyle hafif ek yük

Linux'ta RedSocks'u SOCKS5 ile yapılandırma

Şeffaf bir proxy kurmak üç ana adımdan oluşur: daemon'u kurmak, bağlantı parametrelerini yapılandırmak ve güvenlik duvarı yönlendirme kurallarını oluşturmak.

1. Kurulum

Çoğu Linux dağıtımı RedSocks'u resmi depolarında bulundurur. Debian veya Ubuntu sistemlerinde şunu kullanın:

sudo apt update
sudo apt install redsocks

2. Yapılandırma (redsocks.conf)

Genellikle /etc/redsocks.conf konumunda bulunan yapılandırma dosyası, daemon'un nerede dinlediğini ve trafiği nereye gönderdiğini tanımlar. Aşağıda bir GProxy SOCKS5 sunucusuna bağlanmak için standart bir yapılandırma yer alıyor:

base {
    log_debug = off;
    log_info = on;
    log = "syslog:daemon";
    daemon = on;
    redirector = iptables;
}

redsocks {
    local_ip = 127.0.0.1;
    local_port = 12345; // RedSocks'un dinlediği port
    ip = 1.2.3.4;       // GProxy SOCKS5 IP adresiniz
    port = 1080;        // GProxy SOCKS5 portunuz
    type = socks5;      // Protokol türü

    // İsteğe bağlı: GProxy kimlik bilgileri
    // login = "your_username";
    // password = "your_password";
}

3. Güvenlik duvarı kurallarını uygulama

Daemon çalışmaya başladığında, Linux çekirdeğine trafiği 12345 portuna göndermesini söylemeniz gerekir. Giden tüm TCP trafiğini yönlendirmek için (döngüleri önlemek adına proxy'nin kendisine giden trafik hariç) şu komutları kullanın:

# RedSocks için yeni bir chain oluştur
sudo iptables -t nat -N REDSOCKS

# Sonsuz döngüyü önlemek için proxy sunucusunun kendisine giden trafiği yok say
sudo iptables -t nat -A REDSOCKS -d 1.2.3.4 -j RETURN

# Ayrılmış/yerel adresleri yok say
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN

# Kalan tüm TCP trafiğini RedSocks portuna yönlendir
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345

# Chain'i giden trafiğe uygula
sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
RedSocks ve SOCKS5: Linux sistemlerinde farkları ve kullanımı

Python sistemlerinde kullanım

RedSocks sistem genelindeki trafiği yönetirken, geliştiricilerin ayrıntılı denetim için SOCKS5 bağlantılarını doğrudan kod içinde ele alması gerekebilir. Python'un requests kütüphanesi PySocks ile birlikte, sistem seviyesinde yönlendirmeye gerek kalmadan doğrudan SOCKS5 entegrasyonu sağlar.

Bir Python betiğinde GProxy SOCKS5 uç noktası kullanımına örnek:

import requests

# GProxy SOCKS5 kimlik bilgilerini ve uç noktasını tanımla
proxy_url = "socks5h://username:[email protected]:1080"

proxies = {
    "http": proxy_url,
    "https": proxy_url
}

try:
    # 'socks5h' şeması DNS çözümlemesinin proxy tarafında yapılmasını sağlar
    response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
    print(f"Current IP through Proxy: {response.json()['ip']}")
except Exception as e:
    print(f"Connection failed: {e}")

Bu senaryoda uygulama "proxy farkındadır". RedSocks kullanıyor olsaydınız, proxies parametresi olmadan standart bir requests.get() çağrısı yazmanız yeterli olurdu ve yönlendirmeyi işletim sistemi otomatik olarak halledecekti.

Pratik kullanım senaryoları

Senaryo A: eski kurumsal yazılım

Bir kuruluş, proxy ayarları bulunmayan eski bir veri senkronizasyon aracı kullanıyor. Linux ağ geçidine RedSocks kurarak yönetici, aracın trafiğini bir GProxy residential SOCKS5 düğümü üzerinden geçmeye zorlayabilir. Böylece araç, eski kaynak kodu değiştirilmeden coğrafi olarak kısıtlanmış bulut kaynaklarına erişebilir.

Senaryo B: Docker konteyner izolasyonu

Mikroservis mimarisinde belirli bir Docker konteynerinin tüm trafiğini bir proxy üzerinden geçirmek isteyebilirsiniz. Konteyner içindeki her servisi ayrı ayrı yapılandırmak yerine RedSocks'u host üzerinde veya sidecar konteyner olarak çalıştırıp ağ ad alanlarıyla hedef konteynerin tüm trafiğini SOCKS5 ağ geçidine yönlendirebilirsiniz.

Senaryo C: DNS sızıntılarını önleme

Standart SOCKS5 proxy'lerinde sıklıkla DNS sızıntısı görülür: IP proxy üzerinden geçer ama DNS sorguları yine yerel ISP üzerinden gider. RedSocks, dnscrypt-proxy veya unbound ile birlikte kullanıldığında DNS sorgularını proxy tüneli üzerinden geçmeye zorlayacak şekilde yapılandırılabilir; bu da Linux iş istasyonları veya sunucuları için tam anonimlik sağlar.

Performans ve güvenilirlik üzerine notlar

RedSocks ve SOCKS5 kullanırken, yüksek verimli ortamlarda performans ayarı hayati önemdedir. RedSocks bağlantıları kullanıcı alanında işlediği için çekirdek (iptables) ile daemon arasında bağlam değişimi olur. Çok büyük ölçekte (binlerce eşzamanlı bağlantı) Linux host'unda açık dosya tanımlayıcıları için ulimit değerini artırdığınızdan emin olun.

Ayrıca gecikmedeki en belirleyici etken SOCKS5 arka ucunun kalitesidir. GProxy kullanmak, düşük kaliteli proxy hizmetlerinde görülen "asılı kalan" bağlantıları en aza indiren, yüksek çalışma süreli ve istikrarlı bir omurga sağlar. Özellikle RedSocks için üretimde daima log_debug = off ayarını kullanın; aksi halde ayrıntılı paket yakalama günlükleri diski doldurur.

Önemli çıkarımlar

SOCKS5 protokolü ile RedSocks yönlendiricisi arasındaki farkı anlamak, modern Linux ağ yönetimi için şarttır. SOCKS5 güvenli tüneli sağlarken, RedSocks trafiği o tünele çeken "kancayı" sağlar.

  • SOCKS5 bir protokoldür: proxy ayarları mevcut olduğunda Python, cURL veya Chrome gibi uygulamalarda doğrudan kullanın.
  • RedSocks bir araçtır: proxy desteklemeyen uygulamaların şeffaf yönlendirilmesi veya sistem genelinde yönlendirme için kullanın.
  • Güvenlik duvarı entegrasyonu: RedSocks'un çalışması için iptables veya nftables gerekir; tek başına trafiği yakalayamaz.
  • DNS güvenliği: gerçek konumunuzun DNS sorguları üzerinden sızmaması için daima socks5h şemasını veya özel bir DNS yönlendirici kullanın.

Pratik ipucu 1: RedSocks'u kurarken proxy sunucunuzun IP adresini iptables yönlendirme kurallarının dışında tutmayı asla unutmayın. Aksi halde ağ yığınınızı çökerten bir yönlendirme döngüsü oluşur.

Pratik ipucu 2: Yüksek anonimlik gerektiren işler için GProxy SOCKS5 uç noktalarını kullanın; UDP ve kimlik doğrulama dahil tam SOCKS5 el sıkışmasını desteklerler ve bu, modern web protokolleri ile güvenli veri çekimi için çoğu zaman gereklidir.

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.