squid配置及應用

 

一、Squid簡介及作用
Squid是Linux下一個緩存Internet數據的代理服務器軟件,其接收用戶的下載申請,並自動處理所下載的數據。也就是說,當一個用戶想要下載一個主頁時,可以向Squid發出一個申請,要Squid代替其進行下載,然後Squid連接所申請網站並請求該主頁,接着把該主頁傳給用戶同時保留一個備份。當別的用戶申請同樣的頁面時,Squid把保存的備份立即傳給用戶,使用戶覺得速度相當快。 
squid不僅可用在Linux系統上,還可以用在AIX、Digital Unix、FreeBSDNetBSDNextstepSCOSolaris等系統上。
Squid與Linux下其它的代理軟件如Apache相比,下載安裝簡單,配置簡單靈活,支持緩存和多種協議。用ipchains+Squid的解決方案,就可以獲得通過緩存高
性能的同時能夠無縫的訪問Internet。
Squid代理服務器的作用
1.通過緩存的方式爲用戶提供web訪問加速
2.對用戶的web訪問進行過濾控制
緩存代理服務器又分爲普通代理服務器,透明代理服務器,和反向代理服務器。
普通代理服務即指標準的,傳統的代理服務,需要客戶機在瀏覽器中指定代理服務器的地址,端口。
透明代理服務器適合企業的網關主機,客戶機不需要指定代理服務器地址,端口等信息,需要設置防火牆策略將客戶機的web訪問數據轉交給代理服務器。
反向代理服務爲INTERNET用戶訪問網絡內網站點提供緩存加速,提高訪問效率。
 
二、squid常用命令及其相關配置
       
1. Squid命令
在開啓squid之前,你應該驗證其配置文件是否正確
# squid -k parse
初始化cache目錄.即建立緩存目錄的存儲格式,觀察這個過程,請使用-X選項
# squid –zX
啓動squid服務
# service squid start
重配置運行中的squid進程
# squid -k reconfigure
最安全的停止squid的方法是使用squid -k shutdown命令:
# squid -k shutdown
       
2.Squid 主要組成部分
服務名:squid
主程序:/usr/sbin/squid
配置目錄:/etc/squid
主配文件:/etc/squid/squid.conf
監聽tcp端口號:3128
默認訪問日誌文件:/var/log/squid/access.log
        
3.squid 常用配置選項(/etc/squid/squid.conf)
http_port 3128      #監聽端口
cache_mem 64MB       #緩存佔內存大小
maximum_object_size 4096KB      #最大緩存塊
reply_body_max_size 1024000 allow all #限定下載文件大小
access_log /var/log/squid/access.log #訪問日誌存放的文件
visible_hostname proxy.test.xom #可見的主機名
cache_dir ufs /var/spool/squid 100 16 256
usf:緩存數據的存儲格式
/var/spool/squid 緩存目錄
100 : 緩存目錄佔磁盤空間大小(M)
16 :緩存空間一級子目錄個數
256 :緩存空間二級子目錄個數
cache_mgr [email protected] #定義管理員郵箱
http_access deny all #訪問控制
 
