●继承上一个试验的环境:squid传统代理和透明代理
●https://blog.csdn.net/weixin_47151650/article/details/108430818
●VMware软件
●一台centos7虚拟机作为squid服务器,添加一个网卡,IP地址为:192.168.100.100和192.168.100.1(仅主机模式)
●一台centos7虚拟机作为web服务器,IP地址为:192.168.100.10
●一台win10虚拟机作为client测试机,IP地址为:192.168.10.33(仅主机模式)
●通过ACL访问控制实现对主机允许和拒绝访问
●通过sarg部署,每天生成日志文件,方便访问
●实现squid的反向代理
●ACL(Access Control List,访问控制列表),可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤
●ACL访问控制的步骤
●使用acl配置项定义需要控制的条件
●通过http_access配置项对已定义的列表做允许或拒绝的访问控制
ACL
src 源地址
dst 目标地址
port 目标地址
dstdomain 目标域
time 访问时间
maxconn 最大并发连接
url_regex 目标URL地址
urlpath_regex 整个目标URL路径
设置ACL访问规则
[root@squid ~]# vim /etc/squid.conf 'squid配置文件'
# should be allowed
acl hostlocal src 192.168.10.100/32 '监控client客户端的主机(192.168.10.100/32取名为hostlocal'
# Deny requests to certain unsafe ports
http_access deny hostlocal '调用hostlocal,设置拒绝访问'
[root@squid ~]# service squid restart
client客户端尝试访问web端,client客户端先清除浏览器数据
ACL策略设置成功,已拒绝192.168.100.10的主机访问
因为我们接下来还需要使用client客户端做测试,所以删除刚刚设置的ACL规则,并重启squid服务
●Sarg(Squid Analysis Report Generator),是一款Squid 日志分析工具,采用HTML 格式,详细列出每一位用户访问Internet 的站点信息、时间占用信息、排名、连接次数、访问量等。
在squid服务器上部署sarg
[root@localhost sarg-2.3.7]# yum install gd gd-devel -y
[root@localhost sarg-2.3.7]# mkdir /usr/local/sarg
[root@squid sarg-2.3.7]# ./configure --prefix=/usr/local/sarg \ '指定sarg目录'
> --sysconfdir=/etc/sarg \ '配置文件的目录'
> --enable-extraprotection '开启安全防护'
[root@squid sarg-2.3.7]# make && make install
修改sarg配置文件
[root@squid sarg-2.3.7]# cd /etc/sarg/
[root@squid sarg]# vim sarg.conf '下面我都标了行号,根据行号修改'
7 access_log /usr/local/squid/var/logs/access.log '指定访问日志文件'
25 title "Squid User Access Reports" '网页标题'
120 output_dir /var/www/html/squid-reports '报告输出目录'
178 user_ip no '使用用户名显示'
184 topuser_sort_field connect reverse 'top排序中有连接次数,访问字节,降序排列,升序是normal'
190 #user_sort_field BYTES reverse
206 exclude_hosts /usr/local/sarg/noreport '不计入排序的站点列表文件'
257 overwrite_report no '同名日志是否覆盖'
289 mail_utility mailq.postfix '发送邮件报告命令'
434 charset UTF-8 '使用字符集'
518 weekdays 0-6 'top排行的时间周期'
525 hours 0-23 'top排行的时间周期'
633 www_document_root /var/www/html '网页根目录'
[root@squid sarg]# touch /usr/local/sarg/noreport '添加不计入站点文件,添加的域名将不被显示'
[root@squid sarg]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/ '创建sarg命令的软连接'
[root@squid sarg]# sarg '生成报告'
SARG: 纪录在文件: 791, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/squid- reports/2020Sep06-2020Sep07 '提示报告生成在这个目录,我们进入这个目录查看一下'
安装apache服务
[root@squid sarg]# yum install httpd -y
[root@squid sarg]# systemctl start httpd
查看192.168.100.100/squid-reports,可以看到详细的访问信息
周期性计划任务,每天生成报告
[root@squid sarg]# sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports/ -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y)
如果 Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用
工作机制
●缓存网页对象,减少重复请求
●将互联网请求轮训或按权重分配到内网Web服务器
搭建两台web服务器,修改网页,进行访问
[root@squid sarg]# vim /etc/squid.conf
# Squid normally listens to port 3128
http_port 192.168.100.100:80 accel vhost vport '监控本机80端口'
cache_peer 192.168.100.10 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web01 '节点服务器1最大访问30,权重1,别名web01'
cache_peer 192.168.100.8 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web02 '节点服务器2最大访问30,权重1,别名web02'
[root@squid sarg]# service squid restart '重启服务'
正在关闭 squid...
正在启动 squid...
[root@squid sarg]# netstat -ntap |grep 80
tcp 0 0 192.168.100.100:80 0.0.0.0:* LISTEN 24528/(squid-1)
设置域名解析(以administrator用户登录)
C盘-Windows-system32-drivers-etc-hosts
设置浏览器代理:因为使用的是谷歌浏览器,以谷歌浏览器为例