天天看點

重量級代理緩存伺服器Squid

Squid簡介:

Squidcache(簡稱為Squid)是一個流行的自由軟體(GNU通用公共許可證)的代理伺服器和Web緩存伺服器。Squid有廣泛的用途,從作為網頁伺服器的前置cache伺服器緩存相關請求來提高Web伺服器的速度,到為一組人共享網絡資源而緩存網際網路,域名系統和其他網絡搜尋,到通過過濾流量幫助網絡安全,到區域網路通過代理上網。Squid主要設計用于在Linux一類系統運作。

正向代理:區域網路通路外網

1、snat模式

網絡層次:網絡層

如果區域網路的使用者通路外網走snat模式,同一個資料包,改變資料標頭部的來源位址,再把資料包發到internet。

安全控制:基于網絡層傳輸層

網絡層安全:來源位址目标位址

傳輸層安全:協定:tcp、udp端口号:來源端口、目标端口标志位:syn、ack、finrst

2、代理伺服器模式

不改變資料標頭資訊,把資料包代理給internet的伺服器

網絡層次:應用層

基于應用層的過濾:微軟開發的軟體防火牆ISAinternetsecurityaccelerate

Linux系統的squid伺服器

安全控制:網絡層傳輸層應用層

網絡層安全:來源位址目标位址

傳輸層安全:協定:tcp、udp端口号:來源端口、目标端口标志位:syn、ack、finrst

應用層安全:協定:http、ftp、pop、smtp、p2p内容過濾url過濾、域名過濾

代理伺服器的缺陷:基于少量的應用協定,支援的應用少。

反向代理:internet使用者通路區域網路伺服器

Squid做反向代理伺服器,把使用者的請求轉發到後方的真實的伺服器,可以做到負載均衡的效果。

squid正向代理拓撲圖:

重量級代理緩存伺服器Squid

Squid的應用

一:實作正向代理

二:安全控制

三:透明代理

四:反向代理

一:實作正向代理

準備工作:

1、設定内網接口eth0接口,和外網接口eth1的ip位址

重量級代理緩存伺服器Squid
重量級代理緩存伺服器Squid

安裝squid伺服器的rpm包

rpm-ivhsquid-2.6.STABLE21-3.el5.i386.rpm

打開squid的配置檔案

919http_port3128

2994visible_hostname192.168.2.100#當通路出錯時,squid将會傳回一個出錯頁面,這個出錯頁面是由192,。168.2.100(這裡可以是任意名稱)提示産生的。

啟動squid服務

重量級代理緩存伺服器Squid

切換到/var/spool/squid目錄将會看到16個一級子目錄

重量級代理緩存伺服器Squid

每一個子目錄下面将會形成256個二級子目錄,切換到00目錄下

重量級代理緩存伺服器Squid

做簡單的測試:内網通路外網

設定區域網路中的一台主機的浏覽器屬性--連接配接--區域網路設定--代理伺服器,添加代理伺服器的ip位址和端口

重量級代理緩存伺服器Squid

通路失敗得到一個出錯頁面是由192.168.2.100産生的

重量級代理緩存伺服器Squid
重量級代理緩存伺服器Squid

因為squid的預設政策是除了他自己可以通路外網外,其他拒絕所有

打開squid的配置檔案,定義允許内網使用者上網的元素,添加政策

重量級代理緩存伺服器Squid

重新開機squid服務

打開浏覽器再次測試上網成功

重量級代理緩存伺服器Squid

第一次通路頁面傳回類型是TCP_MISS,說明還沒有被緩存

重量級代理緩存伺服器Squid

再次通路将是:TCP_IMS_HIT說明資料已經被緩存,是從squid的緩存目錄中得到的資料

重量級代理緩存伺服器Squid

二:安全控制

1,拒絕192.168.2.200這台主機上網,定義政策,建立通路控制清單。

aclbadpcsrc192.168.2.200/255.255.255.255

http_accessallowlocalhost

http_accessdenybadpc

http_accessallowall

測試通路http://www.sina.com,将不能通路到出現錯誤。

重量級代理緩存伺服器Squid

2,控制一個位址段,拒絕192.168.2.200-192.168.2.210這台主機上網,定義政策,建立通路控制清單。

重量級代理緩存伺服器Squid

測試通路http://www.sina.com,将不能通路到出現錯誤

重量級代理緩存伺服器Squid

換一個位址比如說192.168.2.220,測試一下,就可以上網了

重量級代理緩存伺服器Squid

3,定義基于時間控制的政策,初試時間要小于結束時間,被拒絕的主機上班時間不能上網,下班可以

aclworktimetime06:00-20:00

http_accessdenybadpcworktime

Ip位址改為192.168.2.200,現在的時間為

root@localhost~]#date102509252013

