AR2831与Squid对接实现webcache功能

一、版本信息

AR2831的版本为:Version3.40,Release0311P26

142511323.jpg

二、组网结构

142533612.jpg

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服务