squid详解.docx

上传人:b****5 文档编号:8237534 上传时间:2023-01-30 格式:DOCX 页数:19 大小:1.97MB
下载 相关 举报
squid详解.docx_第1页
第1页 / 共19页
squid详解.docx_第2页
第2页 / 共19页
squid详解.docx_第3页
第3页 / 共19页
squid详解.docx_第4页
第4页 / 共19页
squid详解.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

squid详解.docx

《squid详解.docx》由会员分享,可在线阅读,更多相关《squid详解.docx(19页珍藏版)》请在冰豆网上搜索。

squid详解.docx

squid详解

一、简介

代理服务器英文全称是ProxyServer,其功能就是代理网络用户去取得网络信息。

Squid是一个缓存Internet数据的软件,其接收用户的下载申请,并自动处理所下载的数据。

当一个用户想要下载一个主页时,可以向Squid发出一个申请,要Squid代替其进行下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。

Squid可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议并且Squid可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。

1.1工作流程

当代理服务器中有客户端需要的数据时:

a.客户端向代理服务器发送数据请求;

b.代理服务器检查自己的数据缓存;

c.代理服务器在缓存中找到了用户想要的数据,取出数据;

d.代理服务器将从缓存中取得的数据返回给客户端。

当代理服务器中没有客户端需要的数据时:

1.客户端向代理服务器发送数据请求;

2.代理服务器检查自己的数据缓存;

3.代理服务器在缓存中没有找到用户想要的数据;

4.代理服务器向Internet上的远端服务器发送数据请求;

5.远端服务器响应,返回相应的数据;

6.代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。

Squid代理服务器工作在TCP/IP的应用层。

1.2Squid分类

按照代理类型的不同,可以将Squid代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。

∙普通代理:

需要客户机在浏览器中指定代理服务器的地址、端口;

∙透明代理:

适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理;

∙反向代理:

是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

官方地址:

http:

//www.squid-cache.org/

参考文档:

http:

//www.squid-cache.org/Doc/config/

二、系统环境

操作系统:

CentOSrelease6.4(Final)

Squid版本:

squid-3.1.10-20.el6_5.3.x86_64

SELINUX=disabled

HTTPService:

stoped

三、安装Squid服务

3.1检查squid软件是否安装

#rpm-qa|grepsquid

3.2如果未安装,则使用yum方式安装

#yum-yinstallsquid

3.3设置开机自启动

#chkconfig--level35squidon            //在3、5级别上自动运行squid服务

四、squid服务器的配置文件说明

squid的主配置文件是/etc/squid/squid.conf,所有squid的设定都是在这个文件里配置,下面我们来讲解一下该文件的配置选项。

http_port 3128//设置监听的IP与端口号cache_mem64MB      //额外提供给squid使用的内存,squid的内存总占用为X*10+15+“cache_mem”,其中X为squid的cache占用的容量(以GB为单位),

              //比如下面的cache大小是100M,即0.1GB,则内存总占用为0.1*10+15+64=80M,推荐大小为物理内存的1/3-1/2或更多。

maximum_object_size4MB  //设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘

minimum_object_size0KB  //设置squid磁盘缓存最小文件

maximum_object_size_in_memory4096KB  //设置squid内存缓存最大文件,超过4M的文件不保存到内存

cache_dirufs/var/spool/squid10016256//定义squid的cache存放路径、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量logformatcombined%>a%ui%un[%tl]"%rm%ruHTTP/%rv"%Hs%"%{Referer}>h""%{User-Agent}>h"%Ss:

%Sh//log文件日志格式access_log/var/log/squid/access.logcombined  //log文件存放路径和日志格式

cache_log/var/log/squid/cache.log  //设置缓存日志

logfile_rotate60//log轮循60天cache_swap_high95//cache目录使用量大于95%时,开始清理旧的cachecache_swap_low90//cache目录清理到90%时停止。

acllocalnetsrc192.168.1.0/24//定义本地网段http_accessallowlocalnet  //允许本地网段使用http_accessdenyall  //拒绝所有visible_hostnamesquid.david.dev  //主机名cache_mgrmchina_tang@  //管理员邮箱

关于ACL的知识,大家可以自行XX查阅,其他更多高级选项,请参考官方文档:

http:

//www.squid-cache.org/Doc/config/。

注意:

squid2.0和squid3.0的差别还是很大的,如果配置完,启动squid不正确,请大家多多参考官方文档的相应版本说明。

五、普通代理服务

即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口。

实验拓扑图如下:

5.1配置Squid代理服务器IP地址

将eth1的IP地址修改为200.168.10.1

#ifconfigeth1200.168.10.1

5.2编辑squid主配置文件/etc/squid/squid.conf

http_port3128cache_mem64MBmaximum_object_size4MBcache_dirufs/var/spool/squid10016256access_log/var/log/squid/access.logacllocalnetsrc192.168.1.0/24http_accessallowlocalnethttp_accessdenyallvisible_hostnamesquid.david.devcache_mgrmchina_tang@

5.3初始化

#squid–z

