squid 代理服务器应用

1、Squid 代理服务器 :

Squid 主要提供缓存加速、应用层过滤控制的功能。
 
代理的工作机制:

  • 代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。
  • 将获得的网页数据(静态 Web 元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。

代理服务器的概念及其作用:

代理服务器是一个位于客户端和原始(资源)服务器之间的服务器,为了从原始服务器取得内容,客户端向

代理服务器发送一个请求,并指定目标原始服务器,然后代理服务器向原始服务器转交请求并将获得的内容

返回给客户端。

其主要作用:

资源获取:代替客户端实现从原始服务器的资源获取;

加速访问:代理服务器可能离原始服务器更近,从而起到一定的加速作用;

缓存作用:代理服务器保存从原始服务器所获取的资源,从而实现客户端快速的获取;

隐藏真实地址:代理服务器代替客户端去获取原始服务器资源从而隐藏客户端真实信息。

Squid 代理的类型:

传统代理:适用于Internet,需在客户机指定代理服务器的地址和端口。
透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理。
反向代理:如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。

2、安装-squid-服务:

systemctl stop firewalld
systemctl disable firewalld
setenforce 0 

编译安装 squid:

yum -y install gcc gcc-c++ make
tar zxvf squid-3.5.28.tar.gz -C /opt/
cd /opt/squid-3.5.28 ./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/

  

修改 squid 的配置文件:

vim /etc/squid.conf

56行插入:

http_access allow all	  #放在 http_access deny all 之前,允许任意客户机使用代理服务
http_access deny all
http_port 3128 #用来指定代理服务监听的地址和端口(默认的端口号为 3128)

61行插入:

cache_effective_user squid	#添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功
cache_effective_group squid #添加,指定账号基本组 coredump_dir /usr/local/squid/var/cache/squid #指定缓存文件目录

 

squid 的运行控制:

squid -k parse         #检查配置文件语法是否正确 

启动squid:

squid -z 		#-z 选项用来初始化缓存目录
squid #启动 squid 服务 netstat -anpt | grep "squid"

创建squid 服务脚本:

vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid" case "$1" in
start)
netstat -natp | grep squid &> /dev/null
if [ $? -eq 0 ]
then
echo "squid is running"
else
echo "正在启动 squid..."
$CMD
fi
;;
stop)
$CMD -k kill &> /dev/null
rm -rf $PID &> /dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -natp | 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|status|reload|check|restart}"
;;
esac

#2345是默认自启动级别,如是-代表任何级别都不自启动;90是启动优先级,25是停止优先级,

优先级范围是0-100,数字越大,优先级越低。  

chmod +x /etc/init.d/squid
chkconfig --add squid
chkconfig --level 35 squid on

  

3、构建传统代理服务器:

需要三台主机:squid-server    、   web1   、  客户机

squid -swrver :

vim /etc/squid.conf

63行插入:

cache_mem 64 MB			#指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB #允许用户下载的最大文件大小,以字节为单位,当下载超过指定大小的Web对象时,浏览器的报错页面中会出现“请求或访问太大”的提示默认设置0表示不进行限制
maximum_object_size 4096 KB #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

service squid restart
systemctl restart squid

  

iptables -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
iptables -L INPUT

  

客户机代理配置:

web1 操作:

systemctl stop firewalld.service
setenforce 0
yum -y install httpd
systemctl start httpd
netstat -natp | grep 80

  

检测
在浏览器输入Web服务器IP地址访问,查看Web服务器访问日志,显示的是由代理服务器替客户机在访问。

  

  

查看Web1访问日志的新增记录  

tail -f /var/log/httpd/access_log

  

  

  

4、构建透明代理服务器:

