squid反向代理与sarg日志分析实验

一、实验构成

构成
squid反向代理服务器 20.0.0.21
node1 web服务器 20.0.0.24
node 2 web服务器20.0.0.26
win10测试机 20.0.0.28

需求:
在win10机上测试能在两个web上来回切换

二、squid反向代理实验

首先把所有防火墙规则清空,核心防护关闭

[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -t nat -F
[root@localhost ~]# setenforce 0

2.1squid服务器安装与基础配置

  • 准备安装包squid-3.4.6.tar.gz,解压
[root@localhost opt]# tar zxvf squid-3.4.6.tar.gz
  • 配置参数
[root@localhost opt]# cd squid-3.4.6/
./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@squid squid-3.4.6]# make && make install
  • 配置软链接 ,添加程序用户,更改目录权限
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
useradd -M -s /sbin/nologin squid
chown -R squid.squid /usr/local/squid/var/
  • 配置文件修改
[root@localhost ~]# vim /etc/squid.conf

esc -->  :set nu显示行号
 56 http_access allow all	  把allow加在上面
 57 #http_access deny all     把原来的deny注释掉

http_port 3128					在端口下添加
cache_effective_user squid       ###缓存管理的用户
cache_effective_group squid	###缓存管理的组
  • 检查语法
[root@localhost ~]# squid -k parse
  • 初始化
[root@localhost ~]# squid -z      ##有点慢,耐心等待
  • 添加启动脚本,交给service管理
[root@localhost ~]# vim /etc/init.d/squid
PID="/usr/local/squid/var/run/squid.pid"   ##PID文件进程号
CONF="/etc/squid.conf"   ##主配置文件
CMD="/usr/local/squid/sbin/squid"   ##启动命令

case "$1" in
start)
                netstat -ntap | grep squid &> /dev/null
                if [ $? -eq 0 ]
                then 
                 echo "squid is running"
                 else
                 echo "正在启动 squid...." 
                 $CMD
                fi
                ;;
stop)
                $CMD -k kill &> /dev/null   ##关闭squid
                rm -rf $PID &> /dev/null    ##删除PID文件
                ;;
status)
                [ -f $PID ] &> /dev/null
                 if [ $? -eq 0 ]
                                then
                                 netstat -ntap | 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 "用法:$0{start|stop|reload|status|check|restart}"
                ;;
esac
"/etc/rc.d/init.d/squid" [] 46L, 1406C 已写入      
 [root@localhost init.d]# chmod +x squid 
[root@localhost init.d]# chkconfig --add squid
[root@localhost init.d]#  chkconfig --level 35 squid on
   
  • 启动
[root@localhost ~]# squid
[root@localhost ~]# netstat -anpt | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      86267/(squid-1)     

2.2web1

  • 安装httpd服务
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# netstat -anpt | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      66409/httpd     
  • 添加测试页内容,两个web内容设置不一样,方便查看是哪个web
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# vim index.html
<h1>this is web1</h1>
  • 测试一下网页
    在这里插入图片描述

2.3web2

  • 安装httpd服务
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# netstat -anpt | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      53048/httpd     
  • 添加测试页内容
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# vim index.html
<h1>this is web2</h1>
  • 测试一下网页
    在这里插入图片描述

2.4squid服务器反向代理配置

  • 配置文件
vim /etc/squid.conf
http_port 3128####这条删掉,在这条的位置添加下面几条
http_port 20.0.0.21:80 accel vhost vport
cache_peer 20.0.0.24 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 20.0.0.26 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.yun.com


wq保存
重启
root@localhost init.d]# service squid stop
[root@localhost init.d]# service squid start
[root@localhost init.d]# netstat -anpt | grep squid
tcp        0      0 20.0.0.21:80            0.0.0.0:*               LISTEN      86595/(squid-1)   

2.5在squid服务器上做域名解析

  • 安装bind包
[root@localhost ~]# yum -y install bind
  • 主配置文件named.conf
[root@localhost ~]# vim /etc/named.conf 

在这里插入图片描述

  • 区域配置文件named.rfc1912.zones
[root@localhost ~]# vim /etc/named.rfc1912.zones 

在这里插入图片描述

  • 区域数据配置文件yun.com.zone
