关于squid缓存代理服务

书接上回啊,今天我们就来搞一搞这个什么,squid(斯奎德)

还是一样的,别紧张,虽然是个新玩意儿,但我们有百度啊。不会的你就百度,百度一下总有个最基本的认识嘛(百度请给我打钱谢谢

Squid是什么

Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

1.Squid是什么?

Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一个web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://squid.nlanr.net/)并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。

2.Internet缓冲的一些概念

你可能会想到一些问题:缓冲有多大的用处?什么时候目标(object)应该或者不应该被缓冲?例如,缓冲信用卡号码是完全不适合的,脚本文件的执行结果在远程服务器端,站点经常更新(像www.cnn.com)或者甚至站点不允许缓冲,这些情况也都是不适合缓冲的。Squid处理各种情况是不错的(当然,这需要远程站点按标准形式工作)。可执行的cgi-bin脚本文件不被缓冲,返回正确页眉的页面是在一段限制了的时间内被缓冲,而且你可以规定特殊的规则以确定什么是可以或不可以被缓冲的,还有缓冲的时间为多长。谈到缓冲的用处有多大,这要看Internet的容量大小,各有不同。对于小型的缓冲区(几转磁盘空间)来说,返回值非常高(达到25%)。这个空间缓冲经常访问的站点,如netscape,cnn和其它一些类似情况的站点。如果你增加一倍缓冲的磁盘空间,但你不会成倍增加你的命中率。这是因为你开始缓冲网络中剩余部分时,这些通常时很大的而且很少被访问。一个非常大的高速缓冲区,有20转左右,可能返回值仍小于50%,除非你对保存数据的时间长短经常改变(一般地你不要分配20转的磁盘空间,因为页面很快就会过时,应该被删除掉)。我们在这里说的目标(object)指的是可保存的web页面或其它类似的可下载页面(ftp文件或目录内容也称为目标(object))。

3.Squid运行在什么系统上?

Squid可运行在大多数Unix和OS/2版本的系统之上,已知的可工作的有:Windows,AIX,Digital Unix,FreeBSD,HP-UX,Irix,Linux,NetBSD,Nextstep,SCO,Solaris

关于三种代理类型

 为什么要使用代理捏

 话不多说,实验走起🥇🥇🥇

squid实验

搭建传统代理

部署squid服务器

[root@localhost ~]# tar xf squid-3.5.27.tar.gz 
[root@localhost ~]# cd squid-3.5.27/
[root@localhost squid-3.5.27]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gnuregex
[root@localhost squid-3.5.27]# make && make install
./configure --prefix=/usr/local/squid                 			//安装目录
--sysconfdir=/etc/                                              //单独将配置文件修改到/etc目录下
--enable-arp-acl                                                //可在ACL中设置通过MAC地址进行管理,防止IP欺骗
--enable-linux-netfilter                                        //使用内核过滤
--enable-linux-tproxy                                           //支持透明模式
--enable-async-io=100                                       	//异步I/O,提升储存性能,值可修改
--enable-err-language="Simplify_Chinese"      					//错误信息的显示语言
--enable-underscore                                             //允许URL中有下划线
--enable-poll                                                   //使用Poll()模式,提升性能
--enable-gnuregex                                               //使用GNU正则表达式

 

[root@localhost squid-3.5.27]#  ln -s /usr/local/squid/sbin/* /usr/local/sbin

 

[root@localhost squid-3.5.27]# useradd -M -s /sbin/nologin squid

 

[root@localhost squid-3.5.27]# chown -R squid:squid /usr/local/squid/var/

 

vim /etc/squid.conf
# And finally deny all other access to this proxy
 56 http_access allow all	//放在http_access deny all 之前,允许任意客户机使用代理服务,控制规则自上而下匹配
 57 http_access deny all
 58 http_port 3128	//用来指定代理服务监听的地址和端口(默认的端口号为3128)
 62 #cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256
 63 cache_effective_user squid	//添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功
 64 cache_effective_group squid		//添加,指定账号基本组
 65 cache_mem 64 MB		//指定缓存功能所使用的内存空间大小,便于保存访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4	
 66 reply_body_max_size 10 MB	//允许用户下载的最大文件大小,以字节为单位,当下载超过指定大小的Web对象时,浏览器的报错页面中会出现“请求或访问太大”的提示默认设置0表示不进行限制
 67 maximum_object_size 4096 KB		//允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

68 coredump_dir /usr/local/squid/var/cache/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@localhost squid-3.5.27]# chmod +x /etc/init.d/squid 
[root@localhost squid-3.5.27]# chkconfig --add squid
[root@localhost squid-3.5.27]# chkconfig squid on
[root@localhost squid-3.5.27]# service squid restart
正在关闭Squid...
正在启动Squid...

 

 

[root@localhost squid-3.5.27]# squid -k parse
[root@localhost squid-3.5.27]# squid –k rec
[root@localhost squid-3.5.27]#squid -zX
[root@localhost squid-3.5.27]# squid
[root@localhost squid-3.5.27]# netstat -antp | grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      43693/(squid-1)   

 

[root@localhost squid-3.5.27]# iptables -F
[root@localhost squid-3.5.27]# iptables -A INPUT  -p tcp --dport 3128 -i ACCEPT		//接受入站的tcp包访问3128端口

关于部署web服务器

 

[root@web1 ~]# systemctl start httpd
root@web1 ~]# netstat -antp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      78583/httpd  

 

 

 

 

搭建透明搭理

 

部署squid服务器

