APP下载

基于Linux平台下Squid PRoxy代理服务的研究与实现

2022-02-15

信息记录材料 2022年12期
关键词:代理服务器配置文件浏览器

闫 梅

(山西机电职业技术学院信息工程系 山西 长治 046011)

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服务器;

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操作系统,在终端通过rpmqa|grep squid命令来检查Squid软件是否已经安装,显示package squid is not installed则表示没有安装,否则会显示具体的安装包信息。

2.1.2 如果未安装,则使用yum方式安装

通过命令yum install squid -y来安装Squid软件,如果不使用参数-y,安装过程中找到安装包之后,会询问Is this OK[y/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 MB

cache_mem 64 MB

#最大缓存的静态资源对象,超过这个大小将不会缓存数据

maximum_object_size 6 MB cache_dir ufs /var/spool/squid 100 16 256

#日志文件存放的路径

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工具安装完成

⑧添加认证用户并生成密码文件: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 restart squid命令,重新启动squid服务使其生效。

2.3 客户端的配置

在完成服务端的配置后,可通过客户端的浏览器进行验证,在对squid服务器端配置时发现系统就只有命令行界面,但是没有图形化界面,无法打开浏览器。

2.3.1 安装图形界面

为了使用图形界面下的浏览器进行测试,需要安装系统的GNOME图形界面,在命令行界面下使用yum grouplist命令列出本系统支持的图形化界面有哪些,如图11所示。

图11 本系统支持的图形化界面

研究人员选择默认的图形化界面(GNOME Desktop),使用命令#yum groupinstall“GNOME Desktop” “Graphical Administration Tools”获取并安装CentOS默认的图形界面GNOME程序包,提示complete表示图形界面安装成功。

2.3.2 修改CentOS7默认启动模式为图形化模式

使用systemctl get-default命令提示multi-user.target,说明当前默认启动模式为命令行模式,使用systemctl set-default graphical.target修改默认启动为GNOME界面模式[7]。

#systemctl get-default

#systemctl set-default graphical.target

systemctl get-default

#reboot

使用命令reboot重启CentOS系统,重启之后就已经切换到GUI图形界面模式,通过对图形化界面的设置,即可实现从命令行到图形化界面的所有操作[8]。

2.3.3 不带用户认证的客户端配置

在图形界面下打开火狐浏览器,通过“设置”找到“网络设置”,单击“设置”,在打开的网络设置中,勾选“手动配置代理”,设置HTTP代理为“127.0.0.1”端口为“3712”,同时勾选“也将次代理用于HTTPS”,完成代理的配置。尝试用浏览器中访问www.sxjdxy.org,页面回显查看的页面信息,如图12所示。

图12 代理服务器的设置

在squid中位于/var/log/squid/access.log的日志文件会将HTTP响应的关键信息记录并存放其中,在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服务器端的配置及客户端的配置对Squid PRoxy代理服务的实现进行了研究,客户端从用户认证和非用户认证对代理服务器的访问进行了验证,借助于Squid代理服务器,客户端获得了自己所需要的信息,又没有泄露自己的信息,提高了访问效率和安全防护。

猜你喜欢

代理服务器配置文件浏览器
从Windows 10中删除所有网络配置文件
用软件处理Windows沙盒配置文件
互不干涉混用Chromium Edge
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
地铁信号系统中代理服务器的设计与实现
基于Zookeeper的配置管理中心设计与实现
防火墙技术与校园网络安全的研究
一种容侵系统的设计
浏览器