标题

  • 一、Squid 代理服务器
    • 代理的工作机制
    • Squid 代理的类型
  • 二、安装 Squid 服务
    • 1、编译安装 Squid
    • 2、修改 Squid 的配置文件
    • 3、Squid 的运行控制
    • 4、创建 Squid 服务脚本
  • 三、构建传统代理服务器
    • 环境配置
  • 四、构建透明代理服务器
    • 1、环境配置
    • 2、Squid服务器配置(192.168.80.10)
    • 3、客户机测试(12.0.0.100)
  • 五、ACL访问控制
    • 1、环境配置
    • 2、Squid配置(192.168.80.10)
    • 3、Web1和web2的配置(192.168.80.20、192.168.80.30)
    • 4、测试(192.168.80.100)
  • 六、Squid日志分析
    • 测试
    • 添加计划任务,每天生成报告
  • 七、反向代理
    • 1、环境配置
    • 2、Squid配置(192.168.80.10)
    • 3、web1和web2配置(192.168.80.20、192.168.80.30)
    • 4、客户机的配置
    • 5、验证

一、Squid 代理服务器

Squid 主要提供缓存加速、应用层过滤控制的功能。

代理的工作机制

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

Squid 代理的类型

传统代理:适用于Internet,需在客户机指定代理服务器的地址和端口。

透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理。

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

二、安装 Squid 服务

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

1、编译安装 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-gnuregexmake && make install#--------模块解释--------------------------------------------------
--prefix=/usr/local/squid                  #指定安装目录路径
--sysconfdir=/etc                          #指定配置文件路径
--enable-arp-acl                           #MAC地址管控,防止客户端使用ip欺骗
--enable-linux-netfilter                   #使用内核过滤
--enable-linux-tproxy                      #支持透明模式
--enable-async-io=100                      #异步1o,提升存储性能
--enable-err-language="Simplify_Chinese"   #错误信息的显示语言
--enable-underscore                        #允许URL中有下划线
--disable-poll \                           #关闭默认使用的poll 模式
--enable-epoll \                           #开启epoll模式,提升性能
--enable-gnuregex                          #使用GNU正则表达式
#----------------------------------------------------------------