4.squid中的訪問控制
使用訪問控制特性,可以控制在訪問時根據特定的時間間隔進行緩存、訪問特
定站點或一組站點等等。 Squid 訪問控制有兩個要素:ACL 元素和 訪問列表。
訪問列表可以允許或拒絕某些用戶對此服務的訪問。
下面列出一些重要的 ACL 元素類型
src : 源地址 (即客戶機IP地址)
dst : 目標地址 (即服務器IP地址)
srcdomain : 源名稱 (即客戶機名稱)
dstdomain : 目標名稱 (即服務器名稱)
time : 一天中的時刻和一週內的一天
url_regex : URL 規則表達式匹配
urlpath_regex: URL-path 規則表達式匹配,略去協議和主機名
proxy_auth : 通過外部程序進行用戶驗證
maxconn : 單一 IP 的最大連接數
爲了使用控制功能,必須先設置 ACL 規則並應用。ACL 聲明的格式如下:
acl acl_element_name type_of_acl_element values_to_acl
注:
1. acl_element_name 可以是任一個在 ACL 中定義的名稱。
2. 任何兩個 ACL 元素不能用相同的名字。
3. 每個 ACL 由列表值組成。當進行匹配檢測的時候,多個值由邏輯或運算換言之,即任一 ACL bbs.bitsCN.com元素的值被匹配,則這個 ACL 元素即被匹配。
4. 並不是所有的 ACL 元素都能使用訪問列表中的全部類型。
5. 不同的 ACL 元素寫在不同行中,Squid 將把它們組合在一個列表中。
我們可以使用許多不同的訪問條目。下面列出我們將要用到的幾個:
* http_access: 允許 HTTP 訪問。這個是主要的訪問控制條目。
* no_cache: 定義對緩存請求的響應。
訪問列表的規則由一些類似 'allow' 或 'deny' 的關鍵字構成,用以允許或拒絕向特定或一組 ACL 元素提供服務。
注: 
1. 這些規則按照它們的排列順序進行匹配檢測,一旦檢測到匹配的規則,匹配檢測就立即結束。
2. 一個訪問列表可以又多條規則組成。
3. 如果沒有任何規則與訪問請求匹配,默認動作將與列表中最後一條規則對應。
4. 一個訪問條目中的所有元素將用邏輯與運算連接:http_access Action 聲明1 AND 聲明2 AND 聲明 OR.http_access Action 聲明3 多個 http_access 聲明用或運算連接,但每個訪問條目的元素間用與運算連接。
5. 請記住列表中的規則總是遵循由上而下的順序。  
 
三、實驗環境的搭建
 
1.試驗設備:
客戶機
Microsoft window xp , Microsoft window 7
www服務器
Microsoft window 2003
Squid代理服務器
[root@localhost ~]# uname -r
2.6.18-164.el5
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
2.安裝squid服務
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm
 
四、實驗案例
1.實現普通代理服務器
拓撲圖:
 
 
配置信息squid服務器
[root@localhost ~]# vim /etc/squid/squid.conf
637 http_access allow all
920 http_port 192.168.2.101:3128 ##代理的ip地址
#http_port指令告訴squid在哪個端口偵聽HTTP請求
2994 visible_hostname 192.168.2.101   ##出現錯誤時,返回的主機信息
[root@localhost ~]# squid -k parse ##檢查配置文件
[root@localhost ~]# service squid start ##啓動
測試
客戶端配置和網絡配置參數
打開IE瀏覽器—>工具—>Internet選項—>連接—>局域網設置—>
 
     
 
 
 

 

訪問控制示例
1)禁止訪問sina
acl sina dst www.sina.com.cn
http_access deny sina
2) 禁止來自某些IP地址的訪問
squid配置文件中添加以下acl名稱及訪問規則,並重新加載配置文件
acl enemy src 192.168.2.10/32
http_access deny enemy
3) 禁止在某些時段訪問
acl Working_hours MTWHF 08:00-17:00
http_access allow Working_hours
http_access deny !Working_hours
4) 禁止某個代理客戶建立過多連接
acl OverConnLimit maxconn 4
http_access deny OverConnLimit
5)禁止訪問域名包含爲google.com的網站
acl badurl url_regex -i google.com
http_access deny badurl
篇幅有限,這裏不再多舉例子了,我也是菜鳥一個,在這方面也要多努力學習。

 

2.實現透明代理服務器
拓撲圖:
 

配置信息
打開數據的轉發功能
[root@localhost ~]# vim /etc/sysctl.conf
7 net.ipv4.ip_forward = 1       ##1代表打開,0代表關閉
[root@localhost ~]# sysctl –p ##生效
[root@localhost ~]# vim /etc/squid/squid.conf
920 http_port 192.168.2.101:3128 transparent ##透明代理
[root@localhost ~]# squid -k parse
[root@localhost ~]# service squid restart
添加iptables規則
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -p udp --dport 53 -o eth1 -j MASQUERADE
[root@localhost ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j REDIRECT --to-ports 3128
測試
客戶端網絡配置參數
 

 

 

 

 

 

3、反向代理服務
拓撲圖:
 

 

配置信息
[root@localhost ~]# vim /etc/squid/squid.conf
920  http_port 192.168.101.26:80 vhost   ##反向代理
1185 cache_peer 192.168.2.201 parent   80   0 originserver
 
測試 
客戶端網絡配置參數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章