设为首页 收藏本站
查看: 1011|回复: 0

[经验分享] Squid缓存服务器原理与实战演练

[复制链接]

尚未签到

发表于 2018-12-26 07:55:30 | 显示全部楼层 |阅读模式
  Squid服务基础讲解
代理缓存机制:

代理的基本类型:
1、  传统代理:需要在客户端软件手动设置指定代理服务器

  2、  透明代理:无需用户手动指定,通过路由、防火墙策略将访问重定向

Squid 反向代理:为网站服务

下面进行实战演练!
  实验环境:
代理服务器squid 192.168.80.181
HTTP服务器192.168.80.182
Win7客户端   192.168.80.9
代理服务器端配置如下
[root@aa squid-3.5.27]# tar xf squid-3.5.27.tar.gz -C /opt/          #解压squid源码包
[root@aa squid-3.5.27]# yum install perl-devel                #安装perl语言编译插件
[root@aa squid-3.5.27]# cd /opt/squid-3.5.27/   
[root@aa squid-3.5.27]# ./configure
--prefix=/usr/local/squid
--sysconfdir=/etc
--enable-arp-acl                //支持acl
--enable-linux-netfilter            //支持透明代理
--enable-linux-tproxy            //重定向
--enable-async-io=100
--enable-err-language="Simplify_Chinese"
--enable-underscore --enable-poll
--enable-gnuregex
[root@aa squid-3.5.27]# make && make install            //配置、编译、安装
[root@aa squid-3.5.27]# ln -s /usr/local/squid/sbin/* /usr/local/sbin       //
[root@aa squid-3.5.27]# useradd -M -s /sbin/nologin squid
[root@aa squid-3.5.27]# chown -R squid:squid /usr/local/squid/var/
[root@aa squid-3.5.27]# vi /etc/squid.conf
http_port 3128                 //59行,在下面新增
visible_hostname 192.168.80.181
cache_mem 64 MB
cache_swap_low 80
cache_swap_high 97
cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256         //68行,去掉注释配置硬盘缓存,打开#.缓存目录100M,其中一级目录16个,二级256个
cache_effective_user squid
cache_effective_group squid                //制定squid用户的执行主和组
[root@aa squid-3.5.27]# squid -k parse        //检查配置文件
[root@aa squid-3.5.27]# squid –k rec        //重新加载配置文件
[root@aa squid-3.5.27]# squid -zX            //初始化缓存目录
[root@aa squid-3.5.27]# vi /etc/init.d/squid      //制作管理脚本
#!/bin/bash
#chkconfig: 35 90 25
#config: /etc/squid.conf
#pidfile: /usr/local/squid/var/run/squid.pid
#Description: Squid - Internet Object Cache
  PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
  case "$1" in
start)
netstat -utpln | grep squid &>/dev/null
if [ $? -eq 0 ]
then
echo "Squid is running"
else
$CMD
fi
;;
stop)
$CMD -k kill &>/dev/null
rm -rf $PID &>/dev/null
;;
status)
[ -f $PID ] &>/dev/null
if [ $? -eq 0 ]
then
netstat -utpln | grep squid
else
echo "Squid is not running"
fi
;;
restart)
$0 stop &>/dev/null
echo "正在关闭Squid..."
$0 start &>/dev/null
echo "正在启动Squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:{start | stop | restart | reload | check | status}"
esac
[root@aa squid-3.5.27]# chmod +x /etc/init.d/squid    //赋予启动脚本执行权限
[root@aa squid-3.5.27]# chkconfig --add squid        //将squid添加到管理脚本
[root@aa squid-3.5.27]# chkconfig squid on         //设置开机自启动
[root@aa squid-3.5.27]# service firewalld stop
[root@aa squid-3.5.27]# setenforce 0
[root@aa squid-3.5.27]# service squid start
[root@aa squid-3.5.27]# netstat -anpt | grep 3128
此时已经可以通过代理服务器访问www服务器了
下面是http服务器的配置
[root@ab ~]# yum install -y httpd   //安装httpd服务器
[root@ab ~]# service httpd start    //启动
下面客户端直接访问测试

没有指定代理服务器,访问正常
下面客户端指定代理服务器

设置完毕,去http服务器上监控访问日志
[root@ab ~]# tail -f /etc/httpd/logs/access_log
下面再去访问182


访问依旧成功,查看日志发现,实际的访问者为181代理服务器。
du -sh /usr/local/squid/var/cache/squid/

缓存服务器内容已经缓存了

  -------------------限制下载文件的大小------------
在http服务器上配置
[root@ab ~]# cd /var/www/html/
[root@ab html]# dd if=/dev/zero of=test1.tgz bs=1M count=11
[root@ab html]# dd if=/dev/zero of=test2.tgz bs=1M count=2   //复制出两个tgz文件用于下载测试。
[root@aa squid-3.5.27]# vi /etc/squid.conf
reply_body_max_size 10 MB              //限制文件超过10M的不能下载
[root@aa squid-3.5.27]# service squid restart
客户端测试下载情况
当访问下载test2.tgz时可以成功下载

  当访问test1.tgz时,由于大小为11M,则不能下载

  -------------下面配置透明代理------------------
