歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

六種代理方式的比較

傳統代理,透明代理,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層實現,無需要特別的應用層服務在運行。但可能需要重新編譯內核。  




 



Copyright © Linux教程網 All Rights Reserved