1、Squid服务器配置
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37
vim ifcfg-ens37
systemctl restart network #60行修改添加提供内网服务的IP地址,和支持透明代理选项transparent
vim /etc/squid.conf
......
http_access allow all
http_access deny all
http_port 192.168.100.100:3128 transparent
systemctl restart squid echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p iptables -F
iptables -t nat -F
# 添加防火墙规则(将来源为100网段:80/443端口的流量重定向到3128端口)
iptables -t nat -I PREROUTING -i ens37 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens37 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
#如果要进行重启,则需要配置以下规则
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT 2.web1服务器
systemctl stop firewalld.service
setenforce 0
yum -y install httpd
systemctl start httpd
netstat -natp | grep 80 # 添加一条静态路由
route add -net 192.168.100.0/24 gw 192.168.116.80 3.客户端关闭代理,修改win10 地址为100网段 访问web1服务器 查看Web1访问日志的新增记录
tail -f /var/log/httpd/access_log

  

5、ACL访问控制:

在配置文件squid.conf中,ACL访问控制通过以下两个步骤来实现:
使用acl配置项定义需要控制的条件: 通过http_access配 置项对已定义的列表做“允许"或“拒绝”访问的控制

定义访问控制列表

格式: acl列表名称 列表类型 列表内容

  • 列表名称: 名称自定义,相当于给acl起个名字
  • 列表类型: 必须使用squid预定义的值,对应不同类别的控制条件
  • 列表内容: 是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格为分 隔,为“或"的关系)
方法一:
vim /etc/squid.conf
......
acl localhost src 192.168.100.10/24 #源地址为192.168.184.10
acl MYLAN src 192.168.100.0/24 #客户机网段
acl destinationhost dst 192.168.226.129/32 #目标地址为192.168.184.20
acl MC20 maxconn 20 #最大并发连接20
acl PORT port 21 #目标端口21
acl DMBLOCK dstdomain .qq.com #目标域,匹配域内所有站点
acl BURL url_regex -i ^rtsp:// ^emule:// #以rtsp://.emule://开头的URL,-i表示忽略大小写
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$ #以.mp3、.mp4、.rmvb结尾的URL路径
acl WORKTIME time MTWHF 08:30-17:30 #时间为周一--至周五8:30~17:30,"MTWHF"为每个星期的英文首字母 第一条插入:
http_access deny host 方法二:
#启动对象列表管理
mkdir /etc/squid
vim /etc/squid/dest.list
192.168.226.129 #Squid服务器IP
192.168.226.0/24 #任意需要的网段 vim /etc/ squid.conf
.......
acl destinationhost dst "/etc/squid/dest.list" #调用指定文件中的列表内容
http access deny(或allow) destinationhost #注意,如果是拒绝列表,需要放在http_access allow all前面 systemctl restart squid

  

6、Squid日志分析:

sarg ( Squid Analysis Report Generator),是一款squid日志分析工具,采用HTML格式,详细列出每一位用户访问Internet的站点信息、时间占用信息、排名、连接次数、访问量等

#安装图像处理软件包
yum install -y gd gd-devel pcre-devel
mkdir /usr/local/sarg #将zxvf sarg-2.3.7. tar.gz压缩包上传到/opt目录下
tar zxvf sarg-2.3.7.tar.gz -C /opt/ cd /opt/sarg-2.3.7
./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \ #配置文件目录,默认是/usr/loca/etc
--enable-extraprotection #额外安全防护 -----------------------------------------------------------------------------------------------
./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
-------------------------------------------------------------------------------------------------- make && make install vim /etc/sarg/sarg.conf
--7行--取消注释
access_log /usr/local/squid/var/logs/access.1og #指定访问日志文件
--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行--取消注释
weekdavs 0-6 #top排行的星期周期
--525行--取消注释
hours 0-23 #top排行的时间周期
--633行--取消注释
www_document_root /var/www/html #指定网页根目录 #添加不计入站点文件,添加的域名将不被显示在排序中
touch /usr/local/sarg/noreport ln -s /usr/local/sarg/bin/sarg /usr/local/bin/ sarg --help #获取帮助 #运行
sarg #启动一次记录 #验证
yum install httpd -y
systemctl start httpd
在squid服务器上使用浏览器访问http://192.168.226.129/sarg, 查看sarg报告网页。
date -s
#添加计划任务,执行每天生成报告
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/1ocal/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/1ocal/sarg/report.sh

  