ln -s /usr/local/squid/sbin/* /usr/local/sbin/useradd -M -s /sbin/nologin squidchown -R squid:squid /usr/local/squid/var/

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     #指定缓存文件目录

3、Squid 的运行控制

检查配置文件语法是否正确

squid -k parse

启动 Squid

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

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/squid"case "$1" instart)netstat -natp | grep squid &> /dev/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在启动 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 running"fi;;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


三、构建传统代理服务器

环境配置

主机 操作系统 IP地址 软件、安装包、工具
Squid CentOS7 192.168.172.10 squid-3.5.28.tar.gz
Web1 CentOS7 192.168.172.20 httpd
客户机 Windows 192.168.172.100

Squid(192.168.172.10)

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为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

service squid restart
netstat -natp | grep squid

生产环境中还需要修改防火墙规则

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

客户机的代理配置(192.168.172.100)
1、配置客户端IP地址


2、打开浏览器,配置代理功能

Web1(192.168.172.20)

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

四、构建透明代理服务器

1、环境配置

主机 操作系统 IP地址 服务、安装包、工具
Squid-Server CentOS7 ens33:192.168.80.10 、 ens36:12.0.0.1 squid-3.5.28.tar.gz
Web1 CentOS7 192.168.80.20 httpd
客户端 Windows 12.0.0.100 ——

2、Squid服务器配置(192.168.80.10)

网卡配置
关机,添加一块网卡,开机,ifconfig查看新增网卡名称,编辑网卡配置文件

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens33

vim ifcfg-ens36


重启网卡,并查看

systemctl restart network
ifconfig 


60行修改添加提供内网服务的IP地址,和支持透明代理选项 transparent

vim /etc/squid.conf
......
http_access allow all
http_access deny allhttp_port 12.0.0.1:3128 transparent
systemctl restart squid


开启路由转发功能

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p


修改防火墙配置规则

iptables -F
iptables -t nat -F
iptables -t nat -I PREROUTING -i ens36 -s 12.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens36 -s 12.0.0.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

3、客户机测试(12.0.0.100)

配置网卡IP

关闭代理服务

测试页面出来了

动态检测squid访问日志(192.168.80.10)

tail -f /usr/local/squid/var/logs/access.log

Squid代理服务器则是检测到客户机访问目标网站

查看web服务器上的访问日志(192.168.80.20)

tail -f /var/log/httpd/access_log

可以看到是代理服务器外网口12.0.0.1访问的12.0.0.12

五、ACL访问控制

在配置文件 squid.conf 中,ACL 访问控制通过以下两个步骤来实现:
(1)使用 acl 配置项定义需要控制的条件;
(2)通过 http_access 配置项对已定义的列表做“允许”或“拒绝”访问的控制。
1.定义访问控制列表
格式:acl 列表名称 列表类型 列表内容 …

vim /etc/squid.conf
......
acl localhost src 192.168.80.10/32                  #源地址为 192.168.80.10
acl MYLAN src 192.168.80.0/24           #客户机网段
acl destionhost dst 192.168.80.20/32                #目标地址为 192.168.80.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”为每个星期的英文首字母

1、环境配置

主机 操作系统 IP地址 软件、安装包、工具
Squid-Server CentOS7 192.168.80.10 squid-3.5.28.tar.gz
Web1 CentOS7 192.168.80.20 httpd
Web2 CentOS7 192.168.80.30 httpd
客户机 Windows 192.168.80.100 ——

2、Squid配置(192.168.80.10)

iptables -F
iptables -t nat -Fvim /dest.list
192.168.80.20vim /etc/squid.conf
......
acl destionhost dst "/dest.list"          #调用指定文件中的列表内容
......
http_access deny destionhost                #注意,如果是拒绝列表,需要放在http_access allow all前面http_port 3128systemctl restart squid




3、Web1和web2的配置(192.168.80.20、192.168.80.30)

systemctl stop firewalld.service
setenforce 0
yum -y install httpd
systemctl start httpd

4、测试(192.168.80.100)

打开代理服务

访问192.168.80.20和192.168.80.30

六、Squid日志分析

squid服务器(192.168.80.10)
安装图像处理软件包
需要使用在线源,出现报错,将网卡配置文件中的dns和网关修改回原样即可

yum install -y pcre-devel gd gd-develmkdir /usr/local/sarg
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
make && make install



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/squid-reports                     #报告输出目录178行取消注释user_ip no                                           #使用用户名显示184行取消注释,修改topuser_sort_field connect reverse                    #top排序中,指定连接次数采用降序排列,升序是normal190行取消注释,修改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-8518行取消注释weekdays 0-6                                     #top排行的星期周期525行取消注释hours 0-23                                           #top排行的时间周期633行取消注释www_document_root /var/www/html                      #指定网页根目录

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

touch /usr/local/sarg/noreportln -s /usr/local/sarg/bin/sarg /usr/local/bin/sarg --help


运行

sarg

验证

yum install httpd -y
systemctl start httpd


启动服务

测试

浏览器访问 http://192.168.80.10/squid-reports ,查看sarg报告网页

添加计划任务,每天生成报告

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/squid-reports -z -d $YESTERDAY-$TODAY &> /dev/null
exit 0

chmod +x /usr/local/sarg/report.shcrontab -e
0 0 * * * /usr/local/sarg/report.sh

七、反向代理

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

工作机制:
●缓存网页对象,减少重复请求
●将互联网请求轮训或按权重分配到内网Web服务器
●代理用户请求,避免用户直接访问Web服务器,提高安全

1、环境配置

主机 操作系统 IP地址 软件、安装包、工具
Squid-Server CentOS7 192.168.80.10 squid-3.5.28.tar.gz
Web1 CentOS7 192.168.80.20 httpd
Web2 CentOS7 192.168.80.30 httpd
客户机 Windows 192.168.80.100 ——

2、Squid配置(192.168.80.10)

清空防火墙

iptables -F              #清空防火墙规则
iptables -t nat -Fvim /etc/squid.conf
......

60行修改,插入

http_port 192.168.80.10:80 accel vhost vport
cache_peer 192.168.80.20 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.80.30 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.chen.com


http_port 80 accel vhost vport #squid从一个缓存变成了一个Web服务器使用加速模式,这个时候squid在80端口监听请求,同时和web server的请求端口(vhost vport)绑定,这个时候请求到了squid,squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据。


parent 代表为父节点
80 HTTP_PORT
0 ICP_PORT
no-query 不做查询操作,直接获取数据
originserver 指定是源服务器
round-robin 指定 squid 通过轮询方式将请求分发到其中一台父节点
max_conn 指定最大连接数
weight 指定权重
name 设置别名

关闭httpd服务,在启动squid服务。防止端口冲突

systemctl stop httpd
systemctl restart squid

3、web1和web2配置(192.168.80.20、192.168.80.30)

都有的操作

systemctl stop firewalld.service
setenforce 0
yum install -y httpd
systemctl start httpd

web1(192.168.80.20)

echo "this is chen" >> /var/www/html/index.html

web2(192.168.80.30)

echo "this is qian" >> /var/www/html/index.html

4、客户机的配置

修改 C:\Windows\System32\drivers\etc\hosts 文件
192.168.80.10 www.chen.com


客户机的代理也要打开

5、验证

浏览器访问www.chen.com

部署Squid 代理服务器(内含传统、透明代理服务器的配置、ACL访问控制、日志分析、反向代理)相关推荐

  1. 理论+实验 详解Squid部署--传统代理--透明代理--日志分析--反向代理

    目录 一 缓存代理概述 1.1 Web代理的工作机制 1.2 代理的基本类型 1.3 使用代理的好处 二 Squid安装及运行 2.1 编译安装Squid 3.4.6 2.2 Squid配置文件调整 ...

  2. squid缓存服务器 ACL访问控制 传统代理 透明代理 squid日志分析 反向代理

    缓存代理概述 Squid提供了强大的代理控制机制,通过合理的设置ACL,并进行限制,可以针对源地址.目标地址.访问的URL路径.访问的时间等条件进行过滤. 作为应用层的代理服务器软件,Sqiod主要提 ...

  3. Squid代理服务器(传统/透明/反向代理、ACL访问控制、sarg日志分析)

    一.Squid的概念 1.Squid的作用 Squid主要提供缓存加速.应用层过滤控制的功能. 2 .Web代理的工作机制 缓存网页对象,减少重复请求 代理客户机向网站请求数据,从而可以隐藏用户的真实 ...

  4. 部署Squid代理服务器 —— 反向代理(acl 访问控制 、sarg 日志分析、 Squid反向代理) —— 再续前缘..

    部署Squid代理服务器 -- 反向代理 前言 部署前规划 acl 访问控制 sarg 日志分析 反向代理 前言 部署 Squid 代理服务的正向代理,咱们已经实现 可以参考前文 Squid ---- ...

  5. 缓存加速CDN——squid代理服务器应用(传统代理,透明代理)

    squid代理服务 一.缓存代理概述 1.1 web代理的工作机制 1.2 阿里云CDN产品介绍与工作原理 1.3 代理的基本类型 1.4 使用代理的好处 二.部署squid传统代理 2.1 实验环境 ...

  6. Squid代理服务器(透明代理服务配置、日志分析、反向代理、日志分析、ACL访问控制)

    目录 一.Squid 服务基础 (1)代理的工作机制 (2)代理的基本类型 二.安装 Squid 服务 (1)编译安装 Squid (2)修改 Squid 的配置文件 (3)Squid 的运行控制 ( ...

  7. squid反向代理作为web前端内容缓存器及局域网内客户机通过代理服务器上网

    反向代理服务器有两种传输模式: 1.同步模式:(如:squid)用户发起请求,请求立即被转到后端的服务器,于是在浏览器和后端服务器之间就建立了一个连接,在请求完成前这个连接是一直存在的. 2.异步模式 ...

  8. 利用 squid 反向代理提高网站性能

    本文在介绍 squid 反向代理的工作原理的基础上,指出反向代理技术在提高网站访问速度,增强网站可用性.安全性方面有很好的用途.作者在具体的实验环境下,利用 DNS 轮询和 Squid 反向代理技术, ...

  9. history模式 nginx配置_nginx反向代理部署vue项目(history模式)的方法

    前言: 根据标题我们要区分出两个信息 1. history 模式部署 ( vue的路由模式如果使用history,刷新会报404错误.) 2. Nginx 做反向代理 问题1思考: vue-route ...

最新文章

  1. 经历能让人变得更理智更成熟
  2. 在 Java Web 项目中,Service 层和 Dao 层真的有必要每个类都加上接口吗
  3. android stack error message is Fail to start the plugin
  4. DLINK DES3828三层交换机配置实例
  5. oracle or索引失效_oracle数据库中索引会失效的几种情况
  6. 笔记本电脑打开后不显示桌面_宝骏630打开空调开关后压缩机不工作 - 汽车空调...
  7. 工业以太网交换机出现温度过高如何处理?
  8. Analyzing Storage Performance using the Windows Performance Analysis ToolKit (WPT)
  9. 【剑指offer】面试题61:扑克牌中的顺子(java)
  10. 为防范“手机低头族”出交通事故 韩国开发行人警示系统
  11. C程序之修改Windows的控制台颜色(转载)
  12. android版 wifi伴侣,wifi伴侣下载|wifi伴侣安卓版2016最新版 3.7.5 - 系统天堂
  13. MySQL数据备份恢复太慢解决办法
  14. SIGKDD2021 | 淘宝搜索向量化召回实践
  15. 办公小技巧:excel重复项怎么找出来?
  16. python模拟类蠕虫--蠕虫初探
  17. VisualSFM的配置与使用 MeshLab的网格生成与纹理添加
  18. Python中的sin和cos函数
  19. 【计算机网络13】网络安全
  20. batchnorm2d参数 torch_pytorch中BatchNorm1d、BatchNorm2d、BatchNorm3d

热门文章

  1. 大话ion系列(一)
  2. 【大会】海量高清视频服务端架构设计的变与不变
  3. 网易工业级WebRTC应用实践深度解析
  4. Linux下的进程概论与编程二(进程控制)
  5. PMP之项目风险管理---实施定性风险分析
  6. Nginx使用brotli代替gzip
  7. WebAssembly,Web的新时代
  8. go WaitGroup的坑
  9. 利剑无意之面试题(三)
  10. hive提交命令org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Error parsing application ID: