Squid代理服务器及应用

一,Squid 代理服务器介绍
Squid 是一个高性能、开源的代理缓存服务器和 Web 缓存进程,支持 FTP、Internet Gopher、HTTPS 和 SSL 等多种协议。它通过一个非阻塞的、I/O 事件驱动的单一进程处理所有的 IPV4 或 IPV6 协议请求。
Squid 由一个主服务程序 squid,和 DNS 查询程序 dnsserver,另外还有一些可选的请求重写、执行认证程序组件,及一些管理和客户端工具构成。
Squid 提供了丰富的访问控制、认证和日志环境, 用于开发 web 代理和内容服务网站应用。

三、SQUID缓存的存放方式:
每一台Squid 代理服务器上都有若干颗硬盘,每颗硬盘又分割成多个分区,每一个分区又可建立很多目录,目录下才放文件(Squid 把它叫object)。

四、SQUID的查询方式:
SQUID通过查询表的方式来定位某个资源的位置,所查询的表叫Hash table 和Digest table;Digest table在这里可以称之为摘要或者索引,它记录了磁盘上每个分区,每个目录里存的缓存摘要,Hash table在这里可以称之为目录或者提纲,它记录所有的Digest table表信息,SQUID接受到请求后先查询Hash table,在根据Hash table所指向的Digest table查询需要的信息。

五、SQUID服务器之间的关系:
SQUID服务器存在两种工作关系,一种为Child、Parent,当child squid server没有用户需要的数据时,就象parent server发出请求,并持续等待,直到parent server回应自己为止;另外一种为ibling,当本地SQUID server没有用户请求数据时,会向sibling server发出请求,如果sibling server没有资料则会向上级sibling或者INTERNET发送数据请求

六、SQUID运作模式

  1. 当Squid Server 没有资料时,会先向Sibling 的Squid Server 要资料,如果Sibling没资料,就跳过它直接向Parent 要。
  2. 向Parent 要资料,然後一直等,直到Parent 给它资料为止(Parent 自己有的资料或上Internet 去拿)。
  3. 没有Parent 时,就自己上Internet 去拿。
  4. 如果这三者都拿不到资料,才向用户端回报拿不到资料。
    一般而言,把网路上一层的Squid Server 设成Sibling 是不错的选择(例如:一个学校将所在城市网和附近的大学设成Sibling),因为网路上一层的Squid Server 服务对象较多,其硬件功能较强,离我们比较近,速度也比较快;万一要不到资料,我们还可以自己上Internet 去拿。那什麽时候设Parent?当您的出口只有一个,或上一层Squid Server 拿不到资料,自己也一定拿不到,只好将上一层Squid Server 设为Parent。
    七,实验
    搭建Squid代理服务器
    1、编译安装
yum -y install gcc gcc-c++ make		##安装依赖环境
cd /opt		##上传软件包squid-3.5.27. tar.gz到/opt目录下
tar xvf squid-3.5.27.tar.gz
cd squid-3.5.27/
./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
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/		##改变目录属主

2.修改配置文件
vim /etc/squid.conf

56行插入
56 http_access allow all		##放在http_access deny all之前,允许任意客户机使用代理服务,控制规则自上而下匹配
57 http_access deny all
60 http_ port 3128		##用来指定代理服务监听的地址和端口(默认的端口号为3128)
60行下面插入
61 cache_effective_user squid	##添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功
62 cache_effective_group squid	##添加,指定账号基本组
68 coredumpl dir /usr/ local/ squid/var/ cache/ squid	##指定缓存文件目录

在这里插入图片描述
3.编写脚本
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

4.开启服务

chmod +x letc/init.dl squid
chkconfig --add squid
chkconfig squid on
 service squid restart    #验证脚本可以使用service 管理

八,代理操作实验
1.实验搭建
squid;192.168.35.40
web1;192.168.35.10
web2;192.168.35.20
win10;192.168.35.150

2.更改配置文件
vim /etc/squid.conf

http_access allow all
http_access deny all
http_port 3128
cache_effective_user squid
cache_ effective_ group squid
#63行插入
cache_mem 64 MB		
reply_body_max_size 10 MB	
maximum_object_size 4096 KB 

在这里插入图片描述
3.重启rquid服务

service squid restart
iptables -F	##修改防火墙规则
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT	##允许端口3128进入

在这里插入图片描述

  1. web端开启httpd服务
yum -y install httpd
netstat -antp | grep 80
echo "www.qqq.com" > /var/www/html/index.html
echo "www.www.com" > /var/www/html/index.html

