1、 215信息:技术与应用信息记录材料 2022年12月 第23卷第12期 0 引言web 服务器为了提供更为快捷、高效的服务,提高时间和带宽的使用效率,可以在浏览器和源服务器之间设置代理服务器,客户端向位于中间位置的 PRoxy 代理服务器发起数据请求,代理服务器对接收到的数据信息进行分析与处理,将客户端请求的数据返回给浏览器1。可以将其理解为网络信息的中转站,尤其在大型高负载 web 站点的访问中发挥着至关重要的作用,代理服务作为性能优化的重要手段,客户端在刷新浏览器时,不用重新请求,而是从 PRoxy 服务中读取,极大减轻原始服务器的负载。其主要作用有:资源获取:帮助客户端向目的地获取所需
2、的资源;提高访问速度:代理服务器保存从原始服务器所获取的资源,从而实现客户端快速的获取,达成节省带宽以及加快内部网络对因特网 WWW 访问速度的目的;提高内部网络的安全性:代理服务器代替客户端去获取原始服务器资源,隐藏了客户端真实信息,同时 PRoxy 代理服务一般架设在内部网络的网关之上,承担部分防火墙的功能,对内部网络的安全起到防护作用。目前代理服务器有很多,本文将在 Linux 平台下对 Squid PRoxy 代理服务的实现进行研究。1 代理服务器的工作原理代理服务器通常应用于以下场景:客户端数量巨大,且大部分需要 www 网络服务和浏览静态网站2;PRoxy 服务器被赋予了防火墙的功
3、能;客户端需要访问传输速度很慢的网站,比如一些国外的网站等。代理服务器作为一种既是服务端又是客户端的中间程序,主要用于转发客户端系统的网络访问请求,具体工作流程如下,如图 1 所示。图 1 代理服务器的工作原理1.1 PRoxy 服务器中有用户请求的信息客户端向代理服务器端发送一个请求的数据包;PRoxy 服务器接收之后,首先查找数据缓存中是否包含客户端请求的数据信息;如果数据缓存中存储有客户端请求的数据信息,PRoxy 服务器将取出相关的数据信息;PRoxy 服务器将取出的数据回传给客户端。1.2 PRoxy 服务器中没有用户请求的信息a.客户端向代理服务器端发送一个请求的数据包;b.代理服
4、务器端接收之后,首先查找自己的数据缓存中是否包含客户端请求的数据信息,通过检查发现数据缓存中没有用户请求的数据信息;c.数据缓存反馈信息给 PRoxy 服务器;基于 Linux 平台下 Squid PRoxy 代理服务的研究与实现闫 梅(山西机电职业技术学院信息工程系 山西 长治 046011)【摘要】在大型高负载 web 站点访问的过程中,为了避免网络拥挤,大幅度提高网络信息获取的速度与效率,减少服务器端的负载,通常会设置代理服务器进行数据的分流,为客户端提供网络服务。本文基于 Linux 平台,对 Squid PRoxy 代理服务进行了研究,从用户认证和非用户认证分别详细分析了 Squid
5、 代理服务搭建的过程,并从客户端进行了验证,为服务器提供高速率、安全的用户访问提供参考。【关键词】Squid;代理服务器;用户认证【中图分类号】TP31 【文献标识码】A 【文章编号】1009-5624(2022)12-0215-05DOI:10.16009/13-1295/tq.2022.12.055216 信息:技术与应用信息记录材料 2022年12月 第23卷第12期 d.代理服务器接收到反馈信息后,继而向远端的原始服务器发出数据请求信息;e.远端服务器收到请求数据后,将请求的数据信息返回给 PRoxy 服务器;f.PRoxy 服务器将收到的信息回传给客户端,同时在数据缓存中进行备份。2
6、 Squid代理服务器的实现Squid 软件是 Linux 平台下常用的代理服务器软件,可以代理 HTTP、FTP、GOPHER、SSL 和 WAIS 协议,因其快速响应、减少网络阻塞、增强访问控制、提高安全性的优点,同时可以针对特定的网站、用户、网络数据类型实施访问控制,因此在 UNIX 及 Linux 操作系统下有广泛的应用。2.1 Squid 服务器端的安装2.1.1 检查 Squid 软件是否安装Squid 具有下载安装简单、配置灵活的特点3。以管理员身份登录 Linux 操作系统,在终端通过 rpm-qa|grep squid 命令来检查 Squid 软件是否已经安装,显示 pack
7、age squid is not installed 则表示没有安装,否则会显示具体的安装包信息。2.1.2 如果未安装,则使用 yum 方式安装通过命令 yum install squid-y 来安装 Squid 软件,如果不使用参数-y,安装过程中找到安装包之后,会询问 Is this OKy/d/N,需要手动进行选择;使用-y 参数可以保证在安装过程提示自动选择全部为 y,不再需要手动选择,安装完成后提示 compelte,表示软件安装完成。安装完成后执行 rpm-qa|grep squid 命令来查看Squid 软件是否安装成功,结果显示 squid 的版本为squid3.5.20-1
8、7.e17_9.7.x86_64,如图 2 所示。图 2 安装好的 Squid 版本2.1.3 启动并开启 squid 服务验证 squid 成功安装后,使用#systemctl start squid 命令启动 Squid,并使用#systemctl enable squid命令设置 squid 服务为自启动4。#systemctl start squid#systemctl enable squid 2.1.4 查看 squid 服务运行状态squid服务开启后,为验证服务是否处于开启的状态,可通过 systemctl status squid 来查看 squid 服务是否处于 activ
9、e(running)运行状态,如图 3 所示。图 3 squid 运行状态2.2 Squid 服务器端的配置2.2.1 不带用户认证的 squid 代理服务端的配置默认情况下 squid 本身不带任何认证程序,客户端可以直接通过代理服务器访问网络资源,位于/etc/squid/目录下的squid.conf是squid服务中最核心的配置文件。查看 squid.conf 配置文件:以管理员身份登录linux 服务器后,通过 cd/etc/squid 命令切换至 squid.conf 配置文件存储的目录下,使用 ls 命令查看该目录下存在的文件及目录信息,显示存在 squid.conf 文件,如图
10、4 所示。图 4 查看 squid.conf 文件编辑配置文件,设置监听端口和允许所有 ip 访问:使用 vi 编辑器打开 squid.conf 配置文件,并通过 i 键切换至编辑模式。通过“#”号注释 http_access deny all此行代码,并添加 http_access allow all 代码允许所有ip 访问,同时设置端口为 3712。http_port 3712#设置监听的端口,默认为 3128#http_access deny all#注释此行代码http_access allow all#添加,为允许所有 ip添加代码块:在配置文件后面添加以下的代码内容,添加代码后通过
11、wq!保存并退出编辑模式,如图8所示。#配置 squid 进程使用的内存大小为 64 MBcache_mem 64 MB#最大缓存的静态资源对象,超过这个大小将不会缓存数据maximum_object_size 6 MB cache_dir ufs/var/spool/squid 100 16 256#日志文件存放的路径 217信息:技术与应用信息记录材料 2022年12月 第23卷第12期 access_log/var/log/squid/access.log#允许所有访问http_access allow all#随意填写一个名字visible_hostname squid.chao重新启
12、动 squid 服务,并检查配置文件是否有误:对 squid.conf 配置文件编辑后,需要使用 systemctl resatrt squid 命令重新启动 squid 服务。同时,为了检验 squid.conf 配置文件是否有错误,通过 squid-k parse 命令进行检测,若没有出现 ERROR 就没有问题,如图 5 所示。图 5 检查配置文件查看 squid 监听的端口:配置文件检测无误后,通过 netstat-ntlp 命令查看 squid 监听的端口,输入该命令提示 command not found,发现 Linux 系统中缺少netstat 对应的包,这时需要通过 yum
13、install net-tools命令安装 net-tools 工具,提示 complete,表示工具安装完成,如图 6 所示。图 6 net-tools 工具安装安装完成后,netstat 即可正常使用,再次使用netstat-ntlp 命令可查看到 squid 监听的端口 3712,如图 7 所示。图 7 系统监听的端口关闭 CentOS 的防火墙:为了监听端口能够正常访问,可以通过#systemctl stop firewall.service 和#systemctl disable firewall.service命令关闭防火墙,放行 squid 监听端口。#systemctl sto
14、p firewall.service#systemctl disable firewall.service带用户认证的 squid 代理服务端的配置为了增加访问的安全性,可以对其用户身份信息进行验证,本文采用 Squid 自带的认证程序 ncsa 来实现用户认证5。由于用户认证需要访问密码的生成,需要使用到命令行工具 htpassword,此工具可以生成访问密码,此命令是httpd-tools 包的一部分。httpd-tools 工具的安装:Centos 可以直接使用yum install httpd-tools-y 命令进行安装,当提示“完毕”后,表示 httpd-tools 工具安装完成,
15、如图 8 所示。图 8 httpd-tools 工具安装完成218 信息:技术与应用信息记录材料 2022年12月 第23卷第12期 添加认证用户并生成密码文件:htpasswd 生成的密码和关联的用户名将存储在指定的文件中,密码将被加密,本文的账号信息保存在/etc/squid/passwd 文件下6,这里的 yan 是用户名,执行命令后会提示设置 yan 用户的密码,输入成功后,会提示已经为 yan 这个用户添加了密码。图 9 用户设置密码验证用户密码:为了验证密码文件是否生效,使用命令/usr/lib64/squid/basic-ncsa_auth/etc/squid/passwd 来进
16、行验证,输入用户名和密码,若提示 OK 表示成功,如图 10 所示。图 10 验证用户密码配置 squid.conf:在打开 squid.conf 配置文件中添加如下代码块:#选择认证方式为 basic,定义认 squid 密码文件与ncsa_auth 文件位置auth_param basic program/usr/lib64/squid/basic_ncsa_auth/etc/squid/passwd#认证程序进程数数量auth_param basic children 5#在使用 PRoxy 弹出来的提示框中的描述信息auth_param basic realm Squid Bacsic
17、 Authentication#认证的有效时间auth_param basic credentialsttl 2 hours#允许认证的用户访问acl cangluan proxy_auth REQUIRED#允许认证的成员用户访问http_access allow auth_users 重新启动 squid 服务:squid 配置文件内添加允许授权用户访问后,再次需要使用 systemctl restart squid 命令,重新启动 squid 服务使其生效。2.3 客户端的配置在完成服务端的配置后,可通过客户端的浏览器进行验证,在对 squid 服务器端配置时发现系统就只有命令行界面,但
18、是没有图形化界面,无法打开浏览器。2.3.1 安装图形界面为了使用图形界面下的浏览器进行测试,需要安装系统的 GNOME 图形界面,在命令行界面下使用 yum grouplist 命令列出本系统支持的图形化界面有哪些,如图 11 所示。图 11 本系统支持的图形化界面研究人员选择默认的图形化界面(GNOME Desktop),使用命令#yum groupinstall“GNOME Desktop”“Graphical Administration Tools”获取并安装 CentOS 默认的图形界面GNOME程序包,提示complete表示图形界面安装成功。2.3.2 修改 CentOS7 默
19、认启动模式为图形化模式使用 systemctl get-default 命令提示 multi-user.target,说明当前默认启动模式为命令行模式,使用systemctl set-default graphical.target 修改默认启动为 GNOME 界面模式7。#systemctl get-default#systemctl set-default graphical.targetsystemctl get-default#reboot使用命令 reboot 重启 CentOS 系统,重启之后就已经切换到 GUI 图形界面模式,通过对图形化界面的设置,即可实现从命令行到图形化界面的
20、所有操作8。2.3.3 不带用户认证的客户端配置在图形界面下打开火狐浏览器,通过“设置”找到“网络设置”,单击“设置”,在打开的网络设置中,勾选“手动配置代理”,设置HTTP代理为“127.0.0.1”端口为“3712”,同时勾选“也将次代理用于 HTTPS”,完成代理的配置。尝试用浏览器中访问 www.sxjdxy.org,页面回显查看的页 219信息:技术与应用信息记录材料 2022年12月 第23卷第12期 面信息,如图 12 所示。图 12 代理服务器的设置在 squid 中位于/var/log/squid/access.log 的日志文件会将 HTTP 响应的关键信息记录并存放其中,
21、在 GNOME桌面上打开终端,切换目录至/var/log/squid,使用 cat access.log 查看日志文件9,查看日志文件,可查看到浏览器访问 www.sxjdxy.org 的记录信息被保存到日志文件中,如图 13 所示。图 13 查看日志文件2.3.4 带用户认证的客户端配置在对浏览器进行 PRoxy 设置后,当使用浏览器访问页面的时候,会先弹出一个提示输入用户名和密码的提示框10,输入用户名和密码即可访问到 www.sxjdxy.org 页面信息,如图 14 所示。图 14 带用户认证访问3 结语通过在 Linux 平台下从 Squid 的安装、Squid 服务器端的配置及客户
22、端的配置对 Squid PRoxy 代理服务的实现进行了研究,客户端从用户认证和非用户认证对代理服务器的访问进行了验证,借助于 Squid 代理服务器,客户端获得了自己所需要的信息,又没有泄露自己的信息,提高了访问效率和安全防护。【参考文献】1 杜玲.空间信息网络访问模式下的反向代理技术研究 D.成都:成都理工大学,2009.2 欧阳民.基于 Web 的高校校区在线心理咨询系统设计与实现 D.成都:电子科技大学,2009.3 孙莉娜.RHEL5 中 Squid 代理服务器的配置与实现 J.网络安全技术与应用,2014(4):50,53.4 刘春,景建强,邵国强,等.CentOS 7 中 Squ
23、id 代理服务器的配置与实现 J.现代信息科技,2020(3):38-41.5 任开军.基于 centos7 的 squid 代理系统的研究与实现 J.信息技术与信息化,2019(1):60-62.6UMESHCHANDRA THANKI KUNAL,RAMJIBHAI PATEL CHIRAG.Improve SQUID proxys performance using new cache replacement architectureJ.International Journal of Managment,IT and Engineering,2013,2(7):418-431.7 卢启
24、臣.CentOS 7加装图形界面J.电子世界,2020(12):14-15.8 代善国.Squid+SquidGuard 网络代理与过滤系统 J.网络安全和信息化,2021(5):111-114.9 张天亮.基于移动边缘智能的内容分发研究与平台实现 D.北京:北京邮电大学,2020.10 陈亚帅.基于内容审核的数据泄露防护系统的设计与实现 D.济南:山东大学,2020.基金项目:山西省教育科学“十三五”规划 2020 年度“互联网+教育”专项课题“互联网+高职扩招”教育教学改革实践研究(HLW-20196)。作者简介:闫梅(1988),女,山西长治、硕士,讲师,研究方向:计算机网络安全及人工智能研究。