代理服务器做为内网的网关设备,两块网卡,一块连接内网,另一块连接外网,测试客户端主机要指网关。
首先理清实验拓扑:通过181的网关代理,使80.9的win7能够上互联网
Win7:ip地址为192.168.80.9,网关地址为192.168.80.181
代理squid:内网网卡地址为192.168.80.181,使用桥接模式连外网
  下面进行实验准备,打开代理服务器的桥接模式,两块网卡地址都已经获得了
181为内网,123.197为外网口地址

Ping百度是通的,说明可以上网

将win7之前的指定代理服务器去掉,此时是上不了网的

指定他的网关为192.168.80.181

下面去配置squid透明代理
[root@aa ~]# vi /etc/squid.conf
http_port 192.168.80.181:3128 transparent     //将改行修改如此,指定内网卡监听端口
[root@aa ~]# service squid restart
[root@aa ~]# yum install -y iptables-services
[root@aa ~]# systemctl start iptables
[root@aa ~]# iptables –F      //清空防火墙nat表内容
[root@aa ~]# iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -s 192.168.80.0/24 -j REDIRECT --to-ports 3128         //对nat表的PREROUTING链做操作,指定内网卡ens33接收到的来自192.168.80.0/24网段的80端口的tcp请求全部转发给3128端口处理
[root@aa ~]# service iptables save    //保存防火墙配置

Win7客户端访问百度成功
  -------------------下面可以配置acl访问控制---------
[root@aa ~]# vi /etc/squid.conf
Acl和防火墙一样是从上向下依次匹配,匹配及停止,并执行匹配的动作。
#acl localnet src 192.168.0.0/16 //注释本行默认配置
  http_access allow all   //在本行上面新增ACL语句,如果在该行下面插入,则访问的已经被全部允许了
  1.禁止某IP地址主机上网
acl nolink src 192.168.90.9
http_access deny nolink
  2.禁止某网段在某时间段上网
acl nolink src 192.168.1.0/24
acl nowang time MTWHF 9:00-11:30
http_access deny nolink nowang
  3.禁止所有人访问某网站(精确匹配)
acl nourl dstdomain -i www.qq.com
http_access deny nourl
  4.禁止所有人访问某些网站(含有关键字的都会过虑)
acl nourl url_regex -i taobao.com
http_access deny nourl
  5.禁止下载某类型的文件
acl nof urlpath_regex -i .avi$ .mkv$
http_access deny nof
  6.禁止访问某类型的网站
acl nop url_regex -i ^emule:// ^thunder
http_access deny nop
  修改squid配置文件测试
[root@aa ~]# vi /etc/squid.conf
#acl localnet src 192.168.0.0/16 //注释本行默认配置

[root@aa ~]# service squid restart

再次访问,访问被拒绝
  ---------------配置sarg日志---------------
注意:需要在代理服务器上安装WWW服务器
[root@aa ~]# yum install -y httpd
[root@aa sarg-2.3.11]# tar xf sarg-2.3.11.tar.gz -C /opt/
[root@aa sarg-2.3.11]# cd /opt/sarg-2.3.11/  
[root@aa sarg-2.3.11]# ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
[root@aa sarg-2.3.11]# make && make install
[root@aa sarg-2.3.11]# vi /etc/sarg/sarg.conf
7 access_log /usr/local/squid/var/logs/access.log  //squid的访问日志位置
25 title "Squid User Access Reports" //网页标题
120 output_dir /var/www/html/squid-reports //分析报告的存放位置
178 user_ip no //不使用IP代替用户ID
184 topuser_sort_field BYTES reverse //升序排列
190 user_sort_field BYTES reverse
206 exclude_hosts /usr/local/sarg/noreport //设置不生成报告的主机
257 overwrite_report no
289 mail_utility mailx //指定发邮件命令
434 charset UTF-8
518 weekdays 0-6 //指定top排序星期周期
523 hours 7-12,14,16,18-20 //指定top排序时间周期
633 www_document_root /var/www/html //网页根目录
[root@aa sarg-2.3.11]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
[root@aa sarg-2.3.11]# sarg            //启动
SARG: Records in file: 102, reading: 100.00%
SARG: Successful report generated on /var/www/html/squid-reports/2018Mar21-2018Mar22
  http://192.168.80.181/squid-reports/ //访问日志页

----------------配置squid反向代理-------------
Squid服务器:内网卡192.168.80.181        外网卡192.168.80.90.181
两台web服务器:192.168.80.182   192.168.80.183
Win7客户端:192.168.90.9   gw192.168.90.181
[root@aa network-scripts]# vi /etc/squid.conf
http_port 192.168.90.181:80 vhost vport
cache_peer 192.168.80.182 parent 80 0 no-query round-robin originserver name=s1
cache_peer 192.168.80.183 parent 80 0 no-query round-robin originserver name=s2
cache_peer_domain s1 www.test.com
cache_peer_domain s2 www.abc.com
[root@aa network-scripts]# service squid restart
下面去客户端测试
修改hosts文件
192.168.90.181 www.test.com
192.168.90.181 www.abc.com
访问成功
如果报错访问被拒绝deny改为allow






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655874-1-1.html 上篇帖子: 对Squid使用的几点总结 下篇帖子: squid通过域认证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表