FriOct2509:25:00PDT2013

上班時間

測試通路http://www.sina.com,将是拒絕的

重量級代理緩存伺服器Squid

修改時間為下班時間再次通路

[root@localhost~]#date102521252013

FriOct2521:25:00PDT2013

重量級代理緩存伺服器Squid

用!取反也可以

http_accessallowlocalhost

http_accessallowbadpc!worktime

http_accessdenyall

下班時間允許通路

重量級代理緩存伺服器Squid

4,基于URL的安全控制,定義通路政策元素,基于url的控制元素是url_regex。

aclbadsiteurl_regex-ihttp://www.sina.com.cn

http_accessdenybadsite

http_accessallowall

http_accessdenyall

通路新浪網測試,被拒絕

重量級代理緩存伺服器Squid

結合通配符*号使用,在url中任何以.sina.com.cn為結尾的網站都是被拒絕的

aclbadsiteurl_regex-ihttp://.*.sina.com.cn

http_accessdenybadsite

http_accessallowall

http_accessdenyall

重量級代理緩存伺服器Squid

5,基于url的控制,任何中間出現.sina,兩邊是任意字元的網站都是被拒絕的

aclbadsiteurl_regex-ihttp://.*.sina.*

http_accessdenybadsite

http_accessallowall

http_accessdenyall

重量級代理緩存伺服器Squid
重量級代理緩存伺服器Squid

6,基于網頁内容圖檔的過濾,政策元素類型是urlpath_regex,

aclbadcontenturlpath_regex-i\.jpg$

aclbadcontenturlpath_regex-i\.png$

aclbadcontenturlpath_regex-i\.gif$

http_accessdenybadcontent

重量級代理緩存伺服器Squid

7、基于域名的控制,政策元素類型是dstdomian,禁止發往sina.com.cn與baidu.com這兩個域的任何主機的任何請求。

aclsinadstdomain.sina.com.cn

aclbaidudstdomain.baidu.com

http_accessdenysina

http_accessdenybaidu

http_accessallowall

http_accessdenyall

重量級代理緩存伺服器Squid
重量級代理緩存伺服器Squid

三:squid做透明代理

透明代理的原理:

當内網的使用者,不知道代理伺服器的代理端口和ip位址時,要想上網就不能走正向代理。

使用者的網管指向代理伺服器的内卡位址192.168.2.100,當發送一個資料包到達代理伺服器的内卡位址時,在系統内部,代理伺服器會把原資料包端口80替換為代理伺服器的端口3128端口,然後資料包到達代理伺服器,代理伺服器有緩存就直接發給使用者,如果沒有,把資料包發往外網,端口的替換需要靠iptables的nat表的PREROTING鍊路由判斷之前來實作的。

但是,代理伺服器的代理功能有限僅限于httpftp等協定,而資料標頭部的目标ip位址的解析需要靠dns協定,dns是不能被代理伺服器代理的,是以nds的解析需要靠SNAT技術,而snat的實作,需要linux的軟體防火牆netfilter的iptables架構。

要做nat轉換,打開linux的資料包轉發功能/etc/sysctl.conf

net.ipv4.ip_forward=1

Sant的實作是靠iptables架構中的nat表中的POSTROUTING鍊

iptables-tnat-APOSTROUTING-s192.168.2.0/24-pudp--dport53-oeth1-jSNAT--to192.168.1.4

端口實作是重定向靠iptables的nat表的路由判斷之前PREROUTING鍊

[root@localhost~]#iptables-tnat-APREROUTING-s192.168.2.0/24-ptcp--dport80-jREDIRECT--to-port3128

告訴squid要實作透明代理打開配置檔案

931http_port3128transparent

打開内網使用者在浏覽器取消代理功能,測試dns請求,以及上網

重量級代理緩存伺服器Squid
重量級代理緩存伺服器Squid

四:squid做反向代理伺服器

反向代理伺服器的原理:

反向代理伺服器的工作原理是DNAT技術,外網使用者通路内網中的伺服器時,使用者通路的代理伺服器的外卡接口位址,代理伺服器把請求轉發給後方内網真是的伺服器。

Squid做反向代理伺服器的拓撲圖:

重量級代理緩存伺服器Squid

Squid做反向代理伺服器實作後方web伺服器的通路

1,定義虛拟主機代理位址和端口

http_port192.168.1.4:80vhost

2,設定反向代理功能

1196行cache_peer192.168.2.210parent800originserver

注釋:cache_peer指的是後方真是web伺服器

Parent指的是代理伺服器的類型,代理伺服器與後方真是伺服器之間的關系

80指的是代理端口

0指的是後方伺服器的任意端口

Originserver指的是原始伺服器,也就是代理伺服器

測試一下通路http://192.168.1.4/index.html

重量級代理緩存伺服器Squid