İçeriğe geç
Glossary 7 dk okuma 1290 görüntülenme

PROXY Protocol

PROXY Protocol'ü ve GProxy gibi servislerin bir proxy arkasındayken orijinal istemci IP adresini nasıl doğru şekilde belirlediğini öğrenin; log kaydı ve analitik iyileşir.

PROXY Protocol

PROXY Protocol, bir proxy'nin veya yük dengeleyicinin TCP bağlantısının başına küçük ve standartlaştırılmış bir başlık ekleyerek orijinal istemcinin bağlantı bilgilerini —gerçek IP adresi ve portu dahil— arka uç sunucusuna iletmesini sağlar.

Neden PROXY Protocol? Çözdüğü sorun

Standart TCP proxy'leri, istemci adına arka uç sunucusuna yeni bir bağlantı kurarak çalışır. Arka uç sunucusunun bakış açısından bağlantı, orijinal istemcinin değil proxy'nin IP adresinden gelir. Bu davranış istemcinin gerçek kimliğini gizler ve birkaç soruna yol açar:

  • Log kaydı: Sunucu erişim logları proxy'nin IP'sini kaydeder; bu da isteklerin tek tek istemcilere kadar izlenmesini imkânsız kılar.
  • Güvenlik: Arka uç sunucularındaki Web Application Firewall'lar (WAF), hız sınırlayıcılar ve erişim kontrol listeleri (ACL), kötü niyetli istemcileri gerçek IP adreslerine göre doğru şekilde tanıyıp engelleyemez.
  • Analitik: Coğrafi hedefleme, kişiselleştirilmiş içerik sunumu ve kötüye kullanım tespiti sistemleri, istemcinin konum ve davranış verilerini kaybeder.
  • Hata ayıklama: Orijinal istemci kaynağı görünmediğinde ağ sorunlarını veya belirli istemci davranışlarını teşhis etmek çok daha karmaşık hale gelir.

PROXY Protocol bunu, proxy'nin istemcinin bağlantı ayrıntılarını (kaynak IP, kaynak port, hedef IP, hedef port) proxy katmanının ötesine iletmesini sağlayan bir mekanizma sunarak çözer; böylece arka uç sunucusu orijinal istemciyi doğru şekilde tanıyabilir.

PROXY Protocol nasıl çalışır

PROXY Protocol, OSI modelinin taşıma katmanında (Katman 4) çalışır. PROXY Protocol destekleyen bir proxy veya yük dengeleyici bir istemciden bağlantı aldığında, arka uç sunucusuna yeni bir bağlantı kurar. Herhangi bir uygulama katmanı verisi (örneğin HTTP istekleri, veritabanı sorguları) göndermeden önce proxy, önce bir PROXY Protocol başlığı gönderir. Bu başlık istemcinin bağlantı bilgilerini içerir.

PROXY Protocol'ün doğru çalışması için iki koşulun sağlanması gerekir:
1. Proxy veya yük dengeleyici, PROXY Protocol başlığını gönderecek şekilde yapılandırılmalıdır.
2. Arka uç sunucusu, herhangi bir uygulama katmanı verisini işlemeden önce PROXY Protocol başlığını alacak ve ayrıştıracak şekilde yapılandırılmalıdır. Arka uç sunucusu başlığı anlamazsa, onu bozuk uygulama verisi olarak yorumlar ve bağlantı hataları oluşur.

PROXY Protocol sürümleri

PROXY Protocol'ün iki temel sürümü vardır: v1 ve v2.

Sürüm 1 (v1)

PROXY Protocol v1, ASCII tabanlı ve insan tarafından okunabilir bir biçimdir. TCP üzerinden IPv4 ve IPv6 destekler.

Biçim:
PROXY <INET_PROTOCOL> <CLIENT_IP> <PROXY_IP> <CLIENT_PORT> <PROXY_PORT>\r\n

  • <INET_PROTOCOL>: IPv4 için TCP4, IPv6 için TCP6.
  • <CLIENT_IP>: Orijinal istemcinin IP adresi.
  • <PROXY_IP>: Proxy'nin IP adresi (arka ucun bağlantı kaynağı olarak gördüğü IP).
  • <CLIENT_PORT>: Orijinal istemcinin kaynak portu.
  • <PROXY_PORT>: İstemcinin bağlandığı, proxy üzerindeki hedef port.

Örnek (IPv4):

PROXY TCP4 192.168.1.1 10.0.0.1 52345 80\r\n

Bu başlık, 192.168.1.1:52345 istemcisinden proxy'ye gelen bir TCPv4 bağlantısını ve proxy'nin ardından arka uca 10.0.0.1:80 üzerinden bağlandığını gösterir.

