河北众成建设有限公司网站,上海短视频拍摄制作公司,海南分类信息在线平台,烟台制作网站的公司一、Squid代理服务器的概述
squid 作为一款服务器代理工具#xff0c;可以缓存网页对象#xff0c;减少重复请求#xff0c;从而达到加快网页访问速度#xff0c;隐藏客户机真实IP#xff0c;更为安全。
Squid主要提供缓存加速、应用层过滤控制的功能
1、squid代理的工…一、Squid代理服务器的概述
squid 作为一款服务器代理工具可以缓存网页对象减少重复请求从而达到加快网页访问速度隐藏客户机真实IP更为安全。
Squid主要提供缓存加速、应用层过滤控制的功能
1、squid代理的工作机制
• 代替客户机向网站请求数据从而可以隐藏用户的真实IP地址
• 将获得的网页数据静态 web元素保存到缓存中并发给客户机以便下次请求相同的数据时快速响应
当我们客户机通过squid代理去访问web页面时指定的代理服务器会先检查自己的缓存若是缓存中有我们客户机需要的页面那么squid服务器将直接把缓存中的页面内容返回给客户机
如果缓存中没有客户端请求的页面那么squid代理服务器就会向internet发送访问请求获得返回的web页面后将网页的数据保存到缓存中并发送给客户机。
由于客户机的web访问请求实际上是squid代理服务器来代替完成的所以隐藏了用户的真实IP地址从而起到一定的保护作用。
另一方面squid也可以针对要访问的目标、客户机的地址、访问的时间段进行过滤控制。
2、squid代理的基本类型
① 传统代理适用于internet需在客户机指定代理服务器的地址和端口
② 透明代理客户机不需指定代理服务器的地址和端口而是通过默认路由、防火墙策略将web访问重定向给代理服务器处理
③ 反向代理如果Squid反向代理服务器中缓存了该请求的资源则将该请求的资源直接返回给客户端否则反向代理服务器将向后台的web服务器请求资源然后将请求的应答返回给客户端同时也将该应答缓存静态在本地供下一个请求者使用
根据实现的方式不同基本可以分为传统代理和透明代理两种方式
传统代理也就是普通的代理服务需要我们客户端在浏览器、聊天工具等一些程序中设置代理服务器的地址和端口然后才能使用代理来访问网络这种方式相比较而言比较麻烦因为客户机还需手动指定代理服务器所以一般用于Internet环境。
透明代理与传统代理实现的功能是一样的区别在于客户机不需要手动指定代理服务器的地址和端口而是通过默认路由、防火墙策略将web访问重定向实际上仍然交给代理服务器来处理重定向的过程完全是由squid服务器进行的所以对于客户机来说甚至不知道自己使用了squid代理服务因此呢我们称之为透明模式。
透明代理多用于局域网环境如在Linux网关中启用透明代理后局域网主机无须进行额外设置就能享受更好的上网速度。
3、squid代理的工作模式图解
3.1、传统模式
此类工作模式为三种模式中最简单的构成对客户端配置较不友好主要功能为正向代理加速内网用户的访问速度减少出口流量。
如果搭建公用的代理服务器用这样方式需要用户进入其本机的网络设置中设置搭建了squid服务器的IP和端口 3.2、透明模式
此类工作模式配置较为复杂同样也是实现正向代理需要借助防火墙对端口进行重定向操作。但是对于客户端来说配置较为友好无需进行任何配置即可使用代理功能主要功能为加速内网用户的访问速度减少出口流量。
如果搭建内网访问外网的代理服务器建议使用这种无需到客户端设置代理服务器的IP和端口自动实现squid代理 3.3、反向代理模式
反向代理模式位于本地WEB服务器和公网之间处理公网用户发起的请求并代理至内网服务中有效减轻后端真是服务器的压力增加服务器的并发处理能力 4、使用squid代理的好处
• 提高web访问速度
• 隐藏客户机的真实IP地址
二、Squid代理服务器的编译安装及运行
1、Squid代理服务器的编译安装及运行的操作步骤
首先关闭防火墙和SElinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 01.1、编译安装Squid
#安装依赖环境
yum -y install gcc gcc-c make
#上传软件包squid-3.5.27. tar到/opt目录下
cd /opt
#解压
tar zxvf 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-io100 \
--enable-err-languageSimplify_Chinese \
--enable-underscore \
--enable-poll \
--enable-gnuregex# 编译安装
make make install-----------------------------------------------
####_上述脚本解释###./configure --prefix/usr/local/squid
##安装目录
--sysconfdir/etc/
##单独将配置文件修改到/etc目录下
-- enable-arp-acl
##可在ACL中设置通过MAC地址进行管理防止IP欺骗
--enable-1inux-netfilter
##使用内核过滤
--enable-linux-tproxy
##支持透明模式
--enable-async-io100
##异步I/O提升储存性能值可修改
--enable-err-languageSimplify_Chinese
##错误信息的显示语言
--enable-underscore
##允许URL中有下划线
-enable-poll
##使用Poll () 模式提升性能
--enable-gnuregex
##使用GNU正则表达式ln -s /usr/local/squid/sbin/* /usr/local/sbin
##创建链接文件优化路径
useradd -M -s /sbin/nologin squid
###创建程序用户、组
chown -R squid:squid /usr/local/squid/var/
##改变目录属主此目录用来存放缓存文件1.2、修改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 #指定缓存文件目录1.3 、Squid 的运行控制
#检查配置文件语法是否正确
squid -k parse#启动Squid 第一次启动Squid服务时会自动初始化缓存目录
squid -z #-z选项用来初始化缓存目录
squid #启动squid 服务netstat -anpt | grep squid1.4、创建 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/squidcase $1 instart)netstat -natp | grep squid /dev/nullif [ $? -eq 0 ]thenecho squid is runningelseecho 正在启动 squid...$CMDfi;;stop)$CMD -k kill /dev/nullrm -rf $PID /dev/null;;status)[ -f $PID ] /dev/nullif [ $? -eq 0 ]thennetstat -natp | grep squidelseecho squid is not runningfi;;restart)$0 stop /dev/nullecho 正在关闭 squid...$0 start /dev/nullecho 正在启动 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三、搭建传统代理
1、搭建传统代理的操作步骤
环境准备
Squid 代理服务器192.168.2.22
web服务器 192.168.2.66
win10客户端 192.168.2.10
1.1 修改squid的配置文件
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
#指定缓存功能所使用的内存空间大小便于保持访问较频繁的WEB对象容量最好为4的倍数单位为MB建议设为物理内存的1/4
reply_body_max_size 10 MB
#允许用户下载的最大文件大小以字节为单位当下载超过指定大小的Web对象时浏览器的报错页面中会出现“请求或访问太大”的提示默认设置0表示不进行限制
maximum_object_size 4096 KB
#允许保存到缓存空间的最大对象大小以KB为单位超过大小限制的文件将不被缓存而是直接转发给用户1.2 重启服务
service squid restart
systemctl restart squid 1.3 生产环境中还需要修改防火墙规则
iptables -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
iptables -nL INPUT1.4 web服务器安装web服务httpd或者nginx
systemctl stop firewalld.service
setenforce 0
yum -y install httpd
systemctl start httpd
netstat -natp | grep 801.5 修改win10客户端添加代理
打开浏览器工具--Internet选项--连接 --局域网设置--开启代理服务器 (地址: Squid服务器IP地址端口: 3128) 清除缓存后使用浏览器访问http://192.168.2.66web服务器地址
1.6 在win10客户端访问web服务器进行验证
#查看Squid访问日志的新增记录
tail -f /usr/local/squid/var/logs/access.log #查看Web访问日志的新增记录
tail -f /var/log/httpd/access_log 在浏览器输入Web服务器IP地址访问查看Web服务器访问日志显示的是由代理服务器替客户机在访问。
2、实例操作搭建传统代理
2.1 修改squid的配置文件 2.2 重启服务 2.3 生产环境中还需要修改防火墙规则 2.4 web服务器安装web服务httpd或者nginx 2.5 修改win10客户端添加代理 2.6 在win10客户端访问web服务器进行验证 四、搭建透明代理
1、搭建透明代理的操作步骤
环境准备
squid服务器 双网卡 ens33:192.168.2.22ens36:12.0.0.1
web服务器12.0.0.18网关为squid代理服务器的ens36
Win10客户端192.168.229.200网关为squid代理服务器的ens33
1.1 Squid服务器:双网卡
内网ens33: 192.168.2.22 外网ens36: 12.0.0.1
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36 #修改IP地址并注释或者删除DNS与网关
systemctl restart network 1.2 修改squid配置文件
vim /etc/squid.conf
http_access allow all
http_access deny all
--60行--修改添加提供内网服务的IP地址和支持透明代理选项transparent
http_port 192.168.229.60:3128 transparentsystemctl restart squid1.3 squid服务器添加路由转发和iptables规则
#开启路由转发实现本机中不同网段的地址转发
echo net.ipv4.ip_forward 1 /etc/sysctl.conf
sysctl -p
br#修改防火墙规则
iptables -F
iptables -t nat -F
# 添加防火墙规则将来源为229网段80/443端口的流量重定向到3128端口
iptables -t nat -I PREROUTING -i ens33 -s 192.168.229.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 #用于转发Http协议
iptables -t nat -I PREROUTING -i ens33 -s 192.168.229.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 #用于转发https协议
#如果要进行重启则需要配置以下规则
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT1.4 web服务器
修改IP地址为12.0.0.18并设置网关为12.0.0.1
并开启httpd服务之前已安装该服务 vim /etc/sysconfig/network-scripts/ifcfg-ens33cat /etc/sysconfig/network-scripts/ifcfg-ens33TYPEEthernet
PROXY_METHODnone
BROWSER_ONLYno
BOOTPROTOstatic
DEFROUTEyes
IPV4_FAILURE_FATALno
IPV6INITyes
IPV6_AUTOCONFyes
IPV6_DEFROUTEyes
IPV6_FAILURE_FATALno
IPV6_ADDR_GEN_MODEstable-privacy
NAMEens33
UUID4ff14eea-f777-4bc2-b50b-7179db6ba998
DEVICEens33
ONBOOTyes
IPADDR12.0.0.18
NETMASK255.255.255.0
GATEWAY12.0.0.1
#DNS1192.168.229.2systemctl restart networksystemctl restart httpd.service 1.5.客户端关闭代理并访问web服务器
添加网关网关为squid服务器的ens33
查看Web1访问日志的新增记录 tail -f /var/log/httpd/access_log
2、实例操作搭建透明代理
2.1 Squid服务器:双网卡 2.2 修改squid配置文件 2.3 squid服务器添加路由转发和iptables规则 2.4 web服务器 2.5 客户端关闭代理并访问web服务器 五、ACL访问控制
1、ACL访问控制概述
1.1、ACL访问控制列表的概念
ACL(Access Control List)访问控制列表,主要用于过滤网络中的流量是控制访问的一种技术手段。网络设备为了过滤报文需要配置一系列的匹配条件对报文进行分类应用在端口上根据预先设定的策略对特定端口的流量起到控制作用。
访问控制列表(ACL)由一组规则组成在规则中定义允许或拒绝通过路由器的条件
利用ACL可以对经过路由器的数据包按照设定的规则进行过滤使数据包有选择的通过路由器起到防火墙的作用。
ACL一般只在以下路由器上配置
内部网和外部网的边界路由器。两个功能网络交界的路由器。
1.2、在配置文件squid.conf中ACL访问控制的步骤
通过以下两个步骤来实现:
使用acl配置项定义需要控制的条件通过http_access配 置项对已定义的列表做“允许或“拒绝”访问的控制
1.3、定义访问控制列表
格式: acl 列表名称 列表类型 列表内容
• 列表名称: 名称自定义相当于给acl起个名字
• 列表类型: 必须使用squid预定义的值对应不同类别的控制条件
• 列表内容: 是要控制的具体对象不同类型的列表所对应的内容也不一样可以有多个值(以空格为分 隔为“或的关系)
1.4 ACL访问控制方式
根据源地址、目标URL、文件类型等定义列表
acl 列表名称 列表类型 列表内容…
针对已定义的acl列表进行限制
http_access allow或deny列表名称…
1.5 ACL规则优先级
一个用户访问代理服务器时Squid会顺序匹配Squid中定义的所有规则列表一旦匹配成功立即停止匹配 所有规则都不匹配时Squid会使用与最后一条相反的规则
1.6 常用的ACL列表类型
src →源地址
dst 自标地址
port→端口
dstdomain目标域
time →访问时间
maxconn →最大并发连接
ourl_regex→目标URL地址
Urlpath_regex→整个目标URL路径
2、设置ACL访问控制的步骤
环境准备
Squid 代理服务器192.168.2.22
web服务器 192.168.2.66
win10客户端 192.168.2.10
使用传统代理方式进行设置ACL访问控制传统代理的设置见上文
2.1 定义访问控制列表
方法一
vim /etc/squid.conf
......
acl localhost src 192.168.2.100/32 #源地址为192.168.2.100
acl MYLAN src 192.168.2.0/24 #客户机网段
acl destinationhost dst 192.168.2.66/32 #目标地址为192.168.2.66
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:30MTWHF为每个星期的英文首字母第一条插入:
http_access deny localhost方法二:
#启动对象列表管理
mkdir /etc/squid
vim /etc/squid/dest.list
192.168.2.22 #Squid服务器IP
192.168.200.0/24 #任意需要的网段vim /etc/ squid.conf
.......
acl destinationhost dst /etc/squid/dest.list #调用指定文件中的列表内容
http access deny(或allow) destinationhost #注意如果是拒绝列表需要放在http_access allow all前面systemctl restart squid2.2. WEB服务器上安装httpd服务
yum install -y httpd
systemctl start httpd2.3 Client客户上测试
浏览器中输入192.168.2.66查看web是否被拒绝
六、Squid日志分析
sarg ( Squid Analysis Report Generator)是一款squid日志分析工具采用HTML格式详细列出每一位用户访问Internet的站点信息、时间占用信息、排名、连接次数、访问量等
1、实现Squid日志分析的步骤
1.1 安装图像处理软件包
yum install -y gd gd-devel pcre-devel
mkdir /usr/local/sarg 1.2 将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 \ #配置文件目录
--enable-extraprotection #额外安全防护-----------------------------------------------------------------------------------------------
./configure --prefix/usr/local/sarg --sysconfdir/etc/sarg --enable-extraprotection
--------------------------------------------------------------------------------------------------make make install1.3 修改sarg配置文件
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/squid-reports #报告输出目录
--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 #指定网页根目录 1.4 添加不计入站点文件添加的域名将不被显示在排序中
touch /usr/local/sarg/noreport
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
sarg --help #获取帮助#运行
sarg #启动一次记录 1.5 验证
yum install httpd -y
systemctl start httpd 在squid服务器上使用浏览器访问http://192.168.2.22/squid-reports, 查看sarg报告网页
date -s
1.6 添加计划任务执行每天生成报告
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 0chmod x /usr/local/sarg/report.shcrontab -e
0 0 * * * /usr/1ocal/sarg/report.sh2、实例操作实现Squid日志分析
七.反向代理
1、squid反向代理的概述
如果Squid反向代理服务器中缓存了该请求的资源则将该请求的资源直接返回给客户端;
否则反向代理服务器将向后台的Web服务器请求资源然后将请求的应答返回给客户端同时也将该应答缓存在本地供下一个请求者使用
工作机制:
• 缓存网页对象减少重复请求
• 将互联网请求轮询或按权重分配到内网web服务器 • 代理用户请求避免用户直接访问Web服务器提高安全
2、squid反向代理的操作步骤
环境准备
Squid 代理服务器192.168.2.22
web1服务器 192.168.2.66
web2服务器 192.168.2.99
win10客户端 192.168.2.10
2.1本地关闭httpd
systemctl stop httpd2.2 清空防火墙规则并放空3128端口
iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT2.3 .修改squid配置文件
vim /etc/ squid.conf
60行--修改插入-------
http_port 192.168.2.22:80 accel vhost vport
cache_peer 192.168.2.66 parent 80 0 no-query originserver round-robin max_conn30 weight1 nameweb1
cache_peer 192.168.2.99 parent 80 0 no-query originserver round-robin max_conn30 weight1 nameweb2
cache_peer_domain web1 web2 www.xkq.com #表示对www.xkq.com的请求,squid向192.168.2.66和192.168.2.99的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:设置别名
2.4 重启squid服务
systemctl stop squid
service squid reload 2.5 后端web节点服务器设置
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 2.6 客户机的域名映射配置
修改C: \Windows\System32 \drivers\etc\hosts 文件 192.168.2.66 www.xkq.com
2.7 客户机的代理配置并访问测试
打开浏览器工具--Internet选项--连接--局域网设置--开启代理服务器(地址: Squid服务器IP地址端口:80)
浏览器访问http://www.xkq.com
3、实例操作squid反向代理
3.1 squid服务器本地关闭httpd 3.2 清空防火墙规则并放空3128端口 2.3 .修改squid配置文件 2.4 重启squid服务 2.5 后端web节点服务器设置
#节点1(web1): #节点2(web2): 2.6 客户机的域名映射配置 2.7 客户机的代理配置并访问测试 Squid总结
1 . Squid作用 缓存加速缓存从后端web服务器获取到的加速为了客户端访问
2 . Squid的三种模式
① 传统模式
需要客户端指向squid代理服务器客户端能感知到squid代理服务器的存在 修改的配置文件squid.conf 设置 3128 端口、缓存和允许下载的大小 ② 透明代理
客户端不需要配置只要直接访问即可服务端开启路转发借助了防护墙规则及静态路由的方式完成透明代理 修改的配置文件squid.conf 设置ip和 3128 端口 需要设置iptables的流量重定向将指定网卡网段的流量重定向到 3128 端口 ③ 反向代理
作为类似于nginx服务器的反向代理功能但自身不需要一个首页基于ip端口。权重的方式完成反向代理 修改的配置文件squid.conf 设置端口为 80 服务端需要开启客户机的代理配置 3 . 对应Squid自身的管理/功能
① ACL主要做的是http_access基于http协议access访问的允许和拒绝管理
使用 acl 配置项定义需要控制的条件 通过 http_access 配置项对已定义的列表做“允许”或“拒 绝”访问的控制。 ② Sarg日志分析功能可以以天的方式指定将access_log中的内容输出到一个web页面中借助了httpd展示出来。