1. 程式人生 > >正向代理/反向代理/透明代理/透明模式

正向代理/反向代理/透明代理/透明模式

1、正向代理(forward)是一個位於客戶端和原始伺服器(origin server)之間的伺服器,為了從原始伺服器取得內容,客戶端向代理髮送一個請求並指定目標(原始伺服器),然後代理向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設定才能使用正向代理。

2、反向代理(reverse proxy)正好相反,對於客戶端而言它就像是原始伺服器,並且客戶端不需要進行任何特別的設定。客戶端向反向代理的名稱空間(name-space)中的內容傳送普通請求,接著反向代理將判斷向何處(原始伺服器)轉交請求,並將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。

3、兩者區別
從用途上來講:
正向代理的典型用途是為在防火牆內的區域網客戶端提供訪問Internet的途徑,正向代理還可以使用緩衝特性減少網路使用率。
反向代理的典型用途是將防火牆後面的伺服器提供給Internet使用者訪問,反向代理還可以為後端的多臺伺服器提供負載平衡,或為後端較慢的伺服器提供緩衝服務。另外,反向代理還可以啟用高階URL策略和管理技術,從而使處於不同web伺服器系統的web頁面同時存在於同一個URL空間下。
從安全性來講:
正向代理允許客戶端通過它訪問任意網站並且隱藏客戶端自身,因此你必須採取安全措施以確保僅為經過授權的客戶端提供服務。
反向代理對外都是透明的,訪問者並不知道自己訪問的是一個代理。

而squid是一個forword/reverse proxy,兩個功能兼備,一般可以作為區域網的上網快取,此時作為正向代理。一般伺服器會讓squid作為前端,那就是充當反向代理,反向代理有很多軟體都可以,比如nginx、lighttpd,但他們兩個一般做不了正向代理。

4、透明代理(簡單代理):透明代理的意思是客戶端根本不需要知道有代理伺服器的存在,它改編你的request fields(報文),並會傳送真實IP。注意,加密的透明代理則是屬於匿名代理,意思是不用設定使用代理了,例如Garden 2程式。

如何使用透明代理

透明代理技術中的透明是指客戶端感覺不到代理的存在,不需要在瀏覽器中設定任何代理,客戶只需要設定預設閘道器,客戶的訪問外部網路的資料包被髮送到預設閘道器,而這時預設閘道器執行有一個代理伺服器,資料實際上被被重定向到代理伺服器的代理埠(如8080),即由本地代理伺服器向外請求所需資料然後拷貝給客戶端。理論上透明代理可以對任何協議通用。

但是在這種情況下客戶端必須正確設定DNS伺服器。因為現在瀏覽器不設定任何代理。則DNS查詢必須由browser來解析,也就是要由客戶端必須在TCP/IP中設定的正確的DNS伺服器,其完成dns解析。

私有網地址為192.168.1.*, 其中客戶機是192.168.1.100,防火牆機器網絡卡是192.168.1.1。透明web代理被安裝在防火牆機器上並配置埠為8080。核心使用iptables把與防火牆埠80的連線重定向到代理服務。

5、透明模式的防火牆就好象是一臺網橋(非透明的防火牆好象一臺路由器),網路裝置(包括主機、路由器、工作站等)和所有計算機的設定(包括IP地址和閘道器)無須改變,同時解析所有通過它的資料包,既增加了網路的安全性,又降低了使用者管理的複雜程度。

防火牆使用透明代理技術,這些代理服務對使用者也是透明的,使用者意識不到防火牆的存在,便可完成內外網路的通訊。當內部使用者需要使用透明代理訪問外部資源時,使用者不需要進行設定,代理伺服器會建立透明的通道,讓使用者直接與外界通訊,這樣極大地方便了使用者的使用。 一般使用代理伺服器時,每個使用者需要在客戶端程式中指明要使用代理,自行設定Proxy引數(如在瀏覽器中有專門的設定來指明HTTP或FTP等的代理)。而透明代理服務,使用者不需要任何設定就可以使用代理伺服器,簡化了網路的設定過程。

透明代理的原理如下:假設A為內部網路客戶機,B為外部網路伺服器,C為防火牆。當A對B有連線請求時,TCP連線請求被防火牆擷取並加以監控。擷取後當發現連線需要使用代理伺服器時,A和C之間首先建立連線,然後防火牆建立相應的代理服務通道與目標B建立連線,由此通過代理伺服器建立A 和目標地址B的資料傳輸途徑。從使用者的角度看,A和B的連線是直接的,而實際上A 是通過代理伺服器C和B建立連線的。反之,當B對A有連線請求時原理相同。由於這些連線過程是自動的,不需要客戶端手工配置代理伺服器,甚至使用者根本不知道代理伺服器的存在,因而對使用者來說是透明的。

透明代理與透明模式都可以簡化防火牆的設定,提高系統安全性。但兩者之間也有本質的區別:工作於透明模式的防火牆使用了透明代理的技術,但透明代理並不是透明模式的全部,防火牆在非透明模式中也可以使用透明代理。