5.4启动Squid

#/etc/init.d/squidstart

5.5配置Web服务器

A.安装Apache

#rpm-qa|grephttpd

#yum-yinstallhttpd

B.启动Apache并加入开机启动

#/etc/init.d/httpdstart

#chkconfighttpdon

C.创建index.html

#echo"

Squid-Web1/200.168.10.2

">/var/www/html/index.html

D.修改Web服务器IP地址

将web服务器的IP地址修改为200.168.10.2

#ifconfigeth0200.168.10.2

5.6配置客户端IP地址

5.7配置浏览器代理

打开浏览器(以IE为例,其他类似),菜单栏->工具->Internet选项->连接->局域网设置->代理服务器,按照以下格式设置。

5.8测试

测试成功。

5.9测试错误页面

在OracleVMVirtualBox里,因为上面手动设置了ip地址,导致外网不能访问,刚好可以测试访问出错的页面。

可以看到在squid配置文件里设置的参数在错误页面里的显示。

六、透明代理服务

适用于企业的网关主机,客户机不需要指定代理服务器地址、端口等信息,通过iptables将客户机的Web访问数据转交给代理服务程序处理。

实验拓扑图如下:

6.1修改squid主配置文件/etc/squid/squid.conf

http_port3128transparentcache_mem64MBmaximum_object_size4MBcache_dirufs/var/spool/squid10016256access_log/var/log/squid/access.logacllocalnetsrc192.168.1.0/24http_accessallowlocalnethttp_accessdenyallvisible_hostnamesquid.david.devcache_mgrmchina_tang@

在http_port3128后添加transparent关键字。

6.2reload

reload让上面的配置生效。

#/etc/init.d/squidreload

6.3添加iptables规则,把内部的http请求重定向到3128端口

A.启动iptables服务

#/etc/init.d/iptablesstart

B.清除现有iptablesfilter表规则

#iptables-F

C.保存iptables设置

#/etc/init.d/iptablessave

D.查看nat表设置

#iptables-tnat-L-n

E.在nat表中新增一条规则

#iptables-tnat-IPREROUTING-ieth0-s192.168.1.0/24-ptcp--dport80-jREDIRECT--to-port3128

F.保存

G.设置iptables开机启动

#chkconfigiptableson

6.4修改客户端IP地址

将默认网关设置为squid服务器的内网ip地址。

6.5在浏览器中,取消代理设置

6.6测试

透明代理测试成功。

七、反向代理服务

为Internet用户访问企业Web站点提供缓存加速。

实验拓扑图如下:

7.1关闭防火墙

#/etc/init.d/iptablesstop

7.2修改WebServer主页

Web1:

#echo"

Squid-Web1/192.168.1.18

">/var/www/html/index.html

Web2:

#echo"

Squid-Web1/192.168.1.19

">/var/www/html/index.html

7.3配置squid 

http_port80accelvhosthttp_accessallowallcache_peer192.168.1.18parent800originserverround-robinweight=1cache_peer192.168.1.19parent800originserverround-robinweight=1visible_hostnamesquid.david.devcache_mgrmchina_tang@

7.4启动Squid服务

squid启动失败,因为上面设定了squid的监听端口是80,和系统的http服务冲突,所以要将http服务停掉。

7.5squid启动失败,将系统开机自启动的apache服务关闭。

7.6 测试

squid采用了round-robin,所以客户端的访问将轮询两台web服务器,采用"Ctrl+F5"来深度刷新测试。

Web1:

Web2:

查看squid的访问日志。

八、实际应用

下面实验将模拟通过不同的域名访问不同的机器,简单实现企业应用中的负载均衡。

客户端在浏览器地址栏中输入www.squid.dev,将访问192.168.1.18这台机器,访问bbs.squid.dev,将访问192.168.1.19这台机器。

实验拓扑图如下:

8.1修改WebServer主页

Web1:

#echo"

www.squid.dev/192.168.1.18

">/var/www/html/index.html

Web2:

#echo"

bbs.squid.dev/192.168.1.19

">/var/www/html/index.html

8.2配置Squid

http_port80accelvhosthttp_accessallowallcache_peer192.168.1.18parent800originservername=wwwcache_peer192.168.1.19parent800originservername=bbscache_peer_domainwwwwww.squid.devcache_peer_domainbbsbbs.squid.devvisible_hostnamesquid.david.devcache_mgrmchina_tang@

8.3 配置客户端

这里可以使用DNS服务来解析,这里我们为了方便,就在hosts文件里直接指定。

修改C:

\Windows\System32\drivers\etc\hosts文件

8.4测试网络情况 

8.5测试www.squid.dev

8.6测试bbs.squid.dev

8.7查看squid访问日志

8.8查看两台服务器的apache访问日志

#tailf/var/log/httpd/access.log

测试成功。

DavidCamp

∙技术交流,请加QQ群:

系统运维技术分享Ⅳ:

480423035

∙给我写信:

mchina_tang@

我们永远相信,分享是一种美德| WeBelieve,GreatPeopleShareKnowledge...

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1