AR2831与Squid对接实现webcache功能
一、版本信息
AR2831的版本为:Version3.40,Release0311P26
二、组网结构
AR2831与Squid服务器的接口地址为192.168.1.1/29。
Squid服务器IP地址为192.168.1.4/29、192.168.1.5/29,通过bond双网卡绑定。
用户端地址段为192.168.0.0/27(用户群体1)、192.168.0.32/27(用户群体2)、192.168.0.64/27(L2tp拨号用户)。
三、安装配置Squid服务器
Squid服务器操作系统为Centos6.4,squid版本为Version3.1.10。
1、启动路由
#vim/etc/sysctl.conf将net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1
#默认值0是禁止ip转发,修改为1即开启ip转发功能。
2、添加iptables的访问规则-NAT
#Vim/etc/sysconfig/iptables
在iptables文件中添加规则:
-APREROUTING-ibond0-ptcp-mtcp--dport80-jREDIRECT--to-ports80
#在NAT表的PREROUTING链加目标动作REDIRECT,将入站的数据包进行重定向,将80号端口重定向成80,bond0为双网卡bond绑定。
-AINPUT-ptcp-mtcp--dport80-jACCEPT
#在防火墙中打开TCP80端口
COMMIT
3、安装Squid
#yuminstallsquid*-y
4、配置Squid
#vim/etc/squid/squid.conf
以下为我的Squid配置:
http_port80transparent#squid监听端口为80,透明模式。
dns_nameservers192.168.1.4#指定内部DNS服务器,可以不配置。
dns_nameservers192.168.1.5#指定内部DNS服务器,可以不配置。
aclmanagerprotocache_object
acllocalhostsrc127.0.0.1/32
aclto_localhostdst127.0.0.0/8
aclour_network***c192.168.0.0/27#设置允许访问的网络地址段。
aclour_network***c192.168.1.0/29#设置允许访问的网络地址段。
aclour_network***c192.168.0.32/27#设置允许访问的网络地址段。
aclour_network***c192.168.0.64/27#设置允许访问的网络地址段。
http_accessallowmanagerlocalhost
http_accessdenymanager
http_accessdenyto_localhost
http_accessallowour_networks#设置允许访问的网络地址段。
forwarded_foron#关闭此项将在访问某些论坛时显示的IP是代理服务器的IP,如果打开则显示是客户请求IP。
coredump_dir/var/spool/squid#squid突然挂掉的时候,或者突然出现什么故障的时候,将squid在内存中的资料写到硬盘中。
cache_dirufs/var/spool/squid4096016256#指定cache在硬盘上存放的路径,最大存储40G,16个一级目录,256个二级目录,如果不缓存任何文件可以指定。
logformatdenniswave[%{%Y/%m/%d%H:%M:%S}tl]%>a%Ss:%Sh"%rm%ruHTTP/%rv"%>Hs%<st"%{Referer}>h""%{User-Agent}>h"%ui%un#日志格式
cache_log/var/log/squid/cache.log#squid启动和调试等信息
cache_store_log/var/log/squid/store.log#squid缓存日志
access_log/var/log/squid/access.logdenniswave#squid请求日志
httpd_suppress_version_stringon#取消squid的出错页面总会在网页的最下方显示出主机相关信息和squid的版本信息
error_directory/usr/share/squid/errors/zh-cn#设置squid错误页面为中文
cache_effective_usersquid#squid对应系统管理用户
cache_effective_groupsquid#squid对应系统管理组
logfile_rotate4#日志轮训,保留最近得4份日志
cache_mem256MB#squid使用共享内存大小,一般设置为内存1/3左右
cache_swap_low85#配合cache_mem使用,当达到百分之85后,就把旧的内容替换直到降到百分之85
cache_swap_high95
maximum_object_size32768KB#单个文件最大缓存大小
maximum_object_size_in_memory512KB#单个文件在内存中最大缓存大小
cache_mgradmin@xxxxxx.com#管理员联系方式
visible_hostnamecache.xxxxxx.com#可见主机名
aclQUERYurlpath_regexcgi-bin.php.cgi.avi.wmv.rm.ram.mpg.mpeg.zip.exe.aspx.asp#不缓存动态的内容
cachedenyQUERY
##############Refresh_pattern################
#refresh防止客户端一直刷新照成cache回源确认,对此设置了缓存时间。间接的控制磁盘缓存,宽松的设置增加了cache的命中率,同样也增加了用户接受过时相应的几率;保守的设置,降低了cache的命中率和过时响应。
#reload-into-ims:该选项让squid在确认请求里,以no-cache指令传送一个请求。也就是说squid在转发请求之前,对该请求增加一个If-Modified-Since头部。注意这点仅仅在目标有Last-Modified时间戳时才能工作。
refresh_pattern-i.html144050%10080reload-into-ims
refresh_pattern-i.htm144050%10080reload-into-ims
refresh_pattern-i.shtml144050%10080reload-into-ims
refresh_pattern-i.png432050%20160reload-into-ims
refresh_pattern-i.gif432050%20160reload-into-ims
refresh_pattern-i.bmp432050%20160reload-into-ims
refresh_pattern-i.jpg432050%20160reload-into-ims
refresh_pattern-i.js432050%20160reload-into-ims
refresh_pattern-i.css432050%20160reload-into-ims
refresh_pattern-i.swf432050%20160reload-into-ims
5、激活squid
1)、在开启squid之前,你应该验证其配置文件是否正确。运行如下命令即可:
#squid-kparse
假如你看不到输出,配置文件有效,你能继续后面的步骤。然而,如果配置文件包含错误,squid会告诉你。
2)、初始化cache目录.即建立缓存目录的存储格式
只需在第一次启动squid服务之前执行(在初次运行squid之前,或者无论何时你增加了新的cache_dir,你必须初始化cache目录。)
#squid-z
cache目录初始化可能花费一些时间,依赖于cache目录的大小和数量,以及磁盘驱动器的速度。假如你想观察这个过程,请使用-X选项:
#squid-zX
3)、将squid加入系统启动项#chkconfig--level35squidon
4)、启动squid#servicesquidstart
四、配置AR2831的webcache功能
<ar2831>system-view
[ar2831]webcacheredirectaddress192.168.1.5port80
#192.168.1.5为Squid服务器的IP地址,port80为Squid服务器的服务端口。
[ar2831]interfaceGigabitEthernet1/0
#interfaceGigabitEthernet1/0为接用户侧的端口。
[ar2831-GigabitEthernet1/0]webcacheredirectenable
#Webcache重定向功能打开。
五、查看状态信息、抓包
1、取得squid运行状态信息
#squidclient-h127.0.0.1-p80mgr:info
HTTP/1.0200OK
Server:squid
Mime-Version:1.0
Date:Mon,21Oct201304:02:00GMT
Content-Type:text/plain
Expires:Mon,21Oct201304:02:00GMT
Last-Modified:Mon,21Oct201304:02:00GMT
X-Cache:MISSfromcache.xtmcc.tk
X-Cache-Lookup:MISSfromcache.xtmcc.tk:80
Via:1.0cache.xtmcc.tk(squid)
Connection:close
SquidObjectCache:Version3.1.10
StartTime:Mon,21Oct201303:43:34GMT
CurrentTime:Mon,21Oct201304:02:00GMT
Connectioninformationforsquid:
Numberofclientsaccessingcache:2
NumberofHTTPrequestsreceived:228
NumberofICPmessagesreceived:0
NumberofICPmessagessent:0
NumberofqueuedICPreplies:0
NumberofHTCPmessagesreceived:0
NumberofHTCPmessagessent:0
Requestfailureratio:0.00
AverageHTTPrequestsperminutesincestart:12.4
AverageICPmessagesperminutesincestart:0.0
Selectloopcalled:42738times,25.875msavg
Cacheinformationforsquid:
Hitsas%ofallrequests:5min:0.0%,60min:24.4%
Hitsas%ofbytessent:5min:13.4%,60min:60.4%
Memoryhitsas%ofhitrequests:5min:0.0%,60min:0.0%
Diskhitsas%ofhitrequests:5min:0.0%,60min:100.0%
StorageSwapsize:693284KB
StorageSwapcapacity:1.7%used,98.3%free
StorageMemsize:1092KB
StorageMemcapacity:0.4%used,99.6%free
MeanObjectSize:23.59KB
Requestsgiventounlinkd:6
MedianServiceTimes(seconds)5min60min:
HTTPRequests(All):0.097360.04519
CacheMisses:0.087290.09736
CacheHits:0.000000.00000
NearHits:0.000000.00000
Not-ModifiedReplies:0.000000.00000
DNSLookups:0.087170.04854
ICPQueries:0.000000.00000
Resourceusageforsquid:
UPTime:1105.859seconds
CPUTime:1.030seconds
CPUUsage:0.09%
CPUUsage,5minuteavg:0.04%
CPUUsage,60minuteavg:0.09%
ProcessDataSegmentSizeviasbrk():7352KB
MaximumResidentSize:59440KB
Pagefaultswithphysicali/o:0
Memoryusageforsquidviamallinfo():
Totalspaceinarena:7484KB
Ordinaryblocks:7436KB26blks
Smallblocks:0KB0blks
Holdingblocks:2040KB5blks
FreeSmallblocks:0KB
FreeOrdinaryblocks:47KB
Totalinuse:9476KB100%
Totalfree:47KB0%
Totalsize:9524KB
Memoryaccountedfor:
Totalaccounted:4273KB45%
memPoolaccounted:4273KB45%
memPoolunaccounted:5250KB55%
memPoolAlloccalls:115283
memPoolFreecalls:115585
Filedescriptorusageforsquid:
Maximumnumberoffiledescriptors:1024
Largestfiledesccurrentlyinuse:19
Numberoffiledesccurrentlyinuse:14
Filesqueuedforopen:0
Availablenumberoffiledescriptors:1010
Reservednumberoffiledescriptors:100
StoreDiskfilesopen:0
InternalDataStructures:
29416StoreEntries
162StoreEntrieswithMemObjects
160HotObjectCacheItems
29388on-diskobjects
*取得squid内存使用情况:squidclient-h127.0.0.1–p80mgr:mem
*取得squid已经缓存的列表:squidclient-h127.0.0.1-p80mgr:objects
*取得squid的磁盘使用情况:squidclient-h127.0.0.1-p80mgr:diskd
2、抓包
#tcpdump-n-ibond0port80
*bond0为所要抓包的网卡
3、服务的启动、停止、重启动
#servicesquidstart
*启动squid服务
#servicesquidstop
*停止squid服务
#servicesquidrestart
*重启动squid服务