[root@www ~]# vim /etc/squid.conf	
http_port 192.168.1.3:3128 transparent		//添加提供内网服务的IP地址,和支持透明代理选项 transparent

 

[root@www ~]# systemctl restart squid
[root@www ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1				//支持路由转发

 

[root@www ~]# iptables -F		
[root@www ~]# iptables -t nat -F		//先清除原有的策略
[root@www ~]# iptables -t nat -I PREROUTING -i ens37 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to 3128		//使得nat模式的在路由转发之前将ens37网卡进来的tcp的1.0网段的路由从80重定向给3128端口
[root@www ~]# iptables -t nat -I PREROUTING -i ens37 -s 192.168.1.0/24 -p tcp --dport 443 -j REDIRECT --to 3128		//同样将443的流量重定向到3128端口

 

route add -net 192.168.1.0/24 gw 12.0.0.10		//去往1.0网段的路由,下一跳是12.0.0.10

 

 

 

在这里插入图片描述

在这里插入图片描述

 

搭建反向代理

为什么要搭建反向代理

 部署squid服务器

iptables -F
iptables -t nat -F

 

[root@www ~]# vim /etc/squid.conf
# Squid normally listens to port 3128
http_port 12.0.0.10:80 accel vhost vport
cache_peer 12.0.0.7 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 12.0.0.13 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.taobao.com
//accel :反向代理加速模式
//vhost:支持域名或主机名来表示代理节点
//vport :支持IP和端口来表示代理节点
//parent :代表为父节点,上下关系,非平级关系
//80:代理内部web服务器的80端口
//0 :没有使用tcp,表示就一台squid服务器
//no-query :不做查询操作,直接获取数据
//originserver :指定是源服务器
//round-robin :指定squid通过轮询方式将请求分发到其中一台父节点
//max_conn :指定最大连接数
//weight :指定权重
//name :设置别名

 

部署web

[root@web1 ~]# echo "this is 1" > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd
[root@web2 ~]# echo "this is 2" > /var/www/html/index.html
[root@web2 ~]# systemctl restart httpd

 部署客户端

 在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

在这里插入图片描述

 

 

[root@www ~]# vim /etc/squid.conf
# should be allowed
acl host src 192.168.1.101/24					//源地址是192.168.1.101
acl MYLAN src 192.168.1.0/24    				//客户机网段
acl destinationhost dst 192.168.226.129/32      //目标地址为192.168.184.20 
acl MC20 maxconn 20                          	//最大并发连接20
acl PORT port 21                             	//目标端口21
acl DMBLOCK dstdomain .qq.com                	//目标域,匹配域内所有站点
acl BURL url_regex -i ^rtsp:// ^emule://     	//以rtsp://. emule://开头的URL,-i表示忽略大小写
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$ //以 .mp3、.mp4、.rmvb结尾的URL路径
acl WORKTIME time MTWHF 08:30-17:30          	//时间为周一-至周五8:30~17:30, "MTWHF"为每个星期的英文首字母

 

 

Squid的日志分析

 部署squid

[root@www ~]# yum install -y gd gd-devel pcre-devel 

 

[root@www ~]# tar zxvf sarg-2.3.7.tar.gz
[root@www ~]# cd /opt/sarg-2.3.7
[root@www sarg-2.3.7]# ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
[root@www sarg-2.3.7]# make && make install

 

vim /etc/sarg/sarg.conf
--7行--取消注释
access_log /usr/local/squid/var/logs/access.log  //指定访问日志文件
--25行--取消注释
title "Squid User Access Reports"     	 //网页标题
--120行--取消注释,修改
output_dir /var/www/html/sarg      		 //报告输出目录
--178行--取消注释
user_ip no           					 //使用用户名显示
--184行--取消注释,修改
topuser_sort_field connect reverse     	 //top排序中,指定连接次数采用降序排列,升序是normal
--190行--取消注释,修改
user_sort_field connect reverse      	 //对于用户访问记录,连接次数按降序排序
--206行--取消注释,修改
exclude_hosts /usr/local/sarg/noreport   //指定不计入排序的站点列表的文件
--257行--取消注释
overwrite_report no       			     //同名同日期的日志是否覆盖
--289行--取消注释,修改
mail_utility mailq.postfix				 //发送邮件报告命令
--434行--取消注释,修改
charset UTF-8        				 	 //指定字符集UTF-8
--518行--取消注释
weekdays 0-6         					 //top排行的星期周期
--525行--取消注释
hours 0-23          					 //top排行的时间周期
--633行--取消注释
www_document_root /var/www/html    		 //指定网页根目录

 

[root@www sarg-2.3.7]# touch /usr/local/sarg/noreport

 

ln -s /usr/local/sarg/bin/sarg /usr/local/bin/

[root@www sarg-2.3.7]# sarg
SARG: 纪录在文件: 2084, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/sarg/2021Jul28-2021Jul30

 

 

[root@www sarg-2.3.7]# systemctl stop squid
[root@www sarg-2.3.7]# systemctl start httpd

 

 

 

[root@www sarg-2.3.7]# vim /usr/local/sarg/report.sh
#!/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y)
#Get one week ago today
YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y)
/usr/local/sarg/bin/sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/sarg -z -d $YESTERDAY-$TODAY &> /dev/null
exit 0

[root@www sarg-2.3.7]# chmod +x /usr/local/sarg/report.sh 
[root@www sarg-2.3.7]# crontab -l
0 0 * * * /usr/local/sarg/report.sh		//每天0点执行一次脚本

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值