Squid代理服务器的应用--squid反向代理;ACL访问控制与sarg日志
程序员文章站
2022-07-06 12:38:23
...
文章目录
ACL访问控制:
ACL访问控制方式
●根据源地址,目标URL,文件类型等定义列表
Acl 列表名称 列表类型 列表内容......
●针对已定义的acl列表进行限制
http_access allow或deny 列表名称
ACL规则优先级
●一个用户访问代理服务器,Squdi会顺序匹配Squid中定义的所有规则列表,一旦匹配成功,立即停止匹配
●所有规则都不匹配,Squid会使用与最后一条相反的规则
常用的ACL列表类型
- Src—> 源地址
- Dst—> 目标地址
- Dstdomain—> 目标域
- Time —> 访问时间
- Maxconn —> 最大并发连接
- Url_regex —> 目标URL地址
- Urlpath——regex —> 整个目标URL路径
ACL列表的应用
最简单的ACL控制
- 1.禁止任何客户机使用次代理服务
- 2.允许多个局域网段在工作时间上网
- 3.通过黑名单限制
Squid ACL访问控制列表实验
实验环境
推荐步骤
1.基于之前安装好传统代理的环境,继续做(传统代理的安装参考上一篇的博客)
修改配置文件设置ACL规则
[aaa@qq.com init.d]# vim /etc/squid.conf
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localhost src 192.168.148.150/32 ##监控client客户端的主机(192.168.148.150/32)取名为localhost
acl localnet src 10.0.0.0/8
.....
# Deny requests to certain unsafe ports
http_access deny localhost ##调用localhost,设置拒绝访问
[aaa@qq.com init.d]# service squid reload ##重新加载配置文件
[aaa@qq.com init.d]# service squid restart ##重启服务
正在关闭 squid...
正在启动 squid...
2.打开客户端输入服务端的地址做访问测试
建立列表文件形式设置acl访问控制,文件中放入想禁用的IP地址
1.修改配置文件,创建列表
[aaa@qq.com squid]# vim /etc/squid.conf ##修改配置文件
将原先设置的删除,添加新的设置
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localhost src "/etc/squid/test.list" ##添加文件位置(绝对路径)
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
.....
# Deny requests to certain unsafe ports
http_access deny localhost ##调用localhost,设置拒绝访问
[aaa@qq.com init.d]# mkdir /etc/squid ##创建列表目录在/etc下
[aaa@qq.com init.d]# cd /etc/squid/
[aaa@qq.com squid]# vim test.list ##创建文件
192.168.148.150 ##写入要禁止访问的IP地址
[aaa@qq.com squid]# service squid reload ##重载服务
[aaa@qq.com squid]# service squid stop ##停止服务
[aaa@qq.com squid]# service squid start ##开启服务
正在启动 squid....
2.在客户端上输入web地址访问测试
sarg日志分析实验
实验环境
推荐步骤
1.将sarg工具拖到家目录下进行解压
[aaa@qq.com ~]# tar zxvf sarg-2.3.7.tar.gz ##解压工具到当前目录下
[aaa@qq.com ~]# cd sarg-2.3.7/
[aaa@qq.com sarg-2.3.7]# yum -y install gd gd-devel ##安装环境包图像处理工具gd
2.编译安装sarg工具,并修改sarg配置文件
[aaa@qq.com sarg-2.3.7]# mkdir /usr/local/sarg ##创建安装目录
[aaa@qq.com sarg-2.3.7]# ./configure --prefix=/usr/local/sarg \ ##指定sarg目录
> --sysconfdir=/etc/sarg \ ##配置文件
> --enable-extraprotection ##开启安全防护
[aaa@qq.com sarg-2.3.7]# make&&make install ##编译安装
[aaa@qq.com sarg-2.3.7]# cd /etc/sarg/ ##切换到sarg的配置文件下
[aaa@qq.com sarg]# vim sarg.conf ##修改配置文件
##配置文件中所有的都被注释了,我们需要取消注释一下内容
7 access_log /usr/local/squid/var/logs/access.log ##7行指定访问日志开启
25 title "Squid User Access Reports" ##25行网页标题
120 output_dir /var/www/html/squid-reports ##120行报告输出目录
178 user_ip no ##178行使用用户名显示
184 topuser_sort_field connect reverse ##184行top排序中有连接次数,访问字节,降序排列,升序是normal
206 exclude_hosts /usr/local/sarg/noreport ##206行不计入排序的站点列表文件
257 overwrite_report no ##257行同名日志是否覆盖
289 mail_utility mailq.postfix ##289行发送邮件报告命令
434 charset UTF-8 ##434行字符集UTF-8
518 weekdays 0-6 ##518行top排行的时间周期
525 hours 0-23 ##525行top排行的时间周期
633 www_document_root /var/www/html ##633行网页根目录
[aaa@qq.com sarg]# touch /usr/local/sarg/noreport ##创建不计入站点文件
[aaa@qq.com sarg]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/ ##将命令建立软链接
[aaa@qq.com sarg]# sarg ##开启sarg服务
SARG: 纪录在文件: 526, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/squid-reports/2020Sep07-2020Sep07
[aaa@qq.com squid-reports]# yum -y install httpd ##安装httpd服务
[aaa@qq.com squid-reports]# systemctl start httpd.service ##查看服务是否开启
3.打开客户端输入网址:192.168.148.135/squid-reports访问
可以设置周期性计划任务,每天生产报告
[aaa@qq.com squid-reports]# 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服务器,提高安全性
Squid反向代理实验
实验环境
推荐步骤
1.修改squid服务器的配置文件
[aaa@qq.com squid-reports]# vim /etc/squid.conf
#http_port 3128 ##注释掉
http_port 192.168.148.135:80 accel vhost vport
cache_peer 192.168.148.136 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1 ##节点服务器1最大访问30,权重1,别名web1
cache_peer 192.168.148.137 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2 ##节点服务器2最大访问30,权重1,别名web2
cache_peer_domain web1 web2 www.yun.com
[aaa@qq.com squid-reports]# systemctl stop httpd ##关闭httpd服务,不然端口号会被httpd服务占用
[aaa@qq.com squid-reports]# service squid stop ##关闭服务
[aaa@qq.com squid-reports]# service squid start ##开启服务
正在启动 squid....
2.打开一台新的虚拟机安装apache服务
[aaa@qq.com ~]# hostnamectl set-hostname web02 ##修改主机名方便区分
[aaa@qq.com ~]# su
[aaa@qq.com ~]# setenforce 0 ##关闭防护系统
[aaa@qq.com ~]# iptables -F ##清空防火墙规则
[aaa@qq.com ~]# yum -y install httpd ##安装apache服务
[aaa@qq.com ~]# cd /var/www/html/ ##切换到站点目录
[aaa@qq.com html]# vim index.html
<h1>this is test02</h1> ##写入页面信息
[aaa@qq.com html]# systemctl start httpd.service
同理web虚拟机也写入页面信息
[aaa@qq.com html]# cd /var/www/html/
[aaa@qq.com html]# vim index.html
<h1>this is test01</h1> ##写入页面信息
[aaa@qq.com html]# systemctl restart httpd.service
2.打开客户端修改
将代理端口号改为80
客户端配置DNS,按照图中步骤配置
打开cmd Ping一下测试是否连通
打开浏览器输入域名访问
采用的是轮询算法
上一篇: 理论+实验·CDN缓存加速传统模式