Trusted Proxy profilindeki "Real IP from" seçenekleri (X-Forwarded-For (last / most trusted), X-Forwarded-For (first), Custom Header) arasındaki fark nedir?
Kısa cevap
Trusted Proxy profilinde X-Forwarded-For (last / most trusted) (varsayılan), başlık zincirinin en sağındaki adresi alır: bu, güvenilen proxy'nin kendisine bağlanan adres olarak eklediği değerdir ve en güvenli seçenektir. X-Forwarded-For (first) zincirin en solundaki adresi alır; bu değeri istemci kendisi yazabildiği için, bağlantı güvenilen ağdan gelse bile taklit edilebilir. Custom Header, Header Name alanına yazılan CF-Connecting-IP ya da True-Client-IP gibi CDN'in tek değerli özel başlığını okur. Üç seçenekte de başlık yalnızca bağlantı Trusted Networks listesindeki bir adresten geliyorsa kullanılır (Real IP from).
Karşılaştırma
| Seçenek | Okunan değer | Güvenilirlik | Uygun olduğu durum |
|---|---|---|---|
| X-Forwarded-For (last / most trusted) | Zincirin en sağındaki adres | Yüksek | TR7'nin önünde tek bir proxy katmanı |
| X-Forwarded-For (first) | Zincirin en solundaki adres | Düşük; istemci yazabilir | Yalnızca zincirin başının güvenilir olduğu kapalı ortamlar |
| Custom Header | Belirtilen başlığın değeri (Header Name) | Yüksek (CDN başlığı ezer) | Cloudflare (CF-Connecting-IP), Akamai (True-Client-IP) |
Nasıl Çalışır?
- TR7 önce bağlantının geldiği adresin Trusted Networks listesinde olup olmadığına bakar; değilse başlık dikkate alınmaz (silinmez, Kurum Servisine olduğu gibi gider).
- Adres güvenilen ağdaysa seçilen yöntemle başlıktaki adres okunur ve istemci adresi olarak kullanılır.
- TR7 X-Forwarded-For zincirini adım adım geri yürümez: zincirdeki ara adresler güvenilen ağlarla karşılaştırılmaz, seçilen tek konum (son ya da ilk değer) okunur. Birden fazla X-Forwarded-For satırı varsa değerler tek zincir olarak sayılır.
- Profilde birden fazla kaynak (Sources) varsa kaynaklar sırayla değerlendirilir; bağlantıyı güvenilen ağında bulan ilk kaynak uygulanır.
Zincir Örneği
istemci (198.51.100.45) → CDN (198.51.100.7) → TR7 için CDN şu başlığı ekler:
X-Forwarded-For: 198.51.100.45last ve first burada aynı değeri verir. İstemci kendisi X-Forwarded-For: 198.51.100.66 gönderirse CDN kendi gördüğü adresi sona ekler (198.51.100.66, 198.51.100.45): last doğru adresi (198.51.100.45), first istemcinin yazdığı sahte adresi (198.51.100.66) okur.
İki proxy katmanı olduğunda (istemci → CDN → kurum proxy'si → TR7) last kurum proxy'sinin eklediği CDN adresini verir; bu durumda CDN'in özel başlığı (Custom Header) kullanılır ya da kurum proxy'si istemci adresini taşıyan ayrı bir başlık ekler.
TR7'de
- Yer: Load Balancer → Profiles → Trusted Proxies → profil → Sources → Real IP from; profil HTTP vService'in Details → Trusted Proxy alanında seçilir (TR7'nin önünde Cloudflare / Akamai gibi bir CDN var; gerçek istemci IP'sini nasıl alırım (Trusted Proxy)?).
- Önceki adres: Çözümleme öncesindeki bağlantı kaynağı (öndeki proxy'nin adresi)
%PROXY_SRCSmart Variable'ı ile log, rapor ve koşullarda kullanılabilir (Çözülen adresi kullanan bileşenler).
Sık Karıştırılan Noktalar
- "first gerçek istemcidir, bu yüzden daha doğrudur." İlk değer istemci tarafından yazılabilir.
- "Custom header her başlığı okur." Başlık adı yalnızca harf, rakam, tire ve alt çizgiden oluşabilir (en fazla 64 karakter); başlıktaki değer bir IP adresi olmalıdır.
- "Başlık güvenilmeyen kaynaktan gelirse silinir." Başlık dikkate alınmaz ama Kurum Servisine olduğu gibi gider.
Dokümantasyonda nasıl yapılır
İlgili sorular