[root@localhost ~]# cd /var/named
[root@localhost named]# ll
总用量 16
drwxrwx---. 2 named named    6 8月   4 2017 data
drwxrwx---. 2 named named    6 8月   4 2017 dynamic
-rw-r-----. 1 root  named 2281 5月  22 2017 named.ca
-rw-r-----. 1 root  named  152 12月 15 2009 named.empty
-rw-r-----. 1 root  named  152 6月  21 2007 named.localhost
-rw-r-----. 1 root  named  168 12月 15 2009 named.loopback
drwxrwx---. 2 named named    6 8月   4 2017 slaves
[root@localhost named]# cp -p named.localhost yun.com.zone   ##保留属性拷贝模板
[root@localhost named]# vim yun.com.zone 

在这里插入图片描述

  • 启动
[root@localhost named]# systemctl restart named
[root@localhost named]# netstat -antp | grep named
tcp        0      0 20.0.0.21:53            0.0.0.0:*               LISTEN      86869/named         
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      86869/named         
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      86869/named         
tcp6       0      0 ::1:53                  :::*                    LISTEN      86869/named         
tcp6       0      0 ::1:953                 :::*                    LISTEN      86869/named         

2.6验证

  • 把客户机的dns设置为squid服务器地址
    在这里插入图片描述
  • 网页访问www.yun.com
    在这里插入图片描述
    在这里插入图片描述
    可以看到随机出现,实现反向代理

三、sarg日志分析

  • 先装gd库
[root@localhost ~]# yum -y install gd gd-devel
  • 准备安装包sarg-2.3.7.tar.gz到/opt目录下
  • 安装
[root@localhost opt]# tar zxvf sarg-2.3.7.tar.gz
[root@localhost opt]# mkdir /usr/local/sarg				##创建工作目录
[root@localhost opt]# cd sarg-2.3.7/
[root@localhost sarg-2.3.7]# ./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \
--enable-extraprotection				##额外安全防护
[root@localhost sarg-2.3.7]# make && make install

  • 修改配置文件
[root@localhost sarg-2.3.7]# cd /etc/sarg
[root@localhost 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                    ## 报告输出目录(需要自己创建目录)生成网页html文件
178: user_ip no                                                                     ## 使用用户名显示
184: topuser_sort_field connect reverse                               ## top排序中有连接次数、访问字节、降序reverse排序 升序是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                                                                 ## 使用字符集
518: weekdays 0-6                                                                  ## top排行的星期周期,什么时间进行记录
525: hours 0-23                                                                      ## top排行的时间周期
633: www_document_root /var/www/html                             ## 网页根目录
  • 安装httpd服务
[root@localhost sarg]# yum -y install httpd
  • 添加不计入站点文件,添加软链接
[root@localhost sarg]# touch /usr/local/sarg/noreport
[root@localhost sarg]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
  • 开启sarg
[root@localhost sarg]# sarg
SARG: 纪录在文件: 6, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/squid-reports/2020Nov03-2020Nov03
[root@localhost sarg]# cd /var/www/html
[root@localhost html]# ls
squid-reports

  • 开启httpd
[root@localhost html]# systemctl start httpd
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

发现启不来
端口被占用,要换端口号

vim /etc/squid.conf

把倾听端口改为8080
在这里插入图片描述
重启squid服务

[root@localhost html]# service squid restart
正在关闭 squid...
正在启动 squid...
[root@localhost html]# netstat -anpt | grep squid
[root@localhost html]# netstat -anpt | grep squid
tcp        0      0 20.0.0.21:8080          0.0.0.0:*               LISTEN      89499/(squid-1)   

开启httpd

[root@localhost html]# systemctl start httpd
[root@localhost html]# netstat -anpt | grep 80
tcp        0      0 20.0.0.21:8080          0.0.0.0:*               LISTEN      89499/(squid-1)     
tcp6       0      0 :::80                   :::*                    LISTEN      89521/httpd         

在这里插入图片描述
在这里插入图片描述
反向代理正常

  • 查看日志分析页面
    在这里插入图片描述
    看到了客户端访问情况

在这里插入图片描述

  • 手动生成新日志报告
[root@localhost html]# 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)

刷新页面
在这里插入图片描述

  • 周期性计划性任务
crontab -e

0 0 * * * /bin/bash /usr/local/bin/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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值