5.win10配置
在这里插入图片描述
在这里插入图片描述
测试一下
在这里插入图片描述
九,透明代理
环境配置
Squid 服务器;ens33 :192.168.35.40
Squid 服务器;ens36 192.168.10.1(win10的网关)
web1 服务器;192.168.35.10
web2 服务器;192.168.35.20
win10;192.168.10.100 (网关为192.168.10.1)
1,Squid服务器增加网卡

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37
vim ifcfg-ens37		##网卡ens37无须设置网关
systemctl restart network

在这里插入图片描述
2.修改Squid配置文件

vim /etc/squid.conf
	60 http_port 192.168.10.1:3128 transparent		##增加一条
service squid restart		##重启服务

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

iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT	##允许端口3128进入
iptables -t nat -I PREROUTING -i ens37 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128	
iptables -t nat -I PREROUTING -i ens37 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128	

在这里插入图片描述
4.web1服务器添加一条静态路由(前提是不要把网关指向squid服务器的网卡)

route add -net 192.168.10.0/24 gw 192.168.35.40
echo "www.qqq.com" > /var/www/html/index.html		##web1添加网页内容
echo "www.www.com" > /var/www/html/index.html		##web2添加网页内容

5.客户端关闭代理,修改win10地址为100网段
在这里插入图片描述
验证
在这里插入图片描述
6.访问控制
ACL访问控制
在配置文件/etc/squid.conf 中,ACL访问控制通过以下两个步骤来实现:
(1) 使用acl 配置项定义需要控制的条件;
(2) 通过http_access配置项对已定义的列表做“允许”或“拒绝”访问的控制。
①定义访问控制列表
格式:
拒绝访问

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

vim /etc/squid.conf

8 acl host src 192.168.10.100/24 ##8行插入;地址为192.168.10.100
32 http_access deny host ##32行插入,调用地址并拒绝它访问

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7.4、Squid 日志分析
安装sarg日志工具

yum install -y gd gd-devel pcre-devel 		##安装图像处理软件包
mkdir /usr/local/sarg
tar zxvf sarg-2.3.7.tar.gz -C /opt/	##将zxvf sarg-2.3.7.tar.gz压缩包上传到/opt目录下

cd /opt/sarg-2.3.7
./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \     #配置文件目录,默认是/usr/loca/etc
--eenable-xtraprotection       #额外安全防护

./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
make && make install

安装图像处理软件包

yum install -y gd gd-devel pcre-devel 
mkdir /usr/local/sarg

2.将zxvf sarg-2.3.7.tar.gz压缩包上传到/opt目录下解压

tar zxvf sarg-2.3.7.tar.gz -C /opt/

3.编译安装

cd /opt/sarg-2.3.7
./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \       #配置文件目录,默认是/usr/loca/etc
--eenable-xtraprotection       #额外安全防护
./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
make && make install

4.修改配置文件
vim /etc/sarg/sarg.conf

--7行--取消注释
access_log /usr/local/squid/var/logs/access.log  #指定访问日志文件
--25行--取消注释
title "Squid User Access Reports"     	#网页标题
--120行--取消注释,修改
output_dir /var/www/html/sarg      		#报告输出目录
--178行--取消注释
user_ip no           					#使用用户名显示
--184行--取消注释,修改
topuser_sort_field connect reverse     	#top排序中,指定连接次数采用降序排列,升序是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          #指定字符集UTF-8
--518行--取消注释
weekdays 0-6          #top排行的星期周期
--525行--取消注释
hours 0-23           #top排行的时间周期
--633行--取消注释
www_document_root /var/www/html      #指定网页根目录

5.添加不计入站点文件,添加的域名将不被显示在排序中

touch /usr/local/sarg/noreport

6.创建软链接

ln -s /usr/local/sarg/bin/sarg /usr/local/bin/

7.运行

sarg     #启动一次记录

在这里插入图片描述
8.验证

yum install httpd -y
systemctl start httpd

查看sarg报告网页。

在这里插入图片描述
9.优化-添加定时报告
vim /usr/local/sarg/report.sh

	#!/bin/bash
	#Get current date
	TODAY=$(date +%d/%m/%Y)
	#Get one week 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
chmod +x /usr/local/sarg/report.sh 
crontab -e
	0 0 * * * /usr/local/sarg/report.sh

在这里插入图片描述
10.反向代理
1.部署环境
squid;192.168.35.40
web1;192.168.35.10
web2;192.168.35.20
client;192.168.35.100

2.开启防火墙、本地关闭HTTPD

systemctl start firewalld
systemctl stop httpd
iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT 
service squid reload

在这里插入图片描述
vim /etc/squid.conf

32 #http_access deny host		##注释掉不允许win10的访问
62 # http_port 192.168.10.1:3128 transparent
63 http_port 192.168.35.40:80 accel vhost vport		
64 cache_peer 192.168.35.10 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
65 cache_peer 192.168.35.20 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
66 cache_peer_domain web1 web2 www.qqq.com		

结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值