Squid

一、squid代理服务器应用

缓存代理概述

代理的基本类型

●传统代理:适用于Internet,需明确指定服务端,用户需要手动输入一个代理服务器的IP:PORT
●透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理,用户不需要指定代理服务器的IP:PORT,同时用户对于是否使用了代理服务器时无感知的
透明代理的实现策略:使用路由、防火墙规则进行重定向给代理服务器处理原理

代理的优点

在这里插入图片描述

提升web访问速度
隐藏客户机的真实IP地址

搭建squid

准备虚拟机

服务器IP
squid服务器192.168.59.129
web1192.168.59.128
web2192.168.59.130
cllent192.168.59.22

1、安装依赖包

yum -y install gcc gcc-c++ make

在这里插入图片描述

2、解压squid安装包

[root@squid opt]# tar xf squid-3.5.27.tar.gz

在这里插入图片描述

3、编译安装

cd squid-3.5.27/

[root@squid squid-3.5.27]# ./configure --prefix=/usr/local/squid 
> --sysconfdir=/etc 								#将配置文件修改到/etc目录下
> --enable-arp-acl 									#可在ACL中设置通过MAC地址进行管理,防止IP欺骗
> --enable-linux-netfilter 							#使用内核过滤
> --enable-linux-tproxy 							#支持透明模式
> --enable-async-io=100 							#异步i/o,提升存储性能
> --enable-err-language="Simplify_Chinese" 			#错误信息的显示语音
> --enable-underscore 								#允许URL中有下划线
> --enable-poll 									#使用Poll模式,提升性能
> --enable-gnuregex									#使用GNU正则表达式


make && make install

4、优化管理

