squid代理的配置與應用

Squid用途:
解決IP地址不夠用,提高訪問速度
節省web服務器流量
爲終端用戶提供良好的應用體驗
軟件包名稱:squid-2.6.STABLE6
服務名:squid
主程序:/usr/sbin/squid
配置目錄:/etc/squid/
主配置文件:/etc/squid/squid.conf
默認監聽端口:TCP 3128
默認訪問日誌:/var/log/squid/access.log
實驗要求:
1、需要兩臺虛擬機,一臺squid服務,一臺爲客戶機
2squid服務器需要兩塊網卡,一塊保證可以連接互聯網,一塊連接內網
服務器內網網卡IP192.168.0.2
服務器外網網卡IP192.168.1.2
客戶端IP192.168.0.1
拓撲大致如下:
 

實驗目的:
爲內網用戶提供代理上網服務
配置步驟:
在服務器端:
安裝軟件包:
(保證配置有yum,若沒有,可到網絡上下載對應的軟件包進行本地安裝)
# yum install squid -y
squid要想實在加速必須有緩存,需要一個響應速度快的存儲調配,這裏可以使用RAID5
# cd /etc/squid/
備份一下配置文件squid.conf
#cp squid.conf squid.conf.bak
此配置文件有四千多行,大部分說明信息,這裏去除註釋和空白行來顯示:
# grep -v "^#" squid.conf | grep -v "^$"
顯示信息如下:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80# http
acl Safe_ports port 21# ftp
acl Safe_ports port 443# https
acl Safe_ports port 70# gopher
acl Safe_ports port 210# wais
acl Safe_ports port 1025-65535# unregistered ports
acl Safe_ports port 280# http-mgmt
acl Safe_ports port 488# gss-http
acl Safe_ports port 591# filemaker
acl Safe_ports port 777# multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access allow all
http_port 3128                
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp:144020%10080
refresh_pattern ^gopher:14400%1440
refresh_pattern .020%4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
coredump_dir /var/spool/squid
squid.conf中常用的幾個控制項介紹:
http_prot IP:3128
監聽的端口
cache_mem 64M
代理進程所使用的內存大小,實際應爲系統內存的1/31/2
maximum_object_size 4096KB
定義最的緩存對象的大小
reply_body_mas_size  10240000 allow all
請求的最大文件大小是多少
access_log /var/log/squid/access.log squid  
定義日誌的位置
visible_hostname your_host_name
易引起系統錯誤,用於定義squid如何識別自己的主機名稱,默認反向解釋自己的主機名,如果不成功就會報錯,建議將其明確定義,可直接用IP地址
cache_dir ufs /var/spool/squid 100 16 256
用於指定存放緩存的目錄,ufs:指緩存所使用的文件系統  
100:單位M,緩存目錄可使用的緩存空間折大小  
16:單位M,一級緩存子目錄的大小  
256:單位M,二級子目錄的大小   
剛創建時這些子目錄不存在
開始修改配置文件
# vim suqid.conf
修改http_port爲:
http_port 192.168.0.2:3128
:如果想使用其它端口可在此進行修改,地址爲內網網卡地址
修改cache_mem:
cache_mem 128 MB
添加visible_hostname:
visible_hostname proxy.a.com
啓用cache_dir,並修改爲:
cache_dir ufs /var/spool/suqid 1024 16 256
啓用error_directory,並修改爲:
error_directory /usr/share/squid/errors/Simplify_Chinese
注:這一行把一些錯誤返回信息改爲中文顯示,如果你是客戶端虛擬機不支持中文就不必修改,否則會出現亂碼
保存退出 
檢查語法:
# squid -k parse
若不報錯,剛說明配置無誤
第一次啓動前初始化緩存:
# squid -z
此命令創建了16個一級子目錄
查看
# ls /var/spool/squid
啓動服務:
# service squid start
查看3128端口是否開啓
# netstat -tnl | grep 3128
至此squid服務器端配置完成,用以爲客戶端提供代理
在客戶端:
在瀏覽器中設置代理服務器,按圖所示,進行設置:
 

 

此時客戶端便可訪問互聯網,如果不能,則在服務器修改squid配置文件:
# vim /etc/squid/squid.conf
查找http_access deny all,將其修改爲:
http_access allow all
重讀配置文件:
# squid -k parse
# squid -k reconfig
然後,返回客戶端繼續訪問網絡,便暢通無阻!
 
 
 
 
 
 
在服務器端動態查看訪問日誌:
# tail -f /etc/squid/access.log
日誌中出現TCP_PEFRESH_HIT的說明該訪問是從服務器緩存中讀取的
出現TCP_PEFRESH_HIT是直接從網站服務器上讀取的
另外squid的配置文件中還支持訪問控制列表,下面進行簡要說明:
需要將http_access allow all 重新改回http_access deny all
此訪問列表是從上到下進行匹配的,所以列表順序很重要
常用的acl列表類型
src  基於源地址控制
dst
port
srcdomain
dstdomain
time        週一到週日分別用:MTHWHFAS代替
maxconn  基於最大連接數
url_regex 基於url列表控制
urlpath_regex 基於url路徑進行控制
如:想禁止員工在工作時候訪問與QQ相關的網站,且不允許下載MP3格式的音樂,192.168.1.0網段除外,可用如下代碼,添加至/etc/squid/squid.conf文件中
添加在http_access allow localhost之前
acl LAN src 192.168.1.0/24
acl QQ dstdomain *.qq.com
acl WORKTIME time MTWHF 08:00-18:00
acl NOTMP3 url_regex -i ^.*tp://.*\.mp3$
http_access deny !LAN WORKTIME QQ NOTMP3

 

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