7、反向代理:

如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理
服务器将向后台的Web服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地
供下一个请求者使用

工作机制:

  • 缓存网页对象,减少重复请求
  • 将互联网请求轮询或按权重分配到内网web服务器
  • 代理用户请求,避免用户直接访问Web服务器,提高安全
开启防火墙、本地关闭HTTPD
systemctl start firewalld
systemctl stop httpd iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT vim /etc/ squid.conf
60行--修改,插入-------
http_port 192.168.226.129:80 accel vhost vport
cache_peer 192.168.226.130 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.226.131 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.kgc.com #表示对www.kgc.com的请求,squid向192.168.200.70和192.168.226.131的80端口发出请求
---------------------------------------------------------------------------------------------------------------------------------------------------------
http_port 80 accel vhost vport
#squid从一个缓存变成了一个Web服务器反向代理加速模式,这个时候squid在80端口监听请求,同时和webserver的请求端口(vhost vport)绑定,这个时候请求到了squid, squid是不用转发请求的,而是直接要么从缓存中拿数据要么向,绑定的端口直接请求数据。
accel:反向代理加速模式
vhost:支持域名或主机名来表示代理节点
vport:支持IP和端口来表示代理节点
parent:代表为父节点,上下关系,非平级关系
80:代理内部web服务器的80端口
0:没有使用icp,表示就一台squid服务器
no-query:不做查询操作,直接获取数据
originserver:指定是源服务器
round-robin:指定squid 通过轮询方式将请求分发到其中一-台父节点
max_conn:指定最大连接数
weight:指定权重
name:设置别名
------------------------------------------------------------------------------------------------------------------------------------------------------------------- systemctl stop squid
service squid reload #后端web2节点服务器设置
yum install -y httpd
systemctl start httpd #节点1(web1):
echo "this is test01" >> /var/www/html/index.html
#节点2(web2):
echo "this is test02" >> /var/www/html/index.html #客户机的域名映射配置
修改C: \Windows\System32 \drivers\etc\hosts 文件
192.168.226.129 www.kgc.com #客户机的代理配置
打开浏览器,工具-->Internet选项-->连接-->局域网设置-->开启代理服务器(地址: Squid服务器IP地址,端口:80) 浏览器访问http://www.lvbu.com

  

总结 :
squid

  1. 定位是缓存加速
  2. 缓存从后端的web服务器获取到的
  3. 加速是为了客户端访问的

squid 三种模式:

  1. 传统代理 需要客户端指向squid代理服务器,客户端能感知到squid代理服务器的存在
  2. 透明代理(常用) 客户端不需要配置,只要直接访问即可,服务端,借助了防火墙规则及静态路由的方式,完成透明代理
  3. 反向代理 做为类似与Nginx服务器的反向代理功能,但自身不需要一个首页,基于IP:端口,权重的方式完成反向 代理

对于Squid自身的管理/功能 :

  • ACL:主要做的是http access (基于http协议,access访问) 的允许和拒绝管理
  • sarg:日志分析功能,可以以天的方式指定将access_log中 的内容输出到一个web页面中(借助了httpd)展示出来。

  

