Proxy Teknolojileri6 dk okuma
Forward ve reverse proxy farkı: kimin adına çalışır?
İki aracı da trafiği aktarır; fark, kimin adına çalıştıkları ve kimin onları yapılandırdığıdır. Forward proxy istemciyi, reverse proxy sunucuyu temsil eder.
Forward proxy istemcinin adına çalışır: istemci onu bilerek yapılandırır ve hedef sunucu, isteği proxy’nin IP adresinden gelmiş olarak görür. Reverse proxy ise sunucunun adına çalışır: istemci onun varlığından genellikle habersizdir, siteye bağlandığını sanır; reverse proxy isteği arkadaki gerçek sunuculardan birine iletir.
HTTP standardı da bu ayrımı yapar: RFC 9110 (yeni sekmede açılır) aracıları “proxy”, “gateway” ve “tunnel” olarak sınıflandırır ve gateway için “reverse proxy” adını da verir. Bu sitede tanıtılan ürünlerin tamamı forward proxy’dir.
Forward proxy: istemcinin çıkış kapısı
Forward proxy’yi tarayıcınıza, uygulamanıza ya da betiğinize siz eklersiniz. Bağlantılarınız proxy’ye gider, proxy hedefe kendi adresinden bağlanır. Tipik kullanımları:
- Kurumsal çıkış: şirket ağındaki cihazlar internete tek bir denetim noktasından çıkar; erişim kuralları ve kayıtlar orada tutulur.
- Çıkış IP’si ve lokasyon seçimi: bir sayfanın başka bir ülkeden ya da başka bir ağ türünden nasıl göründüğünü test etmek.
- Sabit çıkış adresi: bir iş ortağının IP izin listesine tanımlanacak değişmeyen bir adres. Örnek: ISP Proxy gibi statik ürünler.
- Önbellek: aynı içeriği sık indiren ağlarda tekrarlanan düz HTTP istekleri yerelden karşılanabilir. HTTPS tünellerinde içerik görülmediği için bu mümkün değildir.
Forward proxy’nin hedefe gösterdiği yüz proxy’nin kendisidir: hedef, bağlantının kaynağı olarak proxy’nin IP adresini ve bu adresin kayıtlı olduğu ağı görür. Bu nedenle bir forward proxy seçerken asıl soru, hedefin karşısında hangi adresin, hangi lokasyonun ve hangi ağ türünün görünmesini istediğinizdir. Bu sorunun cevabı da sizi datacenter, ISP, residential ya da mobil adres arasındaki seçime götürür.
Reverse proxy: sunucunun ön kapısı
Reverse proxy’yi sitenin sahibi kurar. Alan adının DNS kaydı reverse proxy’yi gösterir; ziyaretçiler ona bağlanır, o da isteği iç ağdaki uygulama sunucularına dağıtır. Web sunucusu yazılımları, yük dengeleyiciler ve içerik dağıtım ağları (CDN) bu rolü üstlenir. Tipik görevleri:
- TLS sonlandırma: sertifika reverse proxy’de durur, şifre orada çözülür; arka sunuculara iç ağdan düz ya da yeniden şifrelenmiş olarak iletilir. İç ağ tamamen güvenilir değilse bu ikinci parçayı da TLS ile şifrelemek iyi bir uygulamadır.
- Yük dengeleme ve sağlık denetimi: istekler birden çok sunucuya dağıtılır, yanıt vermeyen sunucu devreden çıkarılır.
- Önbellek ve sıkıştırma: statik içerik arka sunucuya gitmeden yanıtlanır.
- Koruma katmanı: istek boyutu sınırları, hız sınırlama ve uygulama güvenlik duvarı kuralları burada uygulanır; arka sunucuların adresleri dışarıya görünmez.
Reverse proxy şifreyi çözer, ama bu bir sızıntı değildir
Bir sitenin reverse proxy’si HTTPS trafiğini çözer, çünkü sertifika sitenin sahibine aittir ve o, sitenin bir parçasıdır. Forward proxy için durum farklıdır: istemcinin proxy’si HTTPS içeriğini ancak istemciye kendi kök sertifikasını yükleterek görebilir; bunu bilmeden kabul etmeyin.
Yan yana karşılaştırma
| Özellik | Forward proxy | Reverse proxy |
|---|---|---|
| Kimin adına çalışır | İstemcinin | Sunucunun (sitenin) |
| Kim yapılandırır | Kullanıcı ya da şirketin BT ekibi | Sitenin işletmecisi |
| İstemci haberdar mı | Evet, adresini kendisi girer | Genellikle hayır; DNS onu gösterir |
| Hedef ne görür | Proxy’nin IP’sini | Arka sunucu, reverse proxy’nin IP’sini; istemcinin IP’si başlıkla iletilir |
| HTTPS içeriğini görür mü | Hayır (CONNECT tüneli), kök sertifika yüklenmedikçe | Evet, TLS’i sitenin adına sonlandırır |
| Tipik görev | Çıkış denetimi, çıkış IP’si seçimi, test | Yük dengeleme, TLS, önbellek, koruma |
İsteğin biçimi nasıl değişir?
Fark, kablodaki istekte de görünür. Forward proxy’ye giden düz HTTP isteğinde istemci hedefin tam adresini yazar (absolute-form); reverse proxy’ye giden istekte ise yalnız yol bulunur, çünkü istemci karşısındakini sitenin kendisi sanır (RFC 9112 (yeni sekmede açılır), istek hedefi biçimleri). HTTPS hedefler için forward proxy’ye CONNECT ornek.com:443 gönderilir.
# 1) İstemciden forward proxy’ye (düz HTTP hedef)
GET http://ornek.com/fiyatlar HTTP/1.1
Host: ornek.com
Proxy-Authorization: Basic <base64(KULLANICI:PAROLA)>
# 2) İstemciden reverse proxy’ye (istemci onu site sanar)
GET /fiyatlar HTTP/1.1
Host: ornek.com
# 3) Reverse proxy’den arka sunucuya
GET /fiyatlar HTTP/1.1
Host: ornek.com
X-Forwarded-For: 203.0.113.7
Forwarded: for=203.0.113.7;proto=httpsÜçüncü istekteki başlıklar, arka sunucunun ziyaretçinin gerçek adresini öğrenmesi içindir. Forwarded başlığı RFC 7239 (yeni sekmede açılır) ile standartlaşmıştır; X-Forwarded-For ise standart dışı ama çok yaygın bir karşılığıdır (MDN: X-Forwarded-For (yeni sekmede açılır)).
Başlıklar ve güven: kime inanmalı?
X-Forwarded-For ve Forwarded başlıklarını istemci de yazabilir. Bu yüzden arka sunucu bu değerlere yalnız kendi reverse proxy’sinden geldiklerinde güvenmelidir: zincirdeki güvenilir proxy’lerin adresleri bilinir ve başlıktaki değerler sağdan sola, son güvenilir aracıya kadar okunur. Aksi halde bir ziyaretçi başlığa rastgele bir adres yazıp IP tabanlı kuralları atlatabilir.
Forward proxy tarafında durum şöyledir: bazı proxy yazılımları yapılandırmaya bağlı olarak düz HTTP isteklerine Via veya X-Forwarded-For ekler. HTTPS tüneli içindeki isteklere ise proxy başlık ekleyemez, çünkü içeriği görmez. Hedefin hangi başlıkları aldığını görmek için HTTP Proxy Kontrol aracını kullanabilirsiniz.
Zincirler ve karışık kurulumlar
Gerçek hayatta iki tür çoğu zaman aynı yolda bulunur. Bir istek; şirket ağının forward proxy’sinden, ardından ticari bir forward proxy’den çıkar, hedef sitenin CDN’ine (reverse proxy) ve oradan uygulama sunucusuna ulaşabilir. Her aracı yalnız kendi aşamasında görebildiğini görür: HTTPS kullanıldığında forward proxy’ler hedef adını, reverse proxy ise sitenin adına çözülmüş içeriği.
Bu zincirde kayıtlara hangi adresin düştüğünü izlemek öğreticidir. Sitenin CDN’i bağlantıyı ticari forward proxy’nin adresinden gelmiş olarak kaydeder. Uygulama sunucusunun gördüğü bağlantı CDN’den gelir; ziyaretçi adresi olarak X-Forwarded-For başlığında yine forward proxy’nin adresi yer alır. Sizin ağ adresiniz ise zincirin başındaki aracıların, yani şirket ağınızın ve kullandığınız proxy hizmetinin kayıtlarında kalır; çerezleriniz ve oturum açtığınız hesap ise hedefte sizi tanımlamaya devam eder.
Bir de istemcinin yapılandırmadığı, ağ geçidinde trafiği araya giren şeffaf (intercepting) proxy’ler vardır. Teknik olarak forward yönde çalışırlar ama istemci onları seçmez; kurumsal ağlarda bir politika gereği bulunurlar.
Sık karışan kavramlar
- Tünel (tunnel): RFC 9110’a göre iletileri yorumlamadan iki bağlantı arasında aktaran aracıdır. Bir forward proxy,
CONNECTisteğini kabul ettiği anda o bağlantı için tünele dönüşür; HTTPS trafiğini göremeyişinin nedeni budur. - API ağ geçidi: bir uygulamanın API’lerinin önüne konan ve kimlik doğrulama, kota ve yönlendirme yapan bileşen. İşlev olarak bir reverse proxy türüdür ve sitenin sahibine aittir.
- Yük dengeleyici: istekleri birden çok sunucuya dağıtan bileşen. HTTP düzeyinde çalışanı bir reverse proxy’dir; yalnız TCP bağlantılarını dağıtanı ise HTTP başlıklarını görmez ve değiştirmez.
- SOCKS5 proxy: HTTP’yi bilmeyen, herhangi bir TCP bağlantısını aktaran bir forward proxy’dir. İstemci onu bilerek yapılandırır; reverse proxy rolünde kullanılmaz.
- “Gizli” ya da “şeffaf” proxy: istemcinin ayarlamadığı, ağın araya koyduğu proxy. Kullanıcının seçtiği bir hizmet değil, bir ağ politikasıdır.
Kavramlar karıştığında tek bir soru işi çözer: bu aracıyı kim kurdu ve kimin isteğini temsil ediyor? İstemci kurduysa ve istemci adına bağlantı açıyorsa forward, sitenin sahibi kurduysa ve gelen istekleri karşılıyorsa reverse proxy’dir. Aynı yazılım her iki rolde de çalışabilir; rolü belirleyen yazılım değil, ağdaki konumu ve yapılandırmasıdır.
Ne zaman, hangisi?
- Kendi bağlantınızın çıkış adresini, lokasyonunu ya da ağ türünü seçmek istiyorsanız: forward proxy. Seçenekler için proxy türleri karşılaştırması yazısına bakın.
- Kendi sitenizi ölçeklemek, TLS’i tek noktada yönetmek ya da arka sunucularınızı gizlemek istiyorsanız: reverse proxy. Bu, sitenizin altyapısının bir parçasıdır; satın alınan bir proxy hizmeti değildir.
- Bir ekibin internet çıkışını denetlemek istiyorsanız: kurum içinde işletilen forward proxy.
- Ziyaretçi IP’sini uygulamada doğru kaydetmek istiyorsanız: reverse proxy’nin eklediği başlıkları yalnız güvenilir aracılardan kabul edin.
Kısacası yön, kimin çıkarına çalışıldığını belirler: forward proxy istemcinin, reverse proxy sitenin aracısıdır. Bir proxy’nin temel çalışma biçimi için proxy sunucusu nedir yazısına dönebilirsiniz.
Sık sorulanlar