v1'in sınırlamaları:
* Yalnızca TCP bağlantılarıyla sınırlıdır.
* ASCII ek yükü onu bir miktar daha az verimli kılabilir.
* Ek meta veri desteklemez.

Sürüm 2 (v2)

PROXY Protocol v2, verimlilik ve genişletilebilirlik için tasarlanmış ikili (binary) bir biçimdir. TCP ve UDP üzerinden IPv4, IPv6 ve UNIX soketlerini destekler ve ek bağlantı meta verisi iletmek için Type-Length-Value (TLV) alan mekanizması içerir.

v2'nin avantajları:
* Verimlilik: İkili biçim başlık boyutunu küçültür.
* Daha geniş protokol desteği: TCP, UDP ve UNIX soketlerini destekler.
* IPv6 desteği: IPv6'yı tam olarak entegre eder.
* Genişletilebilirlik (TLV): SSL bağlantı bilgileri, benzersiz bağlantı kimlikleri veya uygulamaya özgü diğer veriler gibi rastgele meta verilerin iletilmesine olanak tanır.

Yapıya genel bakış (basitleştirilmiş):
v2 başlığı 13 baytlık bir imzayla başlar; ardından 1 baytlık sürüm/komut alanı, 1 baytlık protokol alanı, 2 baytlık adres uzunluğu alanı ve sonrasında değişken uzunluktaki adres bilgisi ile isteğe bağlı TLV alanları gelir.

Ham ikili biçim karmaşık olsa da, asıl önemli nokta daha fazla bilgiyi verimli şekilde ve daha geniş bir protokol yelpazesinde iletebilmesidir.

PROXY Protocol ile X-Forwarded-For (XFF) karşılaştırması

Hem PROXY Protocol hem de X-Forwarded-For (XFF) HTTP başlığı, istemci IP bilgisini bir proxy üzerinden aktarmayı amaçlar. Ancak farklı katmanlarda çalışırlar ve farklı özelliklere sahiptirler.

