歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> Linux業界 >> 傳統代理,透明代理,plug-gw,Apache反向代理,IP偽裝,端口轉發

傳統代理,透明代理,plug-gw,Apache反向代理,IP偽裝,端口轉發

日期:2017/2/27 11:12:38   编辑:Linux業界

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


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