天天看點

透明代理

透明代理

在網絡上常見的代理伺服器有三種:

1. 标準的代理緩沖伺服器

一個标準的代理緩沖服務被用于緩存靜态的網頁(例如:html檔案和圖檔檔案等)到本地網絡上的一台主機上(即代理伺服器)。當被緩存的頁面被第二次通路的時候,浏覽器将直接從本地代理伺服器那裡擷取請求資料而不再向原web站點請求資料。這樣就節省了寶貴的網絡帶寬,而且提高了通路速度。但是,要想實作這種方式,必須在每一個内部主機的浏覽器上明确指明代理伺服器的IP位址和端口号。用戶端上網時,每次都把請求送給代理伺服器處理,代理伺服器根據請求确定是否連接配接到遠端web伺服器擷取資料。如果在本地緩沖區有目标檔案,則直接将檔案傳給使用者即可。如果沒有的話則先取回檔案,先在本地儲存一份緩沖,然後将檔案發給用戶端浏覽器。

2. 透明代理緩沖伺服器

透明代理緩沖服務和标準代理伺服器的功能完全相同。但是,代理操作對用戶端的浏覽器是透明的 (即不需指明代理伺服器的IP和端口)。透明代理伺服器阻斷網絡通信,并且過濾出通路外部的HTTP(80端口)流量。如果用戶端的請求在本地有緩沖則将 緩沖的資料直接發給使用者,如果在本地沒有緩沖則向遠端web伺服器送出請求,其餘操作和标準的代理伺服器完全相同。對于Linux作業系統來說,透明代理使用Iptables或者Ipchains實作。因為不需要對浏覽器作任何設定,是以,透明代理對于ISP(Internet伺服器提供商)特别有用。

3. 反向代理緩沖伺服器

反向代理是和前兩種代理完全不同的一種代理服務。使用它可以降低原始WEB伺服器的負載。反向 代理伺服器承擔了對原始WEB伺服器的靜态頁面的請求,防止原始伺服器過載。它位于本地WEB伺服器和Internet之間,處理所有對WEB伺服器的請 求,組織了WEB伺服器和Internet的直接通信。如果網際網路使用者請求的頁面在代理伺服器上有緩沖的話,代理伺服器直接将緩沖内容發送給使用者。如果沒 有緩沖則先向WEB伺服器送出請求,取回資料,本地緩存後再發送給使用者。這種方式通過降低了向WEB伺服器的請求數進而降低了WEB伺服器的負載。

實驗裝置:Red Hat Enterprise Linux 5虛拟機一台,XP系統主機一台

拓撲圖:

透明代理

用戶端配置:

配置網關為:192.168.102.254

配置首選DNS為:222.88.88.88

透明代理

squid伺服器配置

安裝squid

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom #建立挂載點進行CD光牒挂載

[root@localhost ~]# cd /mnt/cdrom/Server

[root@localhost Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm

[root@localhost ~]# vim /etc/resolv.conf #指明DNS伺服器

透明代理

[root@localhost ~]# vim /etc/sysctl.conf #開啟資料包轉發功能

透明代理

[root@localhost ~]# vim /etc/squid/squid.conf #編輯squid配置腳本

透明代理

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.102.0/24 -p udp --dport 53 -o eth0 -j MASQUERADE #添加DNS的nst轉換

[root@localhost ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j REDIRECT --to-ports 3128 #添加squid的端口重定向

[root@localhost Server]# service squid restart #重新開機squid服務

Stopping squid: ....... [ OK ]

Starting squid: ........... [ OK ]

測試:

用PC1通路百度首頁

透明代理
透明代理

上述實驗表明實驗成功!

附:

squid代理服務中常用到的控制元素

acl aclname src ip-address/netmask ... (clients IP address) 基于來源ip位址進行控制

acl aclname src addr1-addr2/netmask ... (range of addresses)基于來源ip位址範圍進行控制

acl aclname dst ip-address/netmask ... (URL host's IP address) 基于目标ip位址進行控制

acl aclname myip ip-address/netmask ... (local socket IP address) 基于本地ip進行控制

acl aclname arp mac-address ... (xx:xx:xx:xx:xx:xx notation) 基于mac位址進行控制

acl aclname srcdomain .foo.com ... # reverse lookup, client IP基于來源域進行控制

acl aclname dstdomain .foo.com ... # Destination server from URL基于目标域進行控制

acl aclname time [day-abbrevs] [h1:m1-h2:m2] 基于時間進行控制

day-abbrevs:

S - Sunday

M - Monday

T - Tuesday

W - Wednesday

H - Thursday

F - Friday

A - Saturday

繼續閱讀