前言
部署 Squid 代理服务的正向代理,咱们已经实现
可以参考前文 Squid ---- 正向代理
下面将实现 acl 访问控制 、sarg 日志分析 以及 Squid的反向代理
部署前规划
数量 | 操作系统 | 服务器 | ip地址 |
---|---|---|---|
1 | centos7.4版本 | squid | 20.0.0.101 ;192.168.100.1 |
1 | centos7.4版本 | web | 20.0.0.102 |
1 | centos7.4版本 | web2 | 20.0.0.103 |
1 | windows | 客户端 | 192.168.100.10 |
-
squid服务器为双网卡ens33为20.0.0.101;ens36冲当网关为192.168.100.1
-
关闭防火墙、核心防护
-
squid服务器上做
vi /etc/sysctl.conf
net.ipv4.ip_forward=1iptables -I INPUT -p tcp --dport 3128 -j ACCEPT(注意要清空防火墙规则)
-
web、web2服务器上做
route add -net 192.168.100.0/24 gw 20.0.0.101
安装httpd;并开启 -
四台服务器能相互ping通
-
前置环境请参考前文
acl 访问控制
-
测试前
-
在squid服务器上(20.0.0.101)
vim /etc/squid.conf
acl hostlocal src 192.168.100.10/32 ####第7行下,添加
http_access deny hostlocal ###31行下,添加
service squid reload
然后去windows客户端测试,清空网页缓存,设置网页代理地址,重新登网页输入 20.0.0.101 ;会显示拒绝连接
- acl控制访问后
sarg 日志分析
- 在squid服务器上(20.0.0.101)
先得把之前做的acl访问控制要删除,要不然连网页都访问不了
1、将安装包上传至家目录并解压
tar zxvf sarg-2.3.7.tar.gz
cd sarg-2.3.7/
2、安装组件gd库
yum -y install gd gd-devel ###图像处理
3、创建工作目录
mkdir /usr/local/sarg
4、安装配置
./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \
--enable-extraprotection
make -j4
make install
5、修改配置文件
cd /etc/sarg
cp sarg.conf sarg.conf.bak ####备份文件
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 ####使用用户名显示
第206行: exclude_hosts /usr/local/sarg/noreport ####不计入排序的站点列表文件(需要创建这个文件)
第184行: topuser_sort_field connect reverse ###top排序中有连接次数、访问字节、降序排列 升序是normal(BYTES 修改为 connect)
第190行: user_sort_field reverse ###用户访问记录、连接次数、访问字节按降序排序(BYTES意思为设定,去掉,要不然报错)
第257行: overwrite_report no ###同名日志是否覆盖
第289行: mail_utility mailq.postfix ###发送邮件报告命令(将 mailx 修改为 mailq.postfix)
第434行: charset UTF-8 ###使用字符集(将 Latin1 改为 UTF-8)
第518行: weekdays 0-6 ###top排序的星期周期
第525行: hours 0-23 ###top排序的时间周期
第633行: www_document_root /var/www/html ###网页根目录
--------------------------------------------------------------------------------------
grep -v "^#" sarg.conf ###验证文件,开启项全部会显示出来
6、创建添加不计入站点文件(第206行那个需要创建的文件),添加的域名将不被显示在排序中,并做优化
touch /usr/local/sarg/noreport
ln -s /usr/local/sarg/bin/sarg /usr/local/bin
7、先去 /etc/sarg/sarg.conf 文件中关闭 190行,在启动 sarg 就会生成报告
vim /etc/sarg/sarg.conf
第190行,加#号
sarg
显示:
SARG: Records in file:226,reading: 100.00%
SARG: Successful report generated on /var/www/html/squid-reports/2019Dec05-2019Dec05
8、安装httpd
cd /var/www/html/squid-reports/ ###会有生成的报告
yum -y insatll httpd ###rpm -q httpd 可以过滤下看看有没有
systemctl start httpd
ls /var/www/html/ ###显示squid-reports ,等下访问网页要在地址 后面添加/squid-reports
9、去windows客户端 网页输入: http://192.168.100.1/squid-reports ;如果显示无法访问,尝试关闭防火墙
你就会看到sarg 日志统计的页面
###(crontab)周期性计划任务执行每天生成的报告(输出这个任务报告就是当天(24小时)的任务报告)
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)
然后重登windows客户端 网页输入: http://192.168.100.1/squid-reports/index.html 就会多出一条任务报告
反向代理
- 在 web 服务器上(20.0.0.102)
做网页区分
cd /var/www/html
vim index.html
<h1>this is web1</h1>
测试一下 网页输入: 20.0.0.102 显示 this is web1
- 在 squid 服务器上
1、清理squid服务器的防火墙规则
systemctl start firewalld
iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
2、建立反向代理:
vim /etc/squid.conf ###添加以下4行
修改60行: http_port 20.0.0.101:80 accel vhost vport ####定义到自己的ip端口访问虚拟主机,虚拟端口
cache_peer 20.0.0.102 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 20.0.0.103 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.kao.com
service squid restart
- 在 web2 服务器(20.0.0.103)
hostnamectl set-hostname web2
systemctl stop firewalld
setenforce 0
yum -y install httpd
systemctl start httpd
cd /var/www/html
vim index.html
<h1>this is web2</h1>
route add -net 192.168.100.0/24 gw 20.0.0.101
测试下,网页输入:20.0.0.103 显示this is web2
- 做域名测试
###去squid服务器上调换接口对象
systemctl stop httpd
netstat -anpt | grep 80 ###显示没有;端口关闭
service squid stop
service squid start
netstat -anpt | grep 80 ####这时候80端口httpd换成了squid
###然后在windows客户端 做主机映射(必须得是root账户能设置)
如果不是root用户先设置 :我的电脑(右击)----> 管理 ----> 本地用户和组 ----> Administrator(双击取消账户禁用;右击设置密码,选继续,*****)----> 切换用户
找到 :C/Windows/system32/drivers/etc/hosts : 20.0.0.101 www.kao.com
网页上设置代理 :20.0.0.101 80
###在访问 www.kao.com 轮询显示 this is web1 、this is web2
———————————————————————————————————
关于 Squid代理服务器 到此结束 ,并不复杂,前置环境很重要,注意是否开放端口,是否启动服务,理解其中原理,仔细一些并不难。
感谢浏览~