构建Squid代理服务器本章结构缓存代理概述构建Squid代理服务器Squid基本配置配置透明代理主配置文件squid.confACL访问控制配置反向代理配置squid实现基本代理功能2缓存代理概述•代理服务器的作用–通过缓存的方式为用户提供Web访问加速–对用户的Web访问进行过滤控制InternetSquid代理服务器Cache12356客户端PC机缓存代理概述•普通代理服务–即标准的、传统的代理服务–需要客户机在浏览器中指定代理服务器的地址、端口•透明代理服务–适用于企业的网关主机(共享接入Internet)中–客户机不需要指定代理服务器地址、端口等信息–需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理4缓存代理概述•反向代理服务–为Internet用户访问企业Web站点提供缓存加速Internet反向代理服务器Web服务器NWeb用户1Web用户2Web用户N……Web服务器2Web服务器1……5Squid基本配置•squid软件包–软件包名:squid-2.6.STABLE6-3.el5–服务名:squid–主程序:/usr/sbin/squid–配置目录:/etc/squid/–主配置文件:/etc/squid/squid.conf–默认监听端口:TCP3128–默认访问日志文件:/var/log/squid/access.log6主配置文件squid.conf•常用配置项–http_port3128–cache_mem64MB–maximum_object_size4096KB–reply_body_max_size10240000allowall–access_log/var/log/squid/access.logsquid–visible_hostnameproxy.test.com–dns_testnames–cache_dirufs/var/spool/squid100162567配置squid实现基本的代理功能•普通代理服务的典型应用环境InternetSquid代理服务器局域网PC机192.168.1.100/24eth1:192.168.1.1/24eth0:218.29.30.31/30配置squid实现基本的代理功能•设置squid服务器端(192.168.1.1)–修改squid.conf主配置文件http_port3128visible_hostnameproxy.test.comreply_body_max_size10240000allowallhttp_accessallowall初始化squid缓存目录(squid-z)启动squid服务(squid-D)-z初始化缓存目录结构-D不做DNS解析测试-kreconfigure重新加载配置9配置squid实现基本的代理功能•设置客户机(192.168.1.100)的浏览器–指定服务器的地址(192.168.1.1)、端口(3128)10配置squid实现基本的代理功能•验证代理服务器功能–当外网测试机(218.29.30.29)中启用Web服务程序后,在局域网客户机(192.168.1.100)的IE浏览器中应能够访问该站点:–网页访问成功后,检查代理服务器的日志文件,应发现客户机的HTTP访问记录[root@localhost~]#tail-1/var/log/squid/access.log1244386040.20862192.168.1.100TCP_MISS/2002828GET[root@gw1~]#tail-1/var/log/httpd/access_log218.29.30.31--[16/May/2009:12:39:39+0800]GET/icons/apache_pb2.gifHTTP/1.02002414(compatible;MSIE6.0;WindowsNT5.2;SV1;.NETCLR1.1.4322;.NETCLR1.0.3705;aff-kingsoft-ciba)配置squid实现基本的代理功能•验证代理服务器功能–检查外网测试机的Web访问日志,应发现进行访问的是代理服务器主机(218.29.30.31),而不是客户机12配置squid实现基本的代理功能•验证代理服务器功能–在浏览器中下载超过10M大小的文件时应被拒绝13小结•请思考:–squid服务的主配置文件、访问日志文件各是什么?–什么配置项用于设置代理服务器的监听端口?–什么配置项可用于限制为客户端缓存的最大文件?–什么配置项可用于限制客户端下载的最大文件大小?–cache_mem、visible_hostname配置的作用是什么?–哪些方式可以对squid服务的缓存目录进行初始化?14ACL访问控制•ACL(AccessControlList,访问控制列表)–可以从客户机的IP地址、请求访问的URL/域名/文件类型、访问时间、并发请求数等各方面进行控制•应用访问控制的方式–定义acl列表acl列表名称列表类型列表内容…–针对acl列表进行限制http_accessallow或deny列表名……15ACL访问控制•最基本的ACL访问控制示例–禁止任何客户机使用代理服务aclallsrc0.0.0.0/0.0.0.0http_accessdenyall16ACL访问控制•常用的acl列表类型–src–dst–port–srcdomain–dstdomain–time–maxconn–url_regex–urlpath_regex17ACL访问控制•ACL列表定义示例–aclLAN1src192.168.1.0/24–aclPC1src192.168.1.66/32–aclBlk_Domaindstdomain.qq.com.kaixin001.com–aclWork_HourstimeMTWHF08:30-17:30–aclMax20_Connmaxconn20–aclBlk_URLurl_regex-i^rtsp://^mms://–aclBlk_Wordsurlpath_regex-isexadult–aclRealFileurlpath_regex-i\.rmvb$\.rm$18ACL访问控制•根据已经定义的部分ACL列表进行访问控制–http_accessdenyLAN1Blk_URL–http_accessdenyLAN1Blk_Words–http_accessdenyPC1RealFile–http_accessdenyPC1Max20_Conn–http_accessallowLAN1Work_Hours19ACL访问控制•访问控制规则的匹配顺序–没有设置任何规则时——将拒绝所有客户端的访问请求–有规则但找不到相匹配的项时——将采用与最后一条规则相反的权限,即如果最后一条规则是allow,那么就拒绝客户端的请求,否则允许该请求20配置透明代理•实现透明代理的基本条件–前提:•客户机的Web访问数据要能经过防火墙•代理服务构建在网关(防火墙)主机中–配置要求:•代理服务程序能够支持透明代理•设置防火墙规则,将客户机的Web访问数据自动重定向给代理服务程序处理21配置透明代理•透明代理服务的典型应用环境Internet透明代理服务器局域网PC机192.168.1.100/24eth1:192.168.1.1/24eth0:218.29.30.31/30配置透明代理•基本实现步骤–修改squid.conf配置文件,并重新加载该配置•http_port192.168.1.1:3128transparent–添加iptables规则•iptables-tnat-IPREROUTING-ieth1-s192.168.1.0/24-ptcp--dport80-jREDIRECT--to-ports3128–客户机浏览器•不需要在浏览器中指定代理服务器的地址、端口–验证透明代理的实施效果23配置反向代理Internet反向代理服务器Internet中的客户机218.29.30.29/30eth1:192.168.2.1/24网站服务器群24配置反向代理•基本实现步骤–修改squid.conf文件,并重新加载该配置cache_peerWeb服务器地址服务器类型http端口icp端口[可选项]http_port218.29.30.31:80vhostcache_peer192.168.2.11parent800originserverweight=5max-conn=30cache_peer192.168.2.12parent800originserverweight=5max-conn=30cache_peer192.168.2.13parent800originserverweight=5max-conn=30cache_peer192.168.2.14parent800originserverweight=1max-conn=825配置反向代理•验证反向代理的实施效果–在上游Web服务器(192.168.2.11~192.168.2.14)中开启httpd服务–在Internet中的客户机(218.29.30.29)中访问反向代理服务器主机(),应能够看到实际由上游Web服务器提供的网页内容–查看反向代理服务器的访问日志信息[root@localhost~]#tail-1/var/log/squid/access.log1231256531.03835218.29.30.29TCP_MISS/2002869GET第1台上游Web服务器的地址反向代理服务器的地址客户机地址26本章总结缓存代理概述构建Squid代理服务器Squid基本配置配置透明代理主配置文件squid.confACL访问控制配置反向代理配置squid实现基本代理功能27实验案例1:搭建透明代理网关服务器•需求描述–使用iptables设置SNAT策略•使192.168.2.0/24网段的主机通过NAT方式共享上网–配置squid代理服务•对HTTP访问进行缓存加速,并结合防火墙策略实现透明代理–在代理服务中进行访问控制•禁止局域网用户下载rmvb、mp3格式的文件•对超过3M大小的文件不做缓存,禁止下载超过8M的文件•禁止用户访问qq.com、tencent.com、xxxx.com等域的网站•启用网址过滤,禁止访问包含“sex”字样的链接28InternetSquid透明代理服务器局域网PC机192.168.2.20/24eth1:192.168.2.1/24eth0:173.16.16.1/24Internet中的测试服务器实验案例1:搭建透明代理网关服务器29实验案例1:搭建透明代理网关服务器•实现思路–准备好客户机及Internet测试服务器–正确配置各主机的网络参数•局域网主机将默认网关设为192.168.2.1•在测试服务器上启动httpd服务–修改squid.conf文件,•配置透明代理支持、缓存和下载文件大小限制、网址过滤–开启路由转发,添加实现透明代理的R