歡迎您光臨本站 註冊首頁

六種代理方式的比較

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  傳統代理,透明代理,plug-gw,Apache反向代理,IP偽裝,埠轉發六種方式的比較

第一部分 各種代理方式的特點和包重寫過程

Squid傳統代理和透明代理:

在Linux上用得最廣泛的傳統代理和透明代理是Squid.默認的Squid配置成傳統代理的方式。在這種方式下,windows客戶端要在瀏覽器中設置代理伺服器的地址和埠號,客戶端所要做的工作其實很少。只需要指定代理伺服器的IP地址和埠號即可,其它剩下的一切都交給代理伺服器去做。在這種方式下的一個明顯特點是windows客戶機瀏覽網頁,打入一個URL時,DNS也由代理伺服器去做。解析DNS的過程是根據Linux伺服器中設置的/etc/host.conf文件中的解析順序進行的。
一般的順序是先查找/etc/hosts,然後找DNS資料庫bind。在這種情況下的有趣例子是如果你設置了某一站點的域名為你內部網中的一台伺服器,則先去訪問內部網伺服器了。如你設置192.168.11.3 www.yahoo.com 則你的瀏覽器就不可能去訪問互聯網上的yahoo站點了。
但假若你設置了透明代理的話,則解析的DNS順序便變為windowshosts然後再Linux的DNS資料庫。不再可能檢查Linux伺服器上的/etc/hosts文件了。
關於透明代理的介紹,見文章薈萃中的另一篇文章《如何在Linux中設置透明代理》

傳統代理和透明代理的包重寫過程:見下圖


[PC] A [Linux squid server] B
__192.168.11.12_|_____192.168.11.5__|___1.2.3.4_________Internet

(圖一)

在A機用戶的瀏覽器上設置代理為192.168.11.5,埠號為3128,通過B上網。
假如訪問www.linuxforum.net,實際上只要你設定了代理的話,用戶端的瀏覽器只是和Linux Squid伺服器進行通信而決不和互聯網上的www.linuxforum.net伺服器交談,首先由squid代理伺服器對
www.linuxforum.net進行解析(查找/etc/host.conf中的解析順序,先是/etc/hosts然後是DNS查找)
進行到IP地址為202.106.124.185,最後由代理伺服器代替用戶端對該IP地址進行HTTP訪問,回復回來的信息先緩存到squid cache中,同時拷貝一份到用戶端。下次若該用戶或其它用戶訪問同樣的頁面時則可以從squid cache中調用節省時間。
透明代理的過程和傳統代理差不多,區別在
1。DNS解析過程不同,前面已經說過
2。用透明代理網關必須設置為squid代理伺服器的IP地址,而傳統代理不需要。
3。透明代理需要設置防火鏈的input規則,其餘的和squid傳統代理方式相同。

plug-gw:
plug-gw是FWTK中所帶的通用代理程序。可用來代理象POP3,HTTP等應用層服務。

[PC] A [Linux POP3] C [Linux plug-gw]B
__192.168.11.12_|______|192.168.11.1____192.168.11.5__|___1.2.3.4__Internet

(圖二)

假如內部網段上有一台Linux POP3伺服器C(192.168.11.1),希望外部用戶能收取郵件可在機器B上設定plug-gw的POP3代理如下:

放下面的行到/etc/rc.d/rc.local
/usr/local/etc/plug-gw -daemon 1.2.3.4:110 -name plug-gw-pop3 & 文件/usr/local/etc/netperm-table中有下面一行
plug-gw-pop3: port 110 * -plug-to 192.168.11.1 -port 110

則用戶設定outlook express中的POP3伺服器地址為1.2.3.4.當收郵件時對B機的外部介面而言,是在1.2.3.4的110埠接受用戶請求,隨後被plug-gw處理,在內部網段上,由192.168.11.5對192.168.11.1的110埠發出請求。把所得的數據由1.2.3.4介面拷貝給外部用戶。

Apache反向代理。
包重寫過程與plug-gw類似

注意:上面所講的三種情況下,請求過程被分開兩次,中間一般是squid代理伺服器或者plug-gw,Apache伺服器,數據在伺服器的兩塊網卡中間做拷貝的動作,但是兩次請求過程的源地址是隨機分配的高端地址,是不同的。在1024 和65535之間。但是一般而言,TCP/IP分配的隨機高端地址大多數是在1024--5000之間分配。例如:對於plug-gw來說:
如果某外部撥號用戶的IP地址為5.6.7.8。假如地址和埠如下:
源地址和埠號和目標地址埠與為:
5.6.7.8 1038 1.2.3.4 110
被plug-gw改寫請求為:
192.168.11.5 1045 192.168.11.1 110

被192.168.11.1回復的數據被拷貝給外部客戶。

但是並非所有情況下源高端隨機分配的地址都在1024--5000之間。IP偽裝就是例外:

IP偽裝:

[PC] A [Linux MASQ server] B
__192.168.11.12_|_____192.168.11.5__|___1.2.3.4_________Internet

(圖三)

如上圖,PC A要通過B偽裝上網。如要訪問www.linuxforum.net,則偽裝時的包重寫過程如下:

源地址/埠號和目標地址/埠號為:
192.168.11.12 1047 202.106.124.185 80
被偽裝后的源地址和埠號和目標地址/埠號為:
1.2.3.4 62334 202.106.124.185 80

反回的包為
202.106.124.185 80 -- 1.2.3.4 62334
再被重寫給PC A為:
202.106.124.185 80 -- 192.168.11.12 1047

一般來說,IP偽裝后的源地址通常>60000,且在61000--64999之間。
在防火牆上維護著一張IP偽裝的對照表。用命令/sbin/ipchains -M -L -n可以看到如:
[root@proxy etc]# /sbin/ipchains -M -L -n
IP masquerading entries
prot expire source destination ports
UDP 02:18.86 192.168.11.12 205.188.179.41 1215 (62615) -> 4000
TCP 17:03.20 192.168.11.12 205.188.248.57 1049 (62584) -> 80

從ports欄你可以對照兩次源地址的匹配。

埠轉發(port forwarding):
見文章薈萃中另一篇文章《利用埠轉發由內部網對外提供網路服務》


第二部分 各種代理方式的適用情況和優缺點

各種代理方式的作用:
1. IP偽裝,Squid傳統代理和透明代理適合讓區域網上無真實IP地址的用戶訪問Internet.
2. Apache反向代理,plug-gw通用代理,埠轉發適合讓外部用戶訪問區域網內無真實IP地址的伺服器。

各種代理方式的優缺點:
1. Squid的優點是對客戶端要求很少,只要能連通squid伺服器即可。但是需要每台機器都設置代理伺服器IP地址和埠號
2. Squid透明代理的優點是不需要每個客戶機都設置代理地址和埠與,簡化了用戶端配置。但是需要每台客戶機的默認網關都設為squid代理伺服器,且需要客戶端來做DNS解析
3. IP偽裝可適合大多數應用層服務,不象squid僅支持http和ftp.但也需要客戶的默認網關設為防火牆的地址。且不象squid有cache功能
4. plug-gw可代理各種伺服器象HTTP,POP3等。但Apache反向代理則只能代理http反向請求
5. 埠轉發適合大多數服務。與具體的應用無關。且速度快,在內核IP層實現,無需要特別的應用層服務在運行。但可能需要重新編譯內核。


[火星人 ] 六種代理方式的比較已經有807次圍觀

http://coctec.com/docs/linux/show-post-70064.html