温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
Linux
平台
Squ
oxy
代理
服务
研究
实现
闫梅
215信息:技术与应用信息记录材料 2022年12月 第23卷第12期 0 引言web 服务器为了提供更为快捷、高效的服务,提高时间和带宽的使用效率,可以在浏览器和源服务器之间设置代理服务器,客户端向位于中间位置的 PRoxy 代理服务器发起数据请求,代理服务器对接收到的数据信息进行分析与处理,将客户端请求的数据返回给浏览器1。可以将其理解为网络信息的中转站,尤其在大型高负载 web 站点的访问中发挥着至关重要的作用,代理服务作为性能优化的重要手段,客户端在刷新浏览器时,不用重新请求,而是从 PRoxy 服务中读取,极大减轻原始服务器的负载。其主要作用有:资源获取:帮助客户端向目的地获取所需的资源;提高访问速度:代理服务器保存从原始服务器所获取的资源,从而实现客户端快速的获取,达成节省带宽以及加快内部网络对因特网 WWW 访问速度的目的;提高内部网络的安全性:代理服务器代替客户端去获取原始服务器资源,隐藏了客户端真实信息,同时 PRoxy 代理服务一般架设在内部网络的网关之上,承担部分防火墙的功能,对内部网络的安全起到防护作用。目前代理服务器有很多,本文将在 Linux 平台下对 Squid PRoxy 代理服务的实现进行研究。1 代理服务器的工作原理代理服务器通常应用于以下场景:客户端数量巨大,且大部分需要 www 网络服务和浏览静态网站2;PRoxy 服务器被赋予了防火墙的功能;客户端需要访问传输速度很慢的网站,比如一些国外的网站等。代理服务器作为一种既是服务端又是客户端的中间程序,主要用于转发客户端系统的网络访问请求,具体工作流程如下,如图 1 所示。图 1 代理服务器的工作原理1.1 PRoxy 服务器中有用户请求的信息客户端向代理服务器端发送一个请求的数据包;PRoxy 服务器接收之后,首先查找数据缓存中是否包含客户端请求的数据信息;如果数据缓存中存储有客户端请求的数据信息,PRoxy 服务器将取出相关的数据信息;PRoxy 服务器将取出的数据回传给客户端。1.2 PRoxy 服务器中没有用户请求的信息a.客户端向代理服务器端发送一个请求的数据包;b.代理服务器端接收之后,首先查找自己的数据缓存中是否包含客户端请求的数据信息,通过检查发现数据缓存中没有用户请求的数据信息;c.数据缓存反馈信息给 PRoxy 服务器;基于 Linux 平台下 Squid PRoxy 代理服务的研究与实现闫 梅(山西机电职业技术学院信息工程系 山西 长治 046011)【摘要】在大型高负载 web 站点访问的过程中,为了避免网络拥挤,大幅度提高网络信息获取的速度与效率,减少服务器端的负载,通常会设置代理服务器进行数据的分流,为客户端提供网络服务。本文基于 Linux 平台,对 Squid PRoxy 代理服务进行了研究,从用户认证和非用户认证分别详细分析了 Squid 代理服务搭建的过程,并从客户端进行了验证,为服务器提供高速率、安全的用户访问提供参考。【关键词】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 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 软件是否已经安装,显示 package 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-17.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 服务是否处于 active(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 文件,如图 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添加代码块:在配置文件后面添加以下的代码内容,添加代码后通过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重新启动 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 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 stop firewall.service#systemctl disable firewall.service带用户认证的 squid 代理服务端的配置为了增加访问的安全性,可以对其用户身份信息进行验证,本文采用 Squid 自带的认证程序 ncsa 来实现用户认证5。由于用户认证需要访问密码的生成,需要使用到命令行工具 htpassword,此工具可以生成访问密码,此命令是httpd-tools 包的一部分。httpd-tools 工具的安装:Centos 可以直接使用yum install httpd-tools-y 命令进行安装,当提示“完毕”后,表示 httpd-tools 工具安装完成,如图 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 来进行验证,输入用户名和密码,若提示 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 Authentication#认证的有效时间auth_param basic credentialsttl 2 hours#允许认证的用户访问acl cangluan proxy_auth REQUIRED#允许认证的成员用户访问http_access allow auth_users 重新启动 squid 服务:squid 配置文件内添加允许授权用户访问后,再次需要使用 systemctl r