天天看點

squid配置及說明文檔,很好很詳細

操作環境:(Redh5.8)

Client:192.168.8.70          (如圖:機器為8.70)

Squid:192.168.8.71(eth0)   (如圖:機器為8.71)

      172.16.1.16(eth1)   (如圖: 機器為8.72)

Web:  172.16.1.17

圖:

squid配置及說明文檔,很好很詳細

(注:實驗過程中涉及的dns相關内容沒有做)

Squid的主要功能:

1.支援HTTP,FTP協定

2.采用階層化緩存結構

3.支援代理SSL

4.實作了ICP(Internet緩存協定,HTCP(超文本緩存協定)等)

5.支援透明代理

6.支援WCCP(Web緩存通信協定)

7.支援豐富的通路控制清單功能

8.支援HTTP加速功能,實作反向代理

9.支援SNMP

10.支援緩存DNS查詢

一.正向代理(标準代理)

 1. 一個标準的代理緩沖服務被用于緩存靜态的網頁(例如:html檔案和圖檔檔案等)到本地網絡上的一台主機上(即代理伺服器)。當被緩存的頁 面被第二次通路的時候,浏覽器将直接從本地代理伺服器那裡擷取請求資料而不再向原web站點請求資料。這樣就節省了寶貴的網絡帶寬,而且提高了通路速度。

squid配置及說明文檔,很好很詳細

2. 通路過程(如上圖)

@1.用戶端使用某一端口連接配接代理伺服器3128端口,請求web頁面(連接配接的網卡為eth0)

@2.代理伺服器向DNS請求得到相應的IP位址,然後,代理伺服器使用某一端口,向該IP位址的80端口發起web連接配接請求,請求web頁面。(連接配接的網卡為eht1)

@3.~@5收到響應的web頁面後,代理伺服器把該資料傳送給用戶端。并檢視自己有沒有緩存,若沒有緩存一份

@6.~@7.當用戶端再次通路時,直接通過緩存返給用戶端資訊

3.具體配置

(1)裝包

[root@tx2 ~]# yum install -y squid

(2)開啟包轉發

