Linux运维 --- 使用Squid部署代理缓存服务

Squid服务程序会按照收到的用户请求向网站源服务器请求页面、图片等所需的数据,并将服务器返回的数据存储在运行Squid服务程序的服务器上。当有用户再请求相同的数据时,则可以直接将存储服务器本地的数据交付给用户,这样不仅减少了用户的等待时间,还缓解了网站服务器的负载压力。

Squid服务程序具有配置简单、效率高、功能丰富等特点,它能支持HTTP、FTP、SSL等多种协议的数据缓存,可以基于访问控制列表(ACL)和访问权限列表(ARL)执行内容过滤与权限管理功能,还可以基于多种条件禁止用户访问存在威胁或不适宜的网站资源,因此可以保护企业内网的安全,提升用户的网络体验,帮助节省网络带宽。

正向代理模式,是指让用户通过Squid服务程序获取网站页面等资源,以及基于访问控制列表(ACL)功能对用户访问网站行为进行限制,在具体的服务方式上又分为标准代理模式与透明代理模式。标准正向代理模式是把网站数据缓存到服务器本地,提高数据资源被再次访问时的效率,但是用户在上网时必须在浏览器等软件中填写代理服务器的IP地址与端口号信息,否则默认不使用代理服务。而透明正向代理模式的作用与标准正向代理模式基本相同,区别是用户不需要手动指定代理服务器的IP地址与端口号,所以这种代理服务对于用户来讲是相对透明的。

反向代理模式,是指让多台节点主机反向缓存网站数据,从而加快用户访问速度。一般来讲,网站中会普遍加载大量的文字、图片等静态资源,而且它们相对来说都是比较稳定的数据信息,当用户发起网站页面中这些静态资源的访问请求时,我们可以使用Squid服务程序提供的反向代理模式来进行响应。而且,如果反向代理服务器中恰巧已经有了用户要访问的静态资源,则直接将缓存的这些静态资源发送给用户,这不仅可以加快用户的网站访问速度,还在一定程度上降低了网站服务器的负载压力。

为了能够相互通信,需要将这两台虚拟机都设置为仅主机模式,新添加的网卡设备选择为桥接模式,否则这两台虚拟机都无法访问外网

使用ping命令检查Squid服务器可以访问外网

