Açıklamamız: Biz Geonode olarak proxy satışı yapıyoruz; bu nedenle bu makalede kendi ürünümüzün kullanımına karşı argümanlar ileri sürüyoruz. Proxy’lerimizi başka birinin proxy’lerinin arkasına zincirlemek ya da kendi proxy’lerimizden birkaçını sırayla kullanmak, isteklerinizi yavaşlatacak ve güvenilirliğini azaltacak; konumunuzu anlamlı bir şekilde iyileştirmeyecektir. Bunun nedeni, belirli bir sağlayıcının sınırlamasından ziyade yapısal bir sorundur ve aşağıda açıklanmaktadır. Proxy'leri zincirleme kullanmanın gerçekten iyi iki veya üç nedeni vardır ve bunlar anonimlikten ziyade yönlendirme ve erişimle ilgilidir. Amacınız anonimlikse, dürüst cevap şudur: Bu iş için özel olarak tasarlanmış bir sistem bunu düzgün bir şekilde yapar, ancak ticari proxy'lerden oluşan bir yığın bunu başaramaz.
Zincirleme Bağlantı Aslında Nedir?
Normalde: Bir proxy’ye bağlanırsınız, proxy de hedefe bağlanır. İki bağlantı, bir aracı.
Zincirleme: Proxy A'ya bağlanırsınız, proxy A proxy B'ye bağlanır, proxy B de hedefe bağlanır. Her bir atlama, bir önceki bağlantıyı sonlandırır ve yeni bir bağlantı başlatır; böylece hedef yalnızca proxy B'nin adresini görür, proxy B ise yalnızca proxy A'yı görür.
İddia edilen avantajlar, hiçbir aracının her iki ucu da bilmemesi ve yolun izlenmesinin zincirdeki her operatörün işbirliğini gerektirmesidir.
Her iki iddia da dar anlamda doğrudur, ancak pratikte özetin ima ettiğinden çok daha zayıftır. Bu makalenin geri kalan kısmı bunun nedenini ele almaktadır.
Zincir Oluşturmanın İki Yolu
İstemci tarafında zincirleme en yaygın durumdur: Bilgisayarınız A üzerinden yönlendirme yapacak şekilde yapılandırılmıştır ve A da B’ye doğru yönlendirme yapacak şekilde yapılandırılmıştır — ya da talimat almıştır. Proxychains gibi araçlar, bağlantıları yakalayarak bunları sizin kontrol ettiğiniz bir liste üzerinden yönlendirerek bunu gerçekleştirir.
Önemli olan özellik: zinciri siz seçersiniz. Her bir aktarma noktasını bilirsiniz, bunları değiştirebilirsiniz ve hiçbir operatörün işbirliğine gerek yoktur. Bu nedenle, neredeyse tüm pratik zincirleme işlemleri istemci tarafında gerçekleşir.
Sunucu tarafında zincirleme, bir sağlayıcının trafiğinizi sizin kontrol etmediğiniz bir altyapı üzerinden yönlendirmesidir. Bazı hizmetler bunu dahili olarak yapar — bağlantınızı sonlandıran ve birçok uç noktadan birinden çıkan bir ağ geçidi, teknik olarak bir zincirdir, ancak genellikle öyle tanımlanmaz.
Burada önemli olan özellik ise bunun tam tersidir: zinciri kontrol edemezsiniz ve doğrulayamazsınız. Bir sağlayıcının trafiği birkaç ülke üzerinden yönlendirdiğine dair iddiası, sizin tarafınızdan doğrulanamaz. Bu bir mimari değil, bir güven beyanıdır.
proxychains: Ne Yapar ve Sınırları Nelerdir
En iyi bilinen araçtır ve kendi açıklaması da işleyiş mekanizmasını net bir şekilde ortaya koymaktadır. proxychains, "önceden yüklenmiş bir DLL aracılığıyla dinamik olarak bağlanmış programlardaki ağla ilgili libc işlevlerine bağlanan ve bağlantıları SOCKS4a/5 veya HTTP proxy'leri üzerinden yeniden yönlendiren bir UNIX programıdır."
Bu cümle hem zekice bir yaklaşımı hem de bir sınırlamayı içermektedir.
Zekice olan yanı: Kendi başına proxy desteği olmayan programlarla çalışır. Libc düzeyinde müdahale ettiği için, sıradan soket çağrıları yapan bir uygulama, bundan haberi olmadan şeffaf bir şekilde yönlendirilir.
Sınırlılık, doğrudan ifade edersek: "yalnızca dinamik olarak bağlanmış programlarda çalışır" ve proxychains ile hedef uygulamanın "aynı dinamik bağlayıcıyı kullanmasını" gerektirir. Statik olarak bağlanmış ikili dosyalar — ki buna modern Go yazılımlarının büyük bir kısmı dahildir — bundan hiç etkilenmez. Program çalışır, doğrudan bağlanır ve hiçbir uyarı almazsınız.
Üç zincir modu desteklenir:
Kesin sıra — proxy'ler tam olarak yapılandırıldığı gibi kullanılır. Öngörülebilirdir ve tek bir çalışmayan proxy zinciri bozar. Dinamik sıra — çalışmayan proxy'ler akıllıca hariç tutulur; böylece zincir, belirttiğiniz zincir olmaması pahasına arızalardan kurtulur. Rastgele sıra — yapılandırılan uzunlukta rastgele bir alt küme; çalıştırmalar arasında çeşitlilik istediğinizde kullanışlıdır.
Protokol desteği SOCKS4, SOCKS4a, SOCKS5 ve HTTP(S)’yi kapsar; SOCKS için kullanıcı adı/şifre kimlik doğrulaması ve HTTP için temel kimlik doğrulama kullanılır.
Ayrıca, gerçekten az bilinen bir arıza modu olduğu için bilinmesi gereken bir durum vardır: "Bir işlem çatallandığında, alt işlemde DNS araması yapar ve ardından üst işlemdeki IP adresini kullanırsa, ilgili IP eşlemesi bulunamaz." Bu şekilde yapılandırılmış uygulamalar, ağ sorunları gibi görünen ancak aslında ağ sorunları olmayan hatalı davranışlar sergiler.
Gecikme Birikiyor ve Güvenilirlik Azalıyor
Bu hesaplama, gelişigüzel zincirleme kullanımına karşı en güçlü argümandır.
Gecikmeler birikir. Her bir atlama, kendi gidiş-dönüş süresine ek olarak işleme süresini de katar. 50 ms süren doğrudan bir istek, bir proxy üzerinden belki 200 ms, iki proxy üzerinden ise 400 ms sürer. Etkileşimli kullanımda bu, "kullanılabilir" ile "sinir bozucu" arasındaki farktır. Yüz bin istek gönderen bir veri toplama işi için ise bu, dört saat ile sekiz saat arasındaki farktır.
Güvenilirlik katlanır ve birden küçük sayıların çarpımı tek bir yöne gider. Her bir atlama noktası zamanın %95’inde bağımsız olarak erişilebilir ise:
| Atlama Noktaları | Başarı Oranı |
|---|---|
| 1 | %95 |
| 2 | %90,3 |
| 3 | %85,7 |
| 4 | %81,5 |
Her biri tek başına güvenilir proxy'lerden oluşan üç adımlık bir zincir, yedi istekten birini başarısız kılan bir sistemdir. Zincirdeki arızalar, tek bir atlamadaki arızalardan daha kötüdür; çünkü teşhis daha zordur — zaman aşımı, zincirin koptuğunu gösterir, hangi bağlantının koptuğunu göstermez.
Bant genişliği, atlama başına faturalandırılır. Ölçümlü iki proxy için ödeme yaparsanız, her bayt iki kez faturalandırılır. 0,79 $/GB fiyatlı iki ev tipi hizmeti zincirlemek, aynı veri için 1,58 $/GB'ye mal olur.
Verim, en yavaş hop tarafından sınırlanır ve hop eklemek, yavaşlık olasılığını artırır.
Bu maliyetlere karşılık, elde edilecek fayda önemli ölçüde olmalıdır. Genellikle öyle değildir.
Zincirleme, Anonimliğinizi Artırır mı?
Dürüst cevap şudur: reklamlarda söylendiği kadar değil ve bu tamamen operatörlerin kim olduğuna bağlıdır.
Zincirleme neyi sağlar? Hiçbir tekli atlama noktası hem adresinizi hem de hedefi görmez. A atlama noktası kim olduğunuzu ve B ile iletişim kurduğunuzu bilir. B atlama noktası ise hedefle iletişim kurduğunu bilir, ancak iletişimin kimden geldiğini bilmez. Bu, gerçek bir özelliktir.
Neden göründüğünden daha az sonuç verir?
Her iki hopu da izleyen herkes için hoplar arası korelasyon kurmak kolaydır. Her iki uca da erişimi olan bir gözlemci — zamanlama, hacim, kalıplar — hiçbir şeyi şifresini çözmeden bunları birbirine bağlayabilir. Bu, trafik analizidir ve anonimlik sistemlerinin temel sorunudur. İki ticari proxy bu sorunu çözmez.
Ortak sahiplik, zinciri çökertebilir. Her iki hop da aynı sağlayıcıya aitse veya aynı altta yatan ağı yeniden satıyorsa, ayrım sadece hayali olur. Proxy pazarındaki yeniden satıcı ilişkileri yaygındır ve her zaman açıklanmaz; aynı tedarikçiyi paylaşan iki markadan oluşan bir zincirde tek bir operatör vardır, iki değil.
Uygulama katmanı bunu tamamen bozar. Çerezler, oturum açma bilgileri, tarayıcı parmak izleri ve yazdığınız her şey, yönlendirmeden bağımsız olarak kimliğinizi ortaya çıkarır. Oturum açtığınız bir seansı taşıyan beş proxy’den oluşan bir zincir, kimliğinizin tespit edilmesinin çok yavaş bir yoludur.
Ödeme ve hesap kayıtları geriye doğru bağlantı kurar. Bu hizmetleri siz satın aldınız. Bunun bir kaydı vardır.
Şifreleme katmanlı değildir. Düz bir proxy zincirinde, her bir ara nokta TLS ile korunmayan her şeyi okuyabilir. Zincirleme, şifreleme eklemez; trafiğinizi okuyabilecek aracılar ekler. Bu, amaçlanan yönün tam tersidir ve bir sonraki bölümde ele alınacak konudur.
Tor, Zincirleme İşlemi Doğru Şekilde Gerçekleştiriyor
Ticari proxy sunucularından oluşan bir yığının neyi eksik bıraktığını gösterdiği için, referans tasarım olarak incelenmeye değer.
Tor Projesi bu farkı doğrudan şöyle ifade ediyor: "Tek bir güven ve arıza noktası oluşturan normal proxy sunucularının aksine, Tor trafiğinizi katmanlı şifreleme ile birden fazla aktarıcı üzerinden yönlendirir."
Trafik en az üç aktarıcıdan geçer ve bilgi kasıtlı olarak bölünür. İlk aktarma noktası, bir adresin Tor kullandığını görebilir ancak hedefi belirleyemez. Ortadaki aktarma noktası şifrelenmiş trafiği görür ve ne göndereni ne de nihai hedefi tanımlayabilir. Çıkış aktarma noktası, giden trafiği görür ancak kaynağını göremez — ve HTTPS kullanıldığında, içerik yerine yalnızca hedef siteyi görür.
Bunun çalışmasını sağlayan üç tasarım özelliği vardır ve manuel bir proxy zincirinde bunların hiçbiri bulunmaz:
Katmanlı şifreleme. Her aktarma noktası bir katmanı kaldırır. Bir aktarma noktası, bir sonraki aktarma noktasının ne alacağını okuyamaz. Düz bir proxy zincirinde ise her aktarma noktası, trafiğinizi istemcinizin gönderdiği haliyle görür.
Devreler, istemci tarafından yayınlanmış bir dizinden seçilir; bu seçimde, birbiriyle ilişkili aktarıcıların kullanılmasını önlemek için yol kısıtlamaları uygulanır. Manuel bir zincirde ise, satın aldığınız seçenekler arasından seçim yaparsınız ve iki sağlayıcının altyapısını paylaşıp paylaşmadığını bilemezsiniz.
Aktarıcılar, gönüllüler tarafından bağımsız olarak işletilir. Ticari proxy sağlayıcıları ise kayıtları, faturalandırma ve yasal yükümlülükleri olan şirketlerdir.
Bunların hiçbiri Tor’u evrensel bir çözüm haline getirmez — yavaştır, birçok site onu engeller ve yüksek hacimli veri toplama için uygun değildir. Önemli olan karşılaştırmadır: Eğer amacınız anonimlikse, bunun için tasarlanmış bir sistem işi görür; ticari proxy’leri üst üste koymak ise özü olmadan sadece şekli taklit eder.
Tüm Zinciri Bozan Sızıntılar
Bir zincir, en zayıf halkası kadar iyidir ve bazı yollar zinciri tamamen atlar.
DNS. En yaygın olanı budur. Çözümleyicinize doğrudan sorgu gönderilirse, trafiğiniz üç atlama noktasından geçerken İSS’niz her ana bilgisayar adını görür. SOCKS5 ile socks5h şemasını kullanın; böylece ana bilgisayar adları yerel olarak değil, proxy tarafından çözümlenir — curl’da socks5:// ile socks5h:// arasındaki fark tam olarak budur ve bu, proxy yapılandırmasında en sık gözden kaçan tek ayrıntıdır.
WebRTC. Tarayıcılarda, proxy yolunun dışındaki yerel ve genel adresleri açığa çıkarabilir.
IPv6. IPv6 bağlantısı mevcut olan, yalnızca IPv4'ü destekleyen bir zincir, bazı trafiğin doğrudan aktarıldığı anlamına gelir. Test edilmedikçe fark edilmez ve görünmez.
proxychains altındaki statik olarak bağlanmış ikili dosyalar. Yukarıda ele alındığı gibi: trafik yakalama işlemi bu durumda geçerli olmaz ve program herhangi bir uyarı vermeden doğrudan bağlanır.
Yakalama sürecinin dışında kalan her şey. Sistem güncelleyicileri, telemetri, arka plan hizmetleri. Bunlar hiçbir zaman zincir içinde yer almamıştır.
Genel kural: varsaymak yerine doğrulayın. Bir web sitesinin yabancı bir IP adresi bildirdiğini kontrol etmek, sadece zaten değişeceği belli olan şeyi teyit eder. Proxy'leri test etme kılavuzumuz, DNS, WebRTC ve IPv6'nın doğru şekilde kontrol edilmesini ele alır; bir zincir söz konusu olduğunda bu doğrulama daha da önemlidir, çünkü başarısız olabileceği daha fazla nokta vardır.
Zincirleme Kullanımın Meşru Nedenleri
Gerçek örnekler; bunların hiçbiri anonimlikle ilgili değildir.
Doğrudan erişemeyeceğiniz bir ağa ulaşmak. Kurumsal bir proxy, dışarıya çıkabilmeniz için tek yoldur ve belirli bir hedefe ulaşmak için bunun ötesinde ikinci bir proxy’ye ihtiyacınız vardır. Bu, altyapı olarak zincirleme kullanımdır ve açık ara en yaygın meşru kullanım şeklidir.
Protokol köprüleme. Uygulamanız yalnızca SOCKS'u destekliyor ancak kullanabileceğiniz proxy HTTP'dir ya da tam tersi. Yerel bir proxy, dönüştürme ve yönlendirme işlemini gerçekleştirir. Yine altyapı olarak zincirleme kullanımdır.
Yerel bir durakta işlevsellik ekleme. Önbellekleme, günlük kaydı, istek yeniden yazma veya TLS denetimi için yerel bir proxy çalıştırmak ve bunun ardından verilerin bir üst proxy'ye iletilmesi. Bu, ilk durağının herhangi bir şeyi gizlemek yerine bir işi yapmak için var olduğu bir zincirdir ve geliştirme ile test aşamalarında standart bir uygulamadır.
Doğrudan satın alamayacağınız coğrafi yönlendirme. Bazen ihtiyacınız olan çıkış konumuna yalnızca bir ara nokta üzerinden ulaşılabilir. Bu durum nadirdir ve bir zincir oluşturmadan önce sağlayıcının o konumu sunup sunmadığını kontrol etmeye değer.
Çoklu hop davranışını test etme. Birkaç proxy arkasında çalışacak bir sistem geliştiriyorsanız, bu yolu test etmek mantıklıdır.
Bunların ortak noktasına dikkat edin: zincir, daha fazla hopun daha iyi olacağı varsayımı nedeniyle değil, bir yönlendirme kısıtlaması nedeniyle mevcuttur. Kendi durumunuza uygulamanız gereken ayrım budur.
İnsanlar Ayrıca Şunu Soruyor
Proxy'leri zincirlemek sizi daha anonim hale getirir mi?
Birazcık, ama beklendiği kadar değil. Bu, hiçbir ara noktanın hem adresinizi hem de hedefi görmediği anlamına gelir. Ancak trafik korelasyonuna, sağlayıcılar arasındaki ortak sahipliğe veya çerezler, oturum açma bilgileri ve parmak izi analizi yoluyla uygulama katmanında kimlik tespitine karşı koruma sağlamaz. Basit zincirleme, şifreleme de sağlamaz — her ara sunucu, TLS’nin korumadığı her şeyi görebilir.
Kaç tane proxy’yi zincirlemeliyim?
Meşru yönlendirme nedenleriyle, kısıtlamanın gerektirdiği kadar az sayıda — genellikle iki tane. Anonimlik açısından, ticari proxy'leri zincirlemek sayı ne olursa olsun yanlış bir yaklaşımdır ve bu amaç için tasarlanmış bir sistem bunu daha iyi yapar. Her ek hop gecikmeyi artırır, arıza olasılığını katlar ve bant genişliği faturanızı ikiye katlar.
Proxychains nedir ve nasıl çalışır?
Dinamik olarak bağlanmış programlarda ağla ilgili libc işlevlerine bağlanan ve bağlantıları SOCKS4a/5 veya HTTP proxy'leri üzerinden yeniden yönlendiren bir Unix aracıdır. Kesin, dinamik ve rastgele zincir sıralaması sunar. Ana sınırlaması, yalnızca dinamik olarak bağlanmış programlarda çalışmasıdır — statik olarak bağlanmış ikili dosyalar herhangi bir uyarı vermeden doğrudan bağlanır.
Proxy zincirleme yavaş mıdır?
Evet, kaçınılmaz olarak. Her bir hop, gidiş-dönüş süresi ve işleme süresi ekler; dolayısıyla iki hop’luk bir zincir, tek bir proxy’nin size maliyeti yaklaşık olarak iki katına çıkarır. Verim, en yavaş hop tarafından sınırlanır ve her hop %95 güvenilirlikteyse, üç hop’luk bir zincir yaklaşık %86 oranında başarılı olur.
VPN ile proxy'yi zincirleyebilir miyim?
Teknik olarak evet, bu yaygın bir uygulamadır. Pratikte ise, her bir tarafın gözlemlediği durumdaki mütevazı bir değişiklik karşılığında genellikle daha fazla gecikme yaşanır. VPN sağlayıcınız hâlâ bağlandığınızı görür, proxy operatörü hâlâ isteklerinizi görür ve her iki düzenleme de uygulama katmanında kimlik tespitini engellemez.
Zincirleme, web sitelerinin beni izlemesini engeller mi?
Hayır. İzleme, çerezler, tarayıcı parmak izleri, hesap girişleri ve davranış kalıpları yoluyla gerçekleşir — bunların hiçbiri, trafiğinizin kaç ağ atlamasından geçtiğinden etkilenmez. Yönlendirme, bir sitenin kaydettiği adresi değiştirir ve siteler uzun zaman önce yalnızca adrese güvenmeyi bırakmıştır.
Tor bir proxy zinciri midir?
Tor, manuel bir zincirin sahip olmadığı üç özelliğe sahip bir zincirleme sistemidir: katmanlı şifreleme (böylece hiçbir aktarıcı bir sonrakinin ne aldığını okuyamaz), ilişkili aktarıcıları önlemek için kısıtlamalar içeren yayınlanmış bir dizinden istemci tarafından seçilen yollar ve bağımsız olarak işletilen gönüllü aktarıcılar. Tor Projesi, bunu “tek bir güven ve arıza noktası yaratan” normal proxy’lerle karşılaştırır.
Bir zincirde bant genişliği için iki kez mi ödeme yaparım?
Her iki aktarım noktası da ölçümlü ise, evet — her bayt her ikisinden de geçer ve her ikisi tarafından faturalandırılır. 0,79 $/GB fiyatlı iki ev tipi hizmet, aynı veri için 1,58 $/GB'ye mal olur. Bu, bir zincir oluşturmadan önce, zincirin bir sorunu gerçekten çözüp çözmediğini kontrol etmek için basit bir nedendir.
Sonuç
Proxy zincirleme, bir gizlilik tekniği olarak pazarlanan bir yönlendirme tekniğidir; ancak bu ikisi aynı şey değildir.
Yönlendirme olarak bakıldığında, bazen tam olarak doğru bir yöntemdir: kurumsal bir proxy üzerinden başka bir proxy gerektiren bir hedefe ulaşmak, SOCKS ile HTTP arasında köprü kurmak veya önbellekleme ve günlük kaydı için önüne yerel bir proxy yerleştirmek gibi. Bu durumlarda zincir, bir kısıtlama nedeniyle mevcuttur ve ekstra gecikme, bu yolun bedelidir.
Gizlilik açısından ise, güçlü bir versiyonu bulunan bir şeyin zayıf bir versiyonudur. Manuel bir zincir şifreleme sağlamaz; dolayısıyla her bir ara sunucu, TLS'nin korumadığı her şeyi okuyabilir. İki sağlayıcının altyapıyı paylaşıp paylaşmadığını size söyleyemez. Trafik korelasyonu konusunda hiçbir şey yapmaz ve kimlik tespitinin aslında gerçekleştiği yer olan çerezler, oturum açma bilgileri ve parmak izleri konusunda da hiçbir şey yapmaz.
Bu arada maliyetler kesindir. Gecikme artar, güvenilirlik azalır ve ölçümlenen bant genişliği iki kat faturalandırılır. Bir zincir kurmayı düşünüyorsanız, sorulması gereken soru, bunun hangi belirli yönlendirme kısıtlamasını çözdüğüdür. Cevap “daha fazla atlama daha güvenli görünüyor” ise, matematik aleyhinize işler.