squid 代理服务器应用的更多相关文章

  1. CentOS安装squid代理服务器

    Squid是一个Linux系统下优秀的代理服务器软件.Squid可以配置普通上网代理(正向代理).反向代理.透明代理.系统是CentOS6.2.Squid主机IP为192.168.1.100. 安装s ...

  2. 【转载】CentOS 6.4下Squid代理服务器的安装与配置

    一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...

  3. CentOS 6.4下Squid代理服务器的安装与配置

    一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...

  4. Squid代理服务器的安装与配置

    一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...

  5. CentOS6 Squid代理服务器的安装与配置

    代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息.Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载一 ...

  6. CentOS 6.4下Squid代理服务器的安装与配置,反向代理

    CentOS 6.4下Squid代理服务器的安装与配置 一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件 ...

  7. CentOS 7安装squid代理服务器

    Squid,一个高性能的代理缓存服务器,支持FTP.gopher.HTTP协议. Squid,一个缓存Internet 数据的软件,其接收用户的下载申请(作为代理服务器),并自动处理所下载的数据,并返 ...

  8. linux 搭建squid代理服务器

    linux 搭建squid代理服务器 实验环境: 一台linux搭建Web服务器,充当内网web服务器(同时充当内网客户端) 202.100.10.100 一台linux系统充当网关服务器,两个网卡, ...

  9. CentOS 7 Squid代理服务器反向代理

    Squid反向代理 将不同的URL请求分发到后台不同的Web服务器上,通过squid反向代理,可以加速网站的访问速度,同时互联网用户只能看到反向代理服务器的地址,加强网站的访问安全 Squid反向代理 ...

  10. CentOS 7 Squid代理服务器正向代理-透明代理

    Squid是Linux系统中最常用的一款开源代理服务软件,主要提供缓存加速和应用层过滤控制的功能,可以很好的实现HTTP.FTP.DNS查询以及SSL等应用的缓存代理 透明代理:提供与传统代理相同的功 ...

随机推荐

  1. C#/.NET之WebAPI(从入门到放弃一)

    1.怎么理解WebApi,他究竟是什么? 关于这一篇,视频学习可参照B站up主:全栈ACE,全栈ACE的个人空间,社区QQ群如下,有什么问题也可加群咨询. 首先使用Visual Studio创建一个新 ...

  2. SpringCloud创建Config多客户端公共配置

    1.说明 基于已经创建好的Spring Cloud配置中心, 在配置中心仅保存一套配置文件, 多个客户端可以通过配置中心读取到相同的配置, 而不需要在每个客户端重复配置一遍, 下面以一个Config ...

  3. Storm集群安装Version1.0.1

    Storm集群安装,基于版本1.0.1, 使用apache-storm-1.0.1.tar.gz安装包. 1.安装规划 角色规划 IP/机器名 安装软件 运行进程 nimbus zdh-237 sto ...

  4. 【Warrior刷题笔记】剑指offer 6 24 35. 三道题,让你学会链表递归迭代辅助栈

    题目一 从尾到头打印链表 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-l ...

  5. Java如何打好牢固的基础?

    如果纯粹是为了学Java,那么不建议阅读本文,因为本文不是从理论和教科书的角度讲述如何打好java基础,而是会从"快速用java挣钱"这个角度,讲边学.边做项目和边提升的方法. 在 ...

  6. centos6.5-搭建LNMP

    安装LNMP 一.安装nginx 1.安装相关组件 yum -y install pcre-devel zlib-devel 2.创建启动用户 useradd -M -s /sbin/nologin ...

  7. wordpress搭建网站更改域名后打开网页排版显示错乱解决办法

    发生的原因: 我本来已经搭建好了网站,也测试了没问题.后来更改了网站的域名,出现了这种情况. 解决办法: 需要修改数据库的options表里面的 siteurl 和 home 这两个表的内容为最新的域 ...

  8. 【爬虫】从零开始使用 Scrapy

    一. 概述 最近有一个爬虫相关的需求,需要使用 scrapy 框架来爬取数据,所以学习了一下这个非常强大的爬虫框架,这里将自己的学习过程记录下来,希望对有同样需求的小伙伴提供一些帮助. 本文主要从下面 ...

  9. 【原创】阿里三面:搞透Kafka的存储架构,看这篇就够了

    阅读本文大约需要30分钟.这篇文章干货很多,希望你可以耐心读完. 你好, 我是华仔,在这个 1024 程序员特殊的节日里,又和大家见面了. 从这篇文章开始,我将对 Kafka 专项知识进行深度剖析, ...

  10. CAX软件资产管理

    CAX软件其实指的是计算机辅助设计软件统称,即CAD.CAM.CAE.CAPP.CAS.CAT.CAI等各项技术的综合叫法,因为这些技术的缩写基本都是以CA为起始,X则表示所有.也就是说,CAX实际上 ...