AIOps 一场颠覆传统运维的盛筵
994
2022-10-04
Linux运维 --- 使用Squid部署代理缓存服务
Squid服务程序会按照收到的用户请求向网站源服务器请求页面、图片等所需的数据,并将服务器返回的数据存储在运行Squid服务程序的服务器上。当有用户再请求相同的数据时,则可以直接将存储服务器本地的数据交付给用户,这样不仅减少了用户的等待时间,还缓解了网站服务器的负载压力。
Squid服务程序具有配置简单、效率高、功能丰富等特点,它能支持HTTP、FTP、SSL等多种协议的数据缓存,可以基于访问控制列表(ACL)和访问权限列表(ARL)执行内容过滤与权限管理功能,还可以基于多种条件禁止用户访问存在威胁或不适宜的网站资源,因此可以保护企业内网的安全,提升用户的网络体验,帮助节省网络带宽。
正向代理模式,是指让用户通过Squid服务程序获取网站页面等资源,以及基于访问控制列表(ACL)功能对用户访问网站行为进行限制,在具体的服务方式上又分为标准代理模式与透明代理模式。标准正向代理模式是把网站数据缓存到服务器本地,提高数据资源被再次访问时的效率,但是用户在上网时必须在浏览器等软件中填写代理服务器的IP地址与端口号信息,否则默认不使用代理服务。而透明正向代理模式的作用与标准正向代理模式基本相同,区别是用户不需要手动指定代理服务器的IP地址与端口号,所以这种代理服务对于用户来讲是相对透明的。
反向代理模式,是指让多台节点主机反向缓存网站数据,从而加快用户访问速度。一般来讲,网站中会普遍加载大量的文字、图片等静态资源,而且它们相对来说都是比较稳定的数据信息,当用户发起网站页面中这些静态资源的访问请求时,我们可以使用Squid服务程序提供的反向代理模式来进行响应。而且,如果反向代理服务器中恰巧已经有了用户要访问的静态资源,则直接将缓存的这些静态资源发送给用户,这不仅可以加快用户的网站访问速度,还在一定程度上降低了网站服务器的负载压力。
为了能够相互通信,需要将这两台虚拟机都设置为仅主机模式,新添加的网卡设备选择为桥接模式,否则这两台虚拟机都无法访问外网
使用ping命令检查Squid服务器可以访问外网
[root@localhost ~]# ping baidu.comPING 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 ms64 bytes from 14.215.177.38: icmp_seq=2 ttl=128 time=5.85 ms64 bytes from 14.215.177.38: icmp_seq=3 ttl=128 time=6.36 ms^C--- a.shifen.com ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2004msrtt 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-managerThis 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 MIs this ok [y/d/N]: yDownloading packages:--------------------------------------------------------------------------------总计 6.3 MB/s | 3.9 MB 00:00 Running transaction checkRunning transaction testTransaction test succeededRunning 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 squidCreated 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_tsquid_port_t tcp 3128, 3401, 4827squid_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_tsquid_port_t tcp 10086, 3128, 3401, 4827squid_port_t udp 3401, 4827[root@localhost ~]#
ACL访问控制
在日常工作中,公司办公电脑一般是通过公司内部的网关服务器来访问互联网,当把Squid服务程序部署为公司网络的网关服务器后,Squid服务程序的访问控制列表(ACL)功能将发挥它的作用。它可以根据指定的策略条件来缓存数据或限制用户的访问
例1:只允许IP地址为192.168.168.129的客户端使用服务器上的Squid服务程序提供的代理服务,禁止其余所有的主机代理请求。
[root@localhost ~]# vim /etc/squid/squid.conf
重启Squid服务程序
[root@localhost ~]# systemctl restart squid
因为IP地址不符合允许策略,所以访问请求被拒绝
例2:禁止所有客户端访问网址中包含 baidu 关键词的网站
[root@localhost ~]# vim /etc/squid/squid.conf
重启Squid服务程序
[root@localhost ~]# systemctl restart squid
当客户端分别访问带有baidu关键词和不带baidu关键词的网站时的结果
例3:禁止所有客户端访问某个特定的网站
除了禁止所有客户端访问网址中包含baidu关键词的方法,为了避免误封的行为,还可以通过禁止客户端访问某个特定的网址
[root@localhost ~]# vim /etc/squid/squid.conf
为了让实验效果更明显,我就拿HTTP协议和HTTPS协议做对比
例4:禁止员工在企业网内部下载带有某些后缀的文件
在企业网络中,总会遇到有人利用企业网络的高速带宽私自下载资源(比如歌曲、电影等),通过禁止所有用户访问.mp3、.rar或.avi等后缀文件的请求,可以防止他们继续下载资源
[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 312859 http_port 你的桥接网卡IP地址:80 vhost60 cache_peer 网站源服务器IP地址 parent 80 0 originserver61 ………………省略部分输出信息………………[root@localhost ~]# systemctl restart squid
发表评论
暂时没有评论,来抢沙发吧~