ln -s /usr/local/squid/sbin/* /usr/local/sbin   //创建链接文件,优化路径
useradd -M -s /sbin/nologin squid   //创建程序用户
chown -R squid:squid /usr/local/squid/var/  //改变目录属主

5、修改squid配置

vim /etc/squid.conf

在这里插入图片描述

6、编写squid启动脚本

vim /etc/init.d/squid

#!/bin/bash
#chkconfig: 35 90 25
#config: /etc/squid.conf
#pidfile: /usr/local/squid/var/run/squid.pid
#Description: Squid - Internet Object Cache

PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"

case "$1" in
        start)
                netstat -utpln | grep squid &>/dev/null
                if [ $? -eq 0 ]
                        then
                                echo "Squid is running"
                else
                        $CMD
                fi
        ;;
        stop)
                $CMD -k kill &>/dev/null
                rm -rf $PID &>/dev/null
        ;;
        status)
                [ -f $PID ] &>/dev/null
                        if [ $? -eq 0 ]
                          then
                                netstat -utpln | 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 "用法:{start | stop | restart | reload | check | status}"
esac

chmod +x /etc/init.d/squid  //赋予执行权限
chkconfig --add squid       //加入系统服务
chkconfig squid on          //指定squid在各等级为on
netstat -antp | grep squid     查看squid有没有开启

在这里插入图片描述

一、搭建传统代理

1、修改配置文件

vim /etc/squid.conf

在这里插入图片描述
2、设置防火墙

iptables -F   //清空规则
systemctl restart firewalld.service  //重启防火墙
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT  //允许来自tcp3128的流量进入

3、配置web服务器
安装启动httpd

yum -y install httpd
systemctl start httpd

4、到win虚拟机测试

在这里插入图片描述
设置代理
在这里插入图片描述
访问看看
在这里插入图片描述
在这里插入图片描述
看看日志
在这里插入图片描述

在这里插入图片描述
可以看到他其实是从squid服务器上代理过去

二、搭建透明代理

1、设置双网卡
在squid添加一块vmnet1网卡 与 client端vmnet1相连
在这里插入图片描述
在这里插入图片描述

[root@squid squid-3.5.27]# cd /etc/sysconfig/network-scripts/
[root@squid network-scripts]# cp ifcfg-ens33 ifcfg-ens37
[root@squid network-scripts]# vim ifcfg-ens37

在这里插入图片描述
2、修改squid配置

vim /etc/squid.conf

在这里插入图片描述
3、添加防火墙规则

[root@squid ~]# iptables -t nat -I PREROUTING -i ens37 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
[root@squid ~]# iptables -t nat -I PREROUTING -i ens37 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
[root@squid ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
[root@squid ~]# systemctl restart squid	//重启squid
[root@squid ~]# netstat -antp | grep squid

在这里插入图片描述
4、在web服务器上添加静态路由

route add -net 192.168.100.0/24 gw 192.168.59.129

5、访问看看
先关闭win10上刚刚传统代理开启的代理,清楚缓存
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
依然能够访问,证明了透明代理不需要指定squid

三、ACL控制访问

在配置文件/etc/squid.conf 中,ACL访问控制通过以下两个步骤来实现:

① 使用acl 配置项定义需要控制的条件;

② 通过http_access配置项对已定义的列表做“允许”或“拒绝”访问的控制。

格式:
acl 列表名称 列表类型 列表内容
列表名称:名称自定义,相当于给acl起个名字(也会被http_access 调用)
列表类型:必须使用squid预定义的值,对应不同类别的控制条件
列表内容:是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格为分隔,为“或”的关系)

1、修改配置试试

vim /etc/squid.conf

在这里插入图片描述
在这里插入图片描述
保存并开启squid

2、到client上访问看看
在这里插入图片描述

四、sarg日志分析工具

1、安装依赖包

yum install -y gd gd-devel pcre-devel

2、解压安装包

tar xzf sarg-2.3.7.tar.gz

在这里插入图片描述
3、编译安装

[root@squid opt]# cd sarg-2.3.7/

[root@squid sarg-2.3.7]# ./configure --prefix=/usr/local/sarg \
> --sysconfdir=/etc/sarg \				#设置配置文件目录,
> --enable-extraprotection				#额外安全防护

[root@squid sarg-2.3.7]# make && make install

4、修改sarg配置文件

vim /etc/sarg/sarg.conf 

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5、启动sarg

[root@squid sarg-2.3.7]# touch /usr/local/sarg/noreport
[root@squid sarg-2.3.7]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
[root@squid sarg-2.3.7]# sarg

在这里插入图片描述
6、安装httpd

yum -y install httpd
systemctl start httpd

7、测试看看

在这里插入图片描述
添加计划任务

[root@squid sarg-2.3.7]# vim /usr/local/sarg/report.sh
#!/bin/bash
#Get current date								#获取准确时间
TODAY=$(date +%d/%m/%Y)
#Get one yesterday ago today					#获取前一天
YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y)
/usr/local/sarg/bin/sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/sarg -z -d $YESTERDAY-$TODAY &> /dev/null
exit 0


[root@squid sarg-2.3.7]# chmod +x /usr/local/sarg/report.sh
[root@squid sarg-2.3.7]# crontab -e
0 0 * * * /usr/local/sarg/report.sh

[root@squid sarg-2.3.7]# crontab -l
0 0 * * * /usr/local/sarg/report.sh

五、搭建反向代理

1、关闭防火墙

systemctl stop firewalld.service

2、更新配置

[root@squid sarg-2.3.7]# vim /etc/squid.conf
 60 #http_port 192.168.100.128:3128 transparent
 61 http_port 192.168.59.129:80 accel vhost vport        #accel :反向代理加速模式  vhost:支持域名或主机名来表示代理节点  vport :支持IP和端口来表示代理节点
 62 cache_peer 192.168.59.128 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1          #parent :代表为父节点,上下关系,非平级关系   #80:代理内部web服务器的80端口  #0 :没有使用icp,表示就一台squid服务器  #no-query :不做查询操作,直接获取数据   originserver :指定是源服务器 round-robin :指定squid 通过轮询方式将请求分发到其中一台父节点  max_conn :指定最大连接数  weight :指定 权重  name :设置别名
 63 cache_peer 192.168.59.130 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
 64 cache_peer_domain web1 web2 www.dyf.com

在这里插入图片描述

在这里插入图片描述

3、配置web网页文件

[root@web1 ~]# echo 'hello' > /var/www/html/index.html
[root@web2 ~]# echo 'dyf' > /var/www/html/index.html

4、配置客户端

在这里插入图片描述
在这里插入图片描述
访问结果

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值