[root@tx2 ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

(3)修改配置檔案

[root@tx2 ~]# vim /etc/squid/squid.conf

637  http_access allow all         //給所有的用戶端開啟代理服務

921  http_port 192.168.8.71:3128     //設定squid監聽的端口//192.168.8.71的ip是squid與用戶端連結的網卡的ip位址。

1579 cache_mem 8 MB     設定squid占用的實體記憶體,一般為實體記憶體的1/3(代表squid能使用多少記憶體,如果你的記憶體足夠可以調的稍微大一些)

1786 cache_dir ufs /var/spool/squid 100 16 256  設定緩存的位置

       @1.ufs  :同步,有請求過來先把得到的資料寫入磁盤再處理請求

       @2.aufs :異步,先響應請求再把資料寫入磁盤

       @3.100  :M,緩存的資料大小

       @4.16   :1級子目錄的數量

       @5.256  :2級子目錄的數量

1842    cache_swap_low 90   最低“水位線“

//95:代表cache 占用swap的空間最多是百分之95,如果大于百分之95,squid會自動删除之前儲存的資料

1843 cache_swap_high 95  最高“水位線“

//90: 代表删除的時候還是會儲存最新的百分之90

2974 cache_effective_user squid  通知系統是以squid使用者的身份去執行

4. 配置web端的http服務

#yum install -y httpd

#cd /var//ww/html

#echo “helo tx” > index.html

#/etc/init.d/httpd start

5. 配置client端的浏覽器

@1.點選edit,然後點選edit下的Preferences

squid配置及說明文檔,很好很詳細

@2.點選Advanced----->Network-------->Settings

squid配置及說明文檔,很好很詳細

@3.如圖所示

squid配置及說明文檔,很好很詳細

配置完成

6.client端測試

squid配置及說明文檔,很好很詳細

二.Squid的透明代理

 1.透明代理緩沖服務和标準代理伺服器的功能完全相同。但是,代理操作對用戶端的浏覽器是透明的(即不需指明代理伺服器的IP和端口)。透明代 理伺服器阻斷網絡通信,并且過濾出通路外部的HTTP(80端口)流量。如果用戶端的請求在本地有緩沖則将緩沖的資料直接發給使用者,如果在本地沒有緩沖則 向遠端web伺服器送出請求,其餘操作和标準的代理伺服器完全相同。

squid配置及說明文檔,很好很詳細

  2通路過程

@1.用戶端向DNS請求,得到相應的IP位址。然後,用戶端使用某一端口,向該IP位址的80端口發起web連接配接請求,請求web頁面。

@2~@3.當該請求包通過透明代理伺服器時,被防火牆将該資料包重定向到代理伺服器的綁定端口3128。于是,透明代理伺服器用某一端口發起web連接配接請求,請求web頁面。

@4~@5收到響應的web頁面後,代理伺服器把該資料傳送給用戶端。并檢視自己有沒有緩存,若沒有緩存一份

(1)修改配置檔案

http_port 192.168.8.71:3128 transparent

(2)配置防火牆規則

[root@tx2 ~]# iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

//所有192.168.0.0這個網段通路squid的80端口,都由防火牆轉發到3128的squid服務端口

[root@tx2 ~]# iptables -t nat -L

Chain PREROUTING (policy ACCEPT)

target     prot opt source               destination        

REDIRECT   tcp  --  192.168.0.0/24       anywhere            tcp dpt:http redir ports 3128

Chain POSTROUTING (policy ACCEPT)

Chain OUTPUT (policy ACCEPT)

[root@tx2 ~]# iptables -t nat -F

[root@tx2 ~]# service squid restart

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

Starting squid: .                                          [  OK  ]

(3)用戶端取消代理

squid配置及說明文檔,很好很詳細

(4)配置用戶端網觀

[root@tx1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

添加GATEWAY=“squid的ip”

[root@tx1 ~]# /etc/init.d/network restart

(5)測試

squid配置及說明文檔,很好很詳細

三.反向代理(web加速)

    1.反向代理是和前兩種代理完全不同的一種代理服務。使用它可以降低原始WEB伺服器的負載。反向代理伺服器承擔了對原始WEB伺服器的靜态頁 面的請求,防止原始伺服器過載。

squid配置及說明文檔,很好很詳細

2.通路過程

@1.用戶端通過浏覽器向DNS伺服器發送請求,由客戶所在地的DNS伺服器解析IP位址,并将結果傳回給使用者。

@2.客戶收到DNS傳回的伺服器IP位址,重新向DNS伺服器指向的IP位址發送通路請求。

@3.squid 伺服器接收到使用者的請求後,查詢自身緩存中是否有使用者請求内容,有則直接發送給用戶端

@4. 有則通過内部DNS輪詢查詢空閑伺服器,并将客戶請求發送到 該伺服器,在擷取到使用者資料并傳回給使用者的同時保留一份在自己本身的緩存當中。

在使用者看來,自己通路的是www.96333.com這個伺服器,實際上真 正的WEB伺服器為SQUID緩存後面的伺服器或者伺服器叢集,通過外部DNS做CNAME轉向,将使用者請求轉發到内部真正的web伺服器上去。

(1)[root@tx2 ~]# vim /etc/squid/squid.conf

923 http_port 80 transparent

924 cache_peer 172.16.1.17 parent 80 0 originserver no-query name= www

originserver 源點伺服器

no-query     不詢問

name=www     用來區分相似的查詢

(其他選項不變)

(2)測試

squid配置及說明文檔,很好很詳細

四.通路控制(ACL)

1.ACL元素

文法定義如下:

acl aclname acltype string1

acl aclname acltype "file"

//acltype可以是(src、dst、srcdomain、dstdomain、url_regex、urlpath_regex、time、port、proto、method)

(1) src:源位址。定義如下:

acl aclname src ip-address/netmask ... 客戶ip位址

acl:aclname src addr1-addr2/netmask ... 位址範圍

(2)dst:目标位址

acl aclname dst ip-address/netmask ...

(3)srcdomain:客戶所屬的域

acl aclname srcdomain foo.com ...

(4)dstdomain:請求伺服器所屬的域

acl aclname dstdomain foo.com ...

(5)time:通路時間

acl aclname time [day-abbrevs] [h1:m1-h2:m2][hh:mm-hh:mm]

1 S:指代Sunday

2 M:指代Monday

3 T:指代Tuesday

4 W:指代Wednesday

5 H:指代Thursday

6 F:指代Friday

7 A:指代Saturday

(6)port:通路端口。可以指定多個端口

acl aclname port 80 70 21 ...

acl aclname port 0-1024 ... 指定一個端口範圍

(7)proto:使用協定

acl aclname proto HTTP FTP ...

(8)method:請求方法

acl aclname method GET POST ...

(9)url_regex:URL規則表達式比對

acl aclname url_regex[-i] pattern

(10)urlpath_regex:URL-path規則表達式比對

acl aclname urlpath_regex[-i] pattern

2.http_access通路控制清單

根據通路控制清單允許或禁止某一類使用者通路。最後的條目設為“deny all”或“allow all”來避免安全性隐患。http_access Action聲明1 AND 聲明2 AND多個,http_access聲明間用或運算連接配接,但每個通路條目的元素間用與運算連接配接,清單中的規則總是遵循由上而下的順序。

3.執行個體應用

(1)禁止IP位址為192.168.8.200的客戶機上網

acl client src 172.16.1.2

http_access deny client

(2)禁止網段10-50上網

acl client src 172.16.1.10-172.16.1.50/32

(3)拒絕通路web的ip

acl client dst 192.168.1.2

(4)限制URL以 某些内容 開頭

acl client url_regex index

(5)限制URL 以 某些内容 結尾

acl client urlpath_regex \.html

(6)限制時間段

acl client time MTWHFA 9:00-18:00

(7)限制443端口上網

acl http port 443

http_access deny http

(8)限制使用者并發連接配接數為:5

acl clientsrc 172.16.1.15

acl conn5 max 5

http_access deny client conn5

(9)禁止下載下傳*.mp3$ *.exe$ *.zip$ *.rar$ *.doc$類型的檔案

acl client  urlpath_regex -i \.mp3$ \.exe$ \.zip$ \.rar$ \.doc$

繼續閱讀