Özellik PROXY Protocol X-Forwarded-For (XFF) başlığı
Çalışma katmanı Taşıma katmanı (L4) Uygulama katmanı (L7 — özellikle HTTP)
Protokol kapsamı TCP/UDP tabanlı her protokol (HTTP, FTP, SSH, SMTP vb.) Yalnızca HTTP/HTTPS
Mekanizma Ham TCP/UDP akışının başına eklenen başlık HTTP istek başlığı
İstemci kontrolü İlk güvenilir proxy'den sonra kötü niyetli bir istemci tarafından taklit edilemez İlk güvenilir proxy tarafından doğru işlenmezse kötü niyetli bir istemci tarafından taklit edilebilir
Bilgi İstemci IP'si, istemci portu, proxy IP'si, proxy portu, (v2: TLV'ler) İstemci IP'si (ve olası önceki proxy IP'leri)
Ek yük Minimum, sabit boyutlu (v1) veya küçük ikili (v2) HTTP başlıklarına eklenen küçük bir metin
Kullanım alanları Gerçek istemci IP'sine ihtiyaç duyan her TCP/UDP servisi Gerçek istemci IP'sine ihtiyaç duyan HTTP/HTTPS servisleri

PROXY Protocol, istemci IP bilgisini aktarmak için özellikle HTTP dışı servislerde veya ağ katmanında istemci IP sahteciliğine karşı güçlü güvenceler gereken senaryolarda daha sağlam ve evrensel bir çözüm sunar.

PROXY Protocol'ü uygulama

PROXY Protocol'ü uygulamak, hem gönderen proxy/yük dengeleyicide hem de alan arka uç sunucusunda yapılandırma gerektirir.

Proxy/yük dengeleyici yapılandırması (PROXY Protocol gönderme)

HAProxy:
HAProxy, yük dengeleme için yaygın bir tercihtir ve PROXY Protocol'ü tam olarak destekler.

frontend http_in
    bind *:80
    mode tcp
    default_backend web_servers

backend web_servers
    mode tcp
    server s1 192.168.1.10:80 send-proxy-v2 # PROXY Protocol v2 gönderir
    server s2 192.168.1.11:80 send-proxy    # PROXY Protocol v1 gönderir

AWS Network Load Balancer (NLB):
Bir NLB için Target Group yapılandırırken PROXY Protocol v2 desteğini etkinleştirebilirsiniz. Bu ayar tüm hedef grubuna uygulanır. Gruptaki tüm hedeflerin PROXY Protocol'ü kabul edecek şekilde yapılandırılması gerekir.

Cloudflare Spectrum:
Cloudflare Spectrum üzerinden geçen servisler için PROXY Protocol desteğini etkinleştirebilirsiniz. Cloudflare, origin sunucularınıza PROXY Protocol v2 başlıkları gönderir.

Nginx (Stream modülü — proxy olarak):
Nginx'in ngx_stream_proxy_module modülü, çoğunlukla ticari sürümünde veya belirli derlemelerinde PROXY Protocol gönderecek şekilde yapılandırılabilir.

stream {
    upstream backend_servers {
        server 192.168.1.10:80;
        server 192.168.1.11:80;
    }
    server {
        listen 12345;
        proxy_pass backend_servers;
        proxy_protocol on; # Nginx PROXY Protocol v1 gönderir
    }
}

Arka uç sunucusu yapılandırması (PROXY Protocol'ü alma ve ayrıştırma)

Nginx (arka uç web sunucusu olarak):
Nginx, PROXY Protocol başlıklarını dinleyip ayrıştıracak şekilde yapılandırılabilir.

http {
    server {
        listen 80   proxy_protocol; # 80 numaralı portta PROXY Protocol v1/v2 dinler
        listen 443  ssl proxy_protocol;

        set_real_ip_from 10.0.0.0/8; # Proxy ağınızdaki IP'lere güvenir
        real_ip_header proxy_protocol; # PROXY Protocol başlığındaki IP'yi kullanır

        location / {
            root /var/www/html;
            index index.html;
            # İstemcinin gerçek IP'si artık $remote_addr içinde bulunur
            # ve $proxy_protocol_addr log ya da özel mantık için kullanılabilir
            log_format custom_log '$proxy_protocol_addr - $remote_user [$time_local] '
                                  '"$request" $status $body_bytes_sent '
                                  '"$http_referer" "$http_user_agent"';
            access_log /var/log/nginx/access.log custom_log;
        }
    }
}

Nginx'te $remote_addr proxy'nin IP'sine ayarlanır; ancak $proxy_protocol_addr ve $proxy_protocol_port değişkenleri istemcinin gerçek IP'sini ve portunu içerir. set_real_ip_from ve real_ip_header proxy_protocol yönergeleri, Nginx'in $remote_addr değerini istemcinin gerçek IP'siyle doğru şekilde doldurmasını sağlar.

Apache HTTP Server:
Apache, PROXY Protocol başlıklarını ayrıştırmak için mod_remoteip modülünü kullanabilir.

<IfModule mod_remoteip.c>
    # PROXY Protocol ayrıştırmasını etkinleştir
    RemoteIPProxyProtocol On

    # Güvenilir proxy'leri tanımla
    RemoteIPTrustedProxy 10.0.0.0/8
    RemoteIPTrustedProxy 192.168.0.0/16

    # Log biçimini gerçek istemci IP'sini kullanacak şekilde ayarla
    LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
</IfModule>

RemoteIPProxyProtocol On ile Apache, PROXY Protocol başlığını bekler. LogFormat içindeki %a değişkeni de böylece istemcinin gerçek IP'sini doğru şekilde yansıtır.

Özel uygulamalar:
Python, Node.js, Go veya Java gibi dillerde yazılmış özel uygulamalarda, uygulamanın kendisi gelen TCP akışını okumalı, PROXY Protocol başlığını kontrol etmeli, ayrıştırmalı ve ancak ondan sonra uygulamaya özgü protokolle devam etmelidir.

  • Tespit: Uygulama önce soketten birkaç bayt (örneğin 100–200 bayt) okuyarak bunların PROXY Protocol v1 imzasıyla (PROXY) veya v2 imzasıyla eşleşip eşleşmediğini kontrol etmelidir.
  • Ayrıştırma: Bir PROXY Protocol başlığı tespit edilirse uygulama, istemci IP'sini, portunu vb. çıkarmak için başlığı ayrıştırır.
  • Devam: Ayrıştırmadan sonra uygulama, soketteki kalan veriyi kendi doğal protokolü olarak işler.
  • Başlık yoksa: Hiçbir PROXY Protocol başlığı bulunmazsa uygulama, bağlantının doğrudan bir istemciden veya PROXY Protocol kullanmayan bir proxy'den geldiğini varsayar ve veriyi doğrudan işler.

Birçok ağ kütüphanesi ve framework'ü, PROXY Protocol ayrıştırması için ara katman (middleware) veya yerleşik destek sunar.

PROXY Protocol kullanmanın faydaları

  • Doğru IP kaydı: Sunucu erişim loglarının, güvenlik duvarlarının ve izleme sistemlerinin gerçek istemci IP adresini kaydetmesini sağlar.
  • Güçlenmiş güvenlik: Arka uç sunucularındaki güvenlik araçlarının (WAF, DDoS azaltma, hız sınırlayıcılar) politikaları istemcinin gerçek kimliğine göre uygulamasına imkân verir.
  • Daha iyi analitik: Analitik, A/B testleri ve kişiselleştirme için doğru coğrafi ve demografik veri sağlar.
  • Basitleşen ağ mimarisi: İstemci IP yönetimini taşıma katmanında toplar ve XFF gibi uygulamaya özgü başlıklara olan ihtiyacı azaltır.
  • Geniş uyumluluk: Yalnızca HTTP ile değil, TCP/UDP tabanlı her uygulamayla çalışır.

Dikkat edilmesi gerekenler ve iyi uygulamalar

  • Güven sınırları: PROXY Protocol'ü yalnızca kendi kontrolünüzdeki güvenilir proxy'ler veya yük dengeleyicilerden gelen bağlantılar için etkinleştirin. Güvenilmeyen bir taraf sahte bir PROXY Protocol başlığı gönderirse, arka uç sunucunuz istemcinin kaynağı konusunda yanıltılabilir.
  • Uçtan uca uyumluluk: Hem proxy'nin hem de arka uç sunucusunun aynı PROXY Protocol sürümünü (v1 veya v2) gönderip alacak şekilde doğru yapılandırıldığından emin olun. Uyuşmazlıklar bağlantı hatalarına yol açar.
  • Performans: PROXY Protocol başlığının getirdiği ek yük, özellikle v2'nin ikili biçiminde minimum düzeydedir. Yine de her bağlantıda yapılan ayrıştırma küçük ve ihmal edilebilir bir işlem maliyeti ekler.
  • İzleme: İstemci IP'lerinin doğru şekilde belirlendiğini ve beklenmedik PROXY Protocol hatalarının oluşmadığını doğrulamak için arka uç sunucu loglarınızı ve ağ trafiğinizi izleyin.
Güncellendi: 03.03.2026
Kategoriye dön

Bunları da okuyun

Glossary 3 dk

Mobil proxy nedir? 4G/5G proxy'ler açıklandı

Mobil proxy, trafiği gerçek bir 4G/5G cihaz üzerinden yönlendirir ve size binlerce gerçek kullanıcının paylaştığı bir operatör IP'si verir — engellenmesi en zor tür. Nasıl çalıştıklarını ve ne zaman kullanılacağını anlatıyoruz.

Glossary 3 dk

ISP proxy nedir? Statik residential proxy'ler açıklandı

ISP proxy, veri merkezinde barınan ama residential bir ISP'ye kayıtlı statik bir IP'dir — residential güveni, veri merkezi hızı ve sabit IP. Nasıl çalıştıklarını ve ne zaman kullanılacağını anlatıyoruz.

Glossary 3 dk

HTTP ve HTTPS Proxy: Fark Nedir?

HTTP proxy web trafiğinizi okuyabilir; HTTPS proxy onu CONNECT ile şifreli tüneller. Gerçek fark, proxy'nin ne gördüğü ve hangisini seçmeniz gerektiği.

Glossary 4 dk

Proxy nedir? Yeni başlayanlar için eksiksiz rehber

Proxy sunucusu, trafiğinizi farklı bir IP üzerinden yönlendirerek gerçek IP adresinizi gizleyen bir aracıdır. Proxy'lerin nasıl çalıştığını, temel türlerini ve doğru olanı nasıl seçeceğinizi anlatıyoruz.

Glossary 4 dk

SOCKS5 ile HTTP Proxy: Farkları, Hızı ve Hangisi Ne Zaman Kullanılır

SOCKS5 ve HTTP proxy'ler farklı sorunları çözer. HTTP proxy web trafiğini anlar, önbelleğe alabilir veya filtreleyebilir; SOCKS5 ise herhangi bir TCP/UDP bağlantısını körlemesine iletir — yalnızca gezinmeyi değil, torrentleri, oyunları, e-postayı da. İkisi de kendi başına trafiği şifrelemez. Hangisinin ne zaman kazandığını burada bulacaksınız.

Glossary 1 dk

CDN ve proxy'ler: Nasıl çalışır

CDN ve proxy'ler — birlikte nasıl çalışır — proxy ve ağ teknolojileri alanına ait bir terim.

Proxy'lerimizi deneyin

100+ ülkede 20,000+ proxy

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