文章目录
前言
具体squid环境搭建请点击下面的链接,这里就不再介绍
squid 环境搭建.
一、squid的ACL访问控制
Squid提供了强大的代理控制机制,通过合理设置ACL(Access Control List,访问控制列表)并进行限制,可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤。
ACL访问控制的步骤:
1、使用 acl 配置项定义需要控制的条件
定义格式:acl 列表名称 列表类型 列表内容 …
2、通过http_access配置项对已定义的列表做“允许”或“拒绝”访问的控制
二、ACL设置的两种方式
2.1、直接在squid的配置文件里修改
vim /etc/squid.conf
acl hostlocal src 192.168.10.160/32 #针对固定的源ip地址
acl MYLAN src 192.168.220.0/24 #针对某一网段
acl destionhost dst 192.168.220.130/32 #针对具体的目标ip地址
acl MC20 maxconn 20 #访问的最大并发连接数量
acl BURL url_regex -i ^rtsp:// ^emule:// #正则表达式的访问协议
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$ #访问的文件资源末尾
acl work time MTWHF 08:30-17:30 #访问时间
MTWHF:周一到周五
MTWHFAS:周一到周日
AC :周一 周三
http_access denyhostlocal #拒绝列表 (注意置顶)
具体配置
2.2、创建新文件,在配置文件里声明文件位置
mkdir /etc/squid #启用对象列表管理
vim sha.list
192.168.100.160 #目标web
vim /etc/squid.conf
acl hostlocal scr "/etc/squid/dest.list"
http_access deny hostlocal #拒绝列表 (注意置顶)
具体配置
三、sarg日志分析
sarg软件用来分析squid服务的日志
在上篇博客的基础上做squid反向代理实验,安装squid的具体步骤见上篇博客链接:squid代理介绍----传统代理、squid代理-----透明代理模式
squid代理设置方法专业介绍篇
3.1、sarg安装
//图像处理
yum -y install gd gd-devel httpd
//解压安装包
tar zxvf sarg-2.3.7.tar.gz -C /opt/
cd /opt/sarg-2.3.7/
./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \
--enable-extraprotection #额外安全防护
make && make install
3.2、修改配置文件
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 ###网页根目录
touch /usr/local/sarg/noreport ###建立不生成报告的主机列表文件
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
//启动sarg日志分析和squid网页服务
yum install httpd -y
root@squid sarg]# systemctl start httpd
[root@squid sarg]# systemctl start httpd
[root@squid sarg]# systemctl stop firewalld
[root@squid sarg]#
[root@squid sarg]# sarg
SARG: 纪录在文件: 237, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/squid-reports/2020Sep07-2020Sep07
[root@squid sarg]#
3.3、验证
3.3.1、在客户端机浏览器输入:http://192.168.10.3/squid-reports/index.html
换个浏览器地址,重新访问192.168.100.3 网页
重新生成报告
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)
检查发现多生成了一行记录
3.3.2、squid服务器设置周期性任务
crontab -e
*/1 * * * * /usr/local/bin/sarg #这里为了效果快速呈现出,设置了每隔1分钟
四. 传统代理模式搭建squid 反向代理
4.1 基本配置方法
实现反向代理最基本的两处选项,修改squid.conf
1.在squid.conf中的http_port配置住行添加vhost选项,以支持虚拟主机映射
vi /etc/squid/squid.conf
http_port squid服务器IP vhost
2.指定web服务器主机位置
使用cache_peer配置指定web服务器主机位置,格式如下
cache_peer web服务器IP 服务器类型 http端口 icp端口 【可选项】
服务器类型一般使用parent(父服务器)icp端口用户连接相邻ICP缓存服
务器(通常为另外一台squid主机),如果没有使用0; 可选项提供缓存
时的一些附件参数,如originserver表示该服务器作为提供web服务的原始
主机,weight=n指定服务器的优先权重,n为整数,数值越大优先级越高
,默认为1. ;max-conn=n 指定反向代理主机到该web服务器的最大连接数。
4.2 具体配置
4.2.1 配置方法
反向代理使用 80端口 ,需注意80 端口不要冲突,或被别的程序调用
去掉透明代理设置反向代理通过80端口,访问虚拟主机,虚拟节点
http_port 192.168.100.3:80 accel vhost vport
节点服务器1最大访问30,权重1,别名web1
cache_peer 192.168.100.4 parent 80 0 no-query originserver round-robin max-conn=30 weight=1 name=web1
cache_peer 192.168.100.5 parent 80 0 no-query originserver round-robin max-conn=30 weight=1 name=web2
访问yun.com匹配web1,web2节点
cache_peer_domain web1 web2 www.yun.com
4.2.2 squid -k parse 检查语法
4.2.3 修改客户端本地hosts文件
4.2.4 设置浏览器代理服务器的 端口为 80
4.2.5 访问测试,测试成功
五. 设置透明模式的反向代理
5.1 开启路由功能
[root@squid network-scripts]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@squid network-scripts]# sysctl -p //立即生效
5.2 修改配置文件
vim /etc/squid.conf
5.3 客户机使用IP访问squid
5.4 客户机使用www.yun.com 访问squid
5.4.1 修改配置文件
新增一行 cache_peer_domain web1 web2 www.yun.com
vim /etc/squid.conf
http_port 80 accel vhost
cache_peer 192.168.100.4 parent 80 0 no-query originserver round-robin max-conn=30 weight=1 name=web1
cache_peer 192.168.100.5 parent 80 0 no-query originserver round-robin max-conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.yun.com
cache_effective_user squid
cache_effective_group squid
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB
5.4.2 客户端设置
修改本地hosts 文件
5.4.3 浏览器访问 squid 测试
六 . squid服务器的配置文件说明
squid 的主配置文件是 /etc/squid/squid.conf,所有squid的设定都是在这个文件里配置,下面我们来讲解一下该文件的配置选项。
http_port 3128 //设置监听的IP与端口号
cache_mem 64 MB //额外提供给squid使用的内存,squid的内存总占用为 X * 10+15+“cache_mem”,其中X为squid的cache占用的容量(以GB为单位),
//比如下面的cache大小是100M,即0.1GB,则内存总占用为0.1*10+15+64=80M,推荐大小为物理内存的1/3-1/2或更多。
maximum_object_size 4 MB //设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘
minimum_object_size 0 KB //设置squid磁盘缓存最小文件
maximum_object_size_in_memory 4096 KB //设置squid内存缓存最大文件,超过4M的文件不保存到内存
cache_dir ufs /var/spool/squid 100 16 256 //定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh //log文件日志格式
access_log /var/log/squid/access.log combined //log文件存放路径和日志格式
cache_log /var/log/squid/cache.log //设置缓存日志
logfile_rotate 60 //log轮循 60天
cache_swap_high 95 //cache目录使用量大于95%时,开始清理旧的cache
cache_swap_low 90 //cache目录清理到90%时停止。
acl localnet src 192.168.1.0/24 //定义本地网段
http_access allow localnet //允许本地网段使用
http_access deny all //拒绝所有
visible_hostname squid.david.dev //主机名
cache_mgr mchina_tang@qq.com //管理员邮箱