[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=1 ttl=128 time=5.98 ms
64 bytes from 14.215.177.38: icmp_seq=2 ttl=128 time=5.85 ms
64 bytes from 14.215.177.38: icmp_seq=3 ttl=128 time=6.36 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 5.853/6.065/6.362/0.234 ms
[root@localhost ~]#

安装Squid服务程序

[root@localhost ~]# yum install squid
已加载插件:langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 squid.x86_64.7.3.3.8-26.el7 将被 安装
--> 正在处理依赖关系 perl(DBI),它被软件包 7:squid-3.3.8-26.el7.x86_64 需要
--> 正在处理依赖关系 perl(Digest::MD5),它被软件包 7:squid-3.3.8-26.el7.x86_64 需要
--> 正在处理依赖关系 libecap.so.2()(64bit),它被软件包 7:squid-3.3.8-26.el7.x86_64 需要
--> 正在检查事务
---> 软件包 libecap.x86_64.0.0.2.0-9.el7 将被 安装
---> 软件包 perl-DBI.x86_64.0.1.627-4.el7 将被 安装
--> 正在处理依赖关系 perl(RPC::PlClient) >= 0.2000,它被软件包 perl-DBI-1.627-4.el7.x86_64 需要
--> 正在处理依赖关系 perl(RPC::PlServer) >= 0.2001,它被软件包 perl-DBI-1.627-4.el7.x86_64 需要
---> 软件包 perl-Digest-MD5.x86_64.0.2.52-3.el7 将被 安装
--> 正在处理依赖关系 perl(Digest::base) >= 1.00,它被软件包 perl-Digest-MD5-2.52-3.el7.x86_64 需要
--> 正在检查事务
---> 软件包 perl-Digest.noarch.0.1.17-245.el7 将被 安装
---> 软件包 perl-PlRPC.noarch.0.0.2020-14.el7 将被 安装
--> 正在处理依赖关系 perl(Net::Daemon) >= 0.13,它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在处理依赖关系 perl(Compress::Zlib),它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在处理依赖关系 perl(Net::Daemon::Log),它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在处理依赖关系 perl(Net::Daemon::Test),它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在检查事务
---> 软件包 perl-IO-Compress.noarch.0.2.061-2.el7 将被 安装
--> 正在处理依赖关系 perl(Compress::Raw::Bzip2) >= 2.061,它被软件包 perl-IO-Compress-2.061-2.el7.noarch 需要
--> 正在处理依赖关系 perl(Compress::Raw::Zlib) >= 2.061,它被软件包 perl-IO-Compress-2.061-2.el7.noarch 需要
---> 软件包 perl-Net-Daemon.noarch.0.0.48-5.el7 将被 安装
--> 正在检查事务
---> 软件包 perl-Compress-Raw-Bzip2.x86_64.0.2.061-3.el7 将被 安装
---> 软件包 perl-Compress-Raw-Zlib.x86_64.1.2.061-4.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package                      架构        版本                   源        大小
================================================================================
正在安装:
 squid                        x86_64      7:3.3.8-26.el7         yum      2.6 M
为依赖而安装:
 libecap                      x86_64      0.2.0-9.el7            yum       20 k
 perl-Compress-Raw-Bzip2      x86_64      2.061-3.el7            yum       32 k
 perl-Compress-Raw-Zlib       x86_64      1:2.061-4.el7          yum       57 k
 perl-DBI                     x86_64      1.627-4.el7            yum      802 k
 perl-Digest                  noarch      1.17-245.el7           yum       23 k
 perl-Digest-MD5              x86_64      2.52-3.el7             yum       30 k
 perl-IO-Compress             noarch      2.061-2.el7            yum      260 k
 perl-Net-Daemon              noarch      0.48-5.el7             yum       51 k
 perl-PlRPC                   noarch      0.2020-14.el7          yum       36 k

事务概要
================================================================================
安装  1 软件包 (+9 依赖软件包)

总下载量:3.9 M
安装大小:12 M
Is this ok [y/d/N]: y
Downloading packages:
--------------------------------------------------------------------------------
总计                                               6.3 MB/s | 3.9 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : libecap-0.2.0-9.el7.x86_64                                 1/10 
  正在安装    : perl-Digest-1.17-245.el7.noarch                            2/10 
  正在安装    : perl-Digest-MD5-2.52-3.el7.x86_64                          3/10 
  正在安装    : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64                4/10 
  正在安装    : perl-Net-Daemon-0.48-5.el7.noarch                          5/10 
  正在安装    : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64                 6/10 
  正在安装    : perl-IO-Compress-2.061-2.el7.noarch                        7/10 
  正在安装    : perl-PlRPC-0.2020-14.el7.noarch                            8/10 
  正在安装    : perl-DBI-1.627-4.el7.x86_64                                9/10 
  正在安装    : 7:squid-3.3.8-26.el7.x86_64                               10/10 
yum/productid                                            | 1.6 kB     00:00     
  验证中      : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64                 1/10 
  验证中      : perl-Net-Daemon-0.48-5.el7.noarch                          2/10 
  验证中      : perl-Digest-MD5-2.52-3.el7.x86_64                          3/10 
  验证中      : perl-PlRPC-0.2020-14.el7.noarch                            4/10 
  验证中      : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64                5/10 
  验证中      : perl-Digest-1.17-245.el7.noarch                            6/10 
  验证中      : 7:squid-3.3.8-26.el7.x86_64                                7/10 
  验证中      : libecap-0.2.0-9.el7.x86_64                                 8/10 
  验证中      : perl-DBI-1.627-4.el7.x86_64                                9/10 
  验证中      : perl-IO-Compress-2.061-2.el7.noarch                       10/10 

已安装:
  squid.x86_64 7:3.3.8-26.el7                                                   

作为依赖被安装:
  libecap.x86_64 0:0.2.0-9.el7                                                  
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7                                  
  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7                                   
  perl-DBI.x86_64 0:1.627-4.el7                                                 
  perl-Digest.noarch 0:1.17-245.el7                                             
  perl-Digest-MD5.x86_64 0:2.52-3.el7                                           
  perl-IO-Compress.noarch 0:2.061-2.el7                                         
  perl-Net-Daemon.noarch 0:0.48-5.el7                                           
  perl-PlRPC.noarch 0:0.2020-14.el7                                             

完毕!
[root@localhost ~]# 

安装完成后重启一下Squid服务程序

[root@localhost ~]# systemctl restart squid
[root@localhost ~]# systemctl enable squid
Created symlink from /etc/systemd/system/multi-user.target.wants/squid.service to /usr/lib/systemd/system/squid.service.
[root@localhost ~]# systemctl enable squid
[root@localhost ~]# 

正向代理

在windows 7系统中打开任意浏览器,进行如下操作

填写Squid服务器的IP地址

现在用户可以使用Squid服务程序提供的代理服务上网了

Squid服务程序默认使用3128、3401与4827等端口号,为了防止被人“蹭网”,可以把默认使用的端口号修改为其他值,以便起到一定的保护作用。在/etc目录下的Squid服务程序同名目录中找到配置文件,把Squid服务程序的代理服务端口(http_port参数)修改成新值

[root@localhost ~]# vim /etc/squid/squid.conf

重启Squid服务程序

[root@localhost ~]# systemctl restart squid
[root@localhost ~]# systemctl enable squid
[root@localhost ~]#

将新的端口号添加到Squid服务程序在SElinux域的允许列表中

[root@localhost ~]# semanage port -l | grep squid_port_t
squid_port_t                   tcp      3128, 3401, 4827
squid_port_t                   udp      3401, 4827
[root@localhost ~]# semanage port -a -t squid_port_t -p tcp 10086
[root@localhost ~]# semanage port -l | grep squid_port_t
squid_port_t                   tcp      10086, 3128, 3401, 4827
squid_port_t                   udp      3401, 4827
[root@localhost ~]# 

ACL访问控制

在日常工作中,公司办公电脑一般是通过公司内部的网关服务器来访问互联网,当把Squid服务程序部署为公司网络的网关服务器后,Squid服务程序的访问控制列表(ACL)功能将发挥它的作用。它可以根据指定的策略条件来缓存数据或限制用户的访问。

只允许IP地址为192.168.168.129的客户端使用服务器上的Squid服务程序提供的代理服务,禁止其余所有的主机代理请求。

[root@localhost ~]# vim /etc/squid/squid.conf

重启Squid服务程序

[root@localhost ~]# systemctl restart squid

因为IP地址不符合允许策略,所以访问请求被拒绝

禁止所有客户端访问网址中包含 baidu 关键词的网站

[root@localhost ~]# vim /etc/squid/squid.conf

重启Squid服务程序

[root@localhost ~]# systemctl restart squid

当客户端分别访问带有baidu关键词和不带baidu关键词的网站时的结果

禁止所有客户端访问某个特定的网站

除了禁止所有客户端访问网址中包含baidu关键词的方法,为了避免误封的行为,还可以通过禁止客户端访问某个特定的网址

[root@localhost ~]# vim /etc/squid/squid.conf

为了让实验效果更明显,我就拿HTTP协议和HTTPS协议做对比

禁止员工在企业网内部下载带有某些后缀的文件

在企业网络中,总会遇到有人利用企业网络的高速带宽私自下载资源(比如歌曲、电影等),通过禁止所有用户访问.rar或.avi、.mp3等后缀文件的请求,可以防止他们继续下载资源

[root@localhost ~]# vim /etc/squid/squid.conf

重启Squid服务程序

[root@localhost ~]# systemctl restart squid

反向代理

原理是把一部分原本向网站源服务器发起的用户请求交给Squid服务器缓存节点来处理。但是这种技术的弊端也很明显,如果有人将自己的域名和服务器反向代理到某个知名的网站上面,从理论上来讲,当用户访问到这个域名时,也会看到与那个知名网站一样的内容。因此,当前许多网站都默认禁止了反向代理功能。开启了CDN(内容分发网络)服务的网站也可以避免这种窃取行为。

[root@localhost ~]# vim /etc/squid/squid.conf
………………省略部分输出信息………………
57 
58 # Squid normally listens to port 3128
59 http_port 你的桥接网卡IP地址:80 vhost
60 cache_peer 网站源服务器IP地址 parent 80 0 originserver
61 
………………省略部分输出信息………………
[root@localhost ~]# systemctl restart squid

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值