毕业设计论文基于Linux的Squid代理服务器的架设.docx
- 文档编号:7064676
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:28
- 大小:1.47MB
毕业设计论文基于Linux的Squid代理服务器的架设.docx
《毕业设计论文基于Linux的Squid代理服务器的架设.docx》由会员分享,可在线阅读,更多相关《毕业设计论文基于Linux的Squid代理服务器的架设.docx(28页珍藏版)》请在冰豆网上搜索。
毕业设计论文基于Linux的Squid代理服务器的架设
本科毕业论文
基于Linux的Squid代理服务器的架设
学院:
计算机与信息工程学院
专业:
计算机科学与技术
学号:
111013632
姓名:
指导教师:
职称:
论文提交日期:
二О一五年六月
摘要
做为眼下广受青睐的操作系统,Linux已经愈来愈受到世人的关注。
尽管当前Linux包含的软件还不是很丰富,替代WINDOWS作为一般PC机操作系统还为时过早,但是在服务器领域,Linux的稳定性,可操作性一点也不输于任何操作系统,并且也有良好的软件支持。
Squid就是其中之一。
Linux加Squid的配合做为代理服务器,性能远远超过我们所想象的。
Squid是一个缓存internet数据的一种服务,它接收用户的下载请求,并主动处理下载的数据。
换句话说,当一个用户要下载一个主页时,它向Squid发出一个请求,要Squid替它下载,而后Squid连接所申请的网站并请求该主页,紧接着把该主页传给用户,同时保存一个备份,当别的用户请求一样的页面时,Squid把保留的备份立刻传给用户,使用户感觉速度相当快。
关键词:
squidlinux代理
Abstract
Asapopularoperatingsystem,Linuxhasincreasinglyattractedtheattentionoftheworld.DespitethecurrentLinuxincludessoftwareisnotveryrich,alternativewindowsasageneraloperatingsystemofPCisstilltooearly,butinthefieldoftheserver,thestabilityandoperabilityofLinuxdoesnotlosetoanyoperatingsystem,andalsohavegoodsoftwaresupport. Squidisoneofthem. LinuxplusSquidastheproxyserver,performanceisfarmorethanweimagined.
SquidisaservicethatcachesInternetdata,itreceivestheuser'sdownloadrequest,andautomaticallydownloadsthedata. Inotherwords,whenauserwantstodownloadapage,itissuesarequesttothesquid,andasksquidfordownloadit,thensquidconnectedwebsiteandrequeststhepage,thenpassthepagetotheuser,atthesametime,squidsaveabackuppage,whenotherusersrequestasamepage,squidimmediatelypassthebackuppagetotheuser,makesuserfeelsveryfast.
Keywords:
SquidLinuxAgent
1引言
1.1项目开发背景
Linux是近几年一款别树一帜的操作系统。
凭借公开的源代码、强大兴盛的网络功能和大量的无偿资源受到业界的一致好评。
在全球各地不计其数的程序员共同的努力下逐渐完善该系统,其目的是让个人和企业享受到免费的不受商业化影响的UNIX兼容产物。
Linux为用户供应了十分完善的、不容忽视的网络功能。
Linux无偿提供了海量支持Internet的软件,Internet是在UNIX领域中创建并郁勃起来。
由于互联网技术的不断发展和拓宽,谨慎选择个人和企业应用的操作系统逐渐走入人们的视线。
人们不停地追求把性能最优、安全性最优、价钱最廉价的操作系统安装到自己的计算机上。
因此,Linux成了流行的操作系统。
代理服务器的主要思想是:
当做为客户端的人们想要向服务器访问资源时,服务器为了优化客户的体验率将立即给客户端下发它需要的数据,但由于这些服务器大部分都是远程服务器,数据传输也就需要花费比较长的时间,一旦请求此数据的用户很多,就容易造成网络堵塞。
在这种情况下,代理服务器的作用就突显出来了,代理服务器一方面可以处理客户端的请求,另一方面也可以代理客户端来响应服务器。
1.2项目设计的意义
随着人们正常生活水平的提升,互联网技术的不断发展,宽带进入了家家户户,网络用户的数量急剧膨胀,因此访问的连接也在快速整长,IP地址数量严重缺乏,服务器的安全问题也不得不重视起来。
这些问题都可以依靠架设代理服务器来解决。
用户通过架设的代理服务器来访问自己所需要的资源,可以有效的解决IP地址缺乏的问题,当然通过代理服务器可以有效的在内部网络和外部网络之间架构iptables,就能解决网络安全问题。
1.3Linux简介
Linux是林纳斯·托瓦兹在不满足minix系统的功能下,自己研制的一款操作系统,当时他只是做为一款实验操作的系统,并有着随时中断此系统的思想,完全没有想到Linux会发展到今天这种广受欢迎的地步。
不说其他功能,在我自己学习这项系统的过程中,有一项功能深深的感到强大,就是逻辑卷。
逻辑卷的应用不在受限于硬盘的不足时不得不更换硬盘,而一旦更换硬盘,数据一定个会受到影响,但逻辑卷就解决了这个问题,因为它有一个在线扩容的功能,单单因为这项功能就吸引了大部分的企业。
Linu的诞生是服务器界的福音。
1.4代理服务器的作用及工作原理
大家都知道本机在未设置的情况下不能直接访问国外的站点,而且网络速度也很慢,通常我们访问网站都是直接与目的主机相连,如果存在代理服务器,我们就可以先河代理服务器进行连接,然后代理服务器把我们的请求(比如说我们想到得到哪个网页)进行回应,一是代理服务器在自身的Cache上查找,二是代替我们想上级请求数据,这样就能够提高访问速度了。
同时代理服务器能够作为一个隔离内网与外网的防火墙,而且能提供记录传输信息和监控网络的功效,强化局域网的安全性等。
它的主要作用有以下几点:
(1)共享网络;
(2)加快访问速度,节约通信带宽;
(3)防止内部主机受到攻击;
(4)限制用户访问,完善网络管理。
代理服务过程简单来说可以分为四步。
第一步:
用户发送的请求被代理服务器接受到;第二步:
代理服务服务器把用户的请求转发给真正的服务器;第三步:
真正的服务器对代理服务器做出响应;第四步:
代理服务器把真正服务器做出的响应返回给用户。
下面我们把一个用户发送请求web数据的过程为例子深入了解一下代理服务器工作的过程。
如图1.1所示。
图1.1Squid代理服务器工作原理
当架设完代理服务器后,正常启动服务,这时服务会监听在配置文件中配置的端口号,当用户向代理服务器发出访问web服务器资源的申请时,代理服务器就会监听到这一信息,代理服务器就会创建一个子进程来响应用户的请求,而主进程还是会继续监听改端口号。
已经创建的子进程就会与用户进行连接,开始对用户的请求进行分析,按照设置的规则,检测改请求是否符合该规则,如果符合,就在代理服务器的Cache中查询是否有用户所请求的信息,如果有就直接下发资源。
没有的话代理服务器刚才创建的子进程就会向真正的服务器发出请求,真正的web服务器就会响应改子进程,代理服务器再将该响应返回给用户,并对资源做保留。
其他客户端的请求过程和上面一致。
1.5Squid代理服务器简介
Squid代理服务器是针对web的高性能代理缓冲服务器,它可以对用户的访问进行加速。
它可以在向上级申请一次数据后响应用户的请求并保留数据,当用户再一次向他请求这个数据时,squid代理服务器就不会向上级申请,直接从自己的Cache中提取返回给用户。
。
Squid代理服务器的一般工作模式如下:
(1)当用户向squid代理服务器申请数据时,而squid没有用户所想要的资源时,squid便会先向友邻的Squid服务器请求数据数据。
如果友邻的squid服务器也没有,就直接向上级请求数据;
(2)Squid服务器向上级请求数据,然后等待上级响应请求。
如果上级有数据,则给出数据;如果没有数据,则上级到Internet中查找;
(3)如果用户请求的squid没有上一级时,Squid代理服务器自己到Internet中查询;
(4)如果这三者都找不到数据,则向客户端报告无法取到数据。
Squid代理服务器是开源的,响应用户的速度快,大大降低了Internet的堵塞率。
Squid还可以在内网和外网之间建立一个防火墙,有效的提高了网络的安全性。
Squid代理服务器的种类有三种,分别是普通代理服务器、透明代理服务器、反向代理服务器。
普通代理服务器可以将静态的网页缓存到自己的Cache,当缓存的网页被用户访问的时候,浏览器可以直接从普通代理服务器的Cache中获得请求的数据,而不是向真正的服务器请求数据,这样就大大减少了IP地址,也减少了网络的堵塞率,当然用户的访问速度也得到了提升。
透明代理搭建出来之后,用户访问的时候根本意识不到这是代理服务器,用户会把代理服务当作他想访问的真正服务器。
其实是防火墙作为内部网络和外部网络通信的桥梁。
在整个过程中,无论是用户还是真正的服务器都不知道他们其实是在和防火墙就行的通信,这样就大大加强了网络的安全性。
反向代理大家可能听的比较少,但是web服务器加速器相信大家都听说,其实web服务器加速器就是反向代理服务器。
典型的结构如下图1.2所示。
图1.2反向代理服务器结构示意图
2Linux下Squid代理服务器的安装与配置
2.1Squid代理服务器的安装
在Linux的终端输入以下命令可查看:
rpm–qa|grepsquid
命令执行结果如下图2.1所示。
图2.1squid版本号
出现以上结果表示本机Squid服务器已安装,它的版本是3.1.10-16.el6.x86_64。
如果系统未安装Squid,在Linux的终端下输入以下命令进行安装:
yum-yinstallsquid
使用安装命令进行安装。
Squid程序将安装在/user/sbin目录中,其配置文
件squid.conf则安装在/etc/squid目录下。
2.2Squid代理服务器的基本配置
/etc/squid/squid.conf是Squid代理服务器的主要配置文件。
由于该文件内容较多,不便于查看和编辑,可以将其复制出一个副本,然后清空源文件,其主要配置内容如下:
(1)NetworkOptions(网络设置选项)
http_port192.168.1.101:
8080
#这一句是用于设置Squid监听的IP地址和端口号,默认3128
icp_port端口号
和其它squid发送和接收ICP查询时监听的端口,0表示禁止
htcp_prot端口号
同其它相邻的缓存服务器之间发送和接收HTCP查询时监听的端口,0表示禁用
tcp_outgoing_addressIP地址
采用HTCP和CARP方式同其它服务器通信,默认IP地址为255.255.255.255
(2)多缓存服务器设置选项
cache_peerhostnametypehttp_porticp_portoptions
指定网络中其它的缓存代理服务器,默认为none。
Hostname:
另一台缓存服务器的主机名
Type:
parent/sibling/multicast(父/同级/多播)
http_port:
目的服务器的http端口
icp_port:
目的服务器的ICP端口
options:
-proxy-only:
仅去获取数据,但不在本地缓存
-default:
默认的父服务器
dead_peer_timeoutNseconds
设置Squid在确定父(同)级缓存服务器不可用之前的等待队列时间
(3)缓存大小设置选项
cache_swap_low(percent,0-100)
缓存对象交换的最低点
cache_swap_high(percent,0-100)
缓存对象交换的最高点
maximum_object_size
缓存对象的最大大小
minimum_object_size
缓存对象的最小大小
maximum_object_size_in_memory
在内存中缓存的最大的对象大小
ipcache_size4096:
fqdncache_size4096
(4)日志文件路径及CACHE的目录设置选项
LRU:
默认,最近最少使用算法
heapLRU:
堆LRU
cache_dir类型路径大小(M)一级子目录二级子目录
系统使用的存储类型
cache_access_log/var/log/squid/access.log
access.log日志文件路径
cache_log/var/log/squid/cache.log
缓存日志文件的目录和文件
emulate_httpd_logon/off
激活仿真HTTP格式的日志
mime_table/etc/squid/mime.conf
mime文件路径
pid_filename/var/ran/squid.pid
指定pid文件和路径
ftp_user用户名@域名
指定匿名FTP密码
ftp_list_width数字
指定FTP列表的文件名长度
ftp_passiveon/off
以被动模式(on)/主动模式(off)
dns_children数字
指定本地默认启动DNS查询进程数
dns_nameserversIP地址
DNS服务器地址
diskd_program/usr/lib/squid/diskd
磁盘管理程序
unlinkd_programusr/lib/squid/unlinkd
删除文件程序
pinger_program/usr/lib/squid/
ping程序
编译时指定:
--enable-icmpoption
redirect_programnone
URL重点向程序
redirect_children数字
重点向进程数
auth_param类型program/children/credentialsttl/realm值
用户认证配置选项
(5)调整Cache的选项
request_header_max_size数字(KB)
最大http请求头
request_body_max_size数字(KB)
最大http请求数据内容
reply_body_max_size数字(KB)
最大返回数据,可以用来限制用户下载的数据大小,避免一个用户长时间占用
reference_age数字
LRU算法中指定LRU时间
quick_abort_min数字(KB)
断点续传最小值
quick_abort_max数字(KB)
断点续传最大值
quick_abort_pct数字(percent)
超过值认为续传成功
negative_ttl数字minutes/hours/seconds
否定回答TTL
positive_dns_ttl数字minutes/hours/seconds
DNS肯定回答TTL
range_offset_limit数字KB/MB/Bytes
请求SQUID预取数据的大小
(6)定义超时的选项
connect_timeout:
SQUID等待客户请求的服务器回应的时间长度
peer_connect_timeout:
一个对等的缓存服务器的TCP连接超时时间
client_lifetime:
客户端同代理服务器TCP连接的最大时间长度
read_timeout:
读入数据超时
request_timeout:
客户端请求最大时间
shutdown_lifetime:
关闭squid缓存时间
(7)定义访问控制的选项
acl:
定义一个访问列表
格式:
aclaclnameacltypestring
类型:
(acltype)
src:
源地址
dst:
目标地址
srcdomain:
原(客户)名称
dstdomain:
目标名称
time:
时间(M星期一、T星期二、W星期三、H星期四、F星期五、A星期六、S星期天)
url_regex[-i]:
URL中的正则表达式匹配
urlpath_regex[-i]:
略去协议和主机名的正则表达式
proxy_auth:
通过外部程序进行用户验证
maxconn:
单IP最大连接数
port:
端口
myip:
本地IP
srcdom_regex[-i]:
匹配客户名
dstdom_regex[-i]:
匹配目标名
myport:
我的端口
proto:
协议,http,ftp..
method:
方法,GETPOST
browser:
匹配User-Agentheader
arp:
匹配指定的MAC地址
proxy_authusername:
指定合法用户,用REQUIRED表示所有合法用户
http_access:
代理访问控制
格式:
http_accessallow|deny[!
]acl_name
icp_access:
icp访问控制
格式:
icp_accessallow|deny[!
]acl_name
cache_peer_access:
其它缓存服务器访问控制
格式:
cache_peer_accesscache_hostallow|deny[!
]acl_name
(8)管理员参数选
cache_mgrmail地址:
管理员电子邮件
cache_effective_user用户名:
运行身份
cache_effective_group组名:
运行组身份
(9)HTTPD加速选项
httpd_accel_host主机名/vitual:
加速某服务器访问
httpd_accel_port端口号:
加速服务器的对方端口
httpd_accel_single_hoston/off:
多台服务器时设置off
httpd_accel_with_proxyon/off:
即作为加速器,又作为WEB缓存服务器,设置为on
httpd_accel_uses_host_headeron/off:
为on,能支持不同的http协议
(11)杂项
logfile_rotate0-9:
日志轮换版本数
append_domain域名:
默认域名
tcp_recv_bufsize数字(KB):
TCP缓存区大小
err_html_text字符串:
包含在错误消息中的文本
deny_info:
禁用时显示消息
格式:
deny_infoerr_page_nameacl
visible_hostname主机名
错误消息中显示的服务器名称
error_directory路径:
指定错误消息文件目录
2.3初始化Squid
(1)初始化硬盘cache目录
我们先将Squid安装好之后,配置其配置文件,为了使Squid能够缓冲硬盘中的访问目标服务器的内容,在第一次运行Squid之前,或者我们在配置文件中修改了cache_dir设置后,我们都必须初始化硬盘cache目录。
命令格式如下:
[root@localhostroot]#/usr/local/squid/sbin/squid-z
初始化cache目录工作需要花费一些时间,这就取决了磁盘驱动器的速度和cache目录的数量和大小。
(2)测试Squid
当cache目录初始化后,可以重新启动Squid服务了,将日志记录重定向到标准错误。
这样,我们就能轻易地定位任何错误或问题的位置,并且确认Squid是否成功启动。
使用-N选项来保持Squid在前台始终运行,-d1选项在标准错误里显示1级别的调试信息。
[root@localhostroot]#/usr/local/squid/sbin/squid-N-d1
命令执行完后,查看目录/var/spool/squid的内容时,可以看到Squid已经根据配置文件的定义建立了目录结构,如图2.2所示。
图2.2硬盘缓冲区的目录结构
2.4启动和停止Squid代理服务器
(1)启动代理服务器
在通常情况下,我们将Squid以后台进程的方式运行(不出现在终端窗口里)。
最容易的方法是执行如下命令:
[root@localhostroot]#/etc/init.d/squidstart
命令执行后出现Startingsquid绿色OK提示,表示启动服务成功。
(2)停止代理服务器
我们可以使用命令squid-kinterrupt,立即关闭Squid代理服务器,不用等待活动完成。
命令如下:
[root@localhostroot]#/etc/init.d/squidstop
命令执行后出现Stoppingsquid绿色OK提示,表示停止代理服务成功。
当然停止Squid代理服务器不止这一种方法。
还有就是最安全地停止Squid代理服务器的命令:
squid-kshutdown以及运用kill+进程号的命令强制停止代理服务器的方法。
(3)重新启动代理服务器
重新启动命令
[root@localhostroot]#/etc/init.d/squidrestart
命令执行后出现以下,则表示重新启动代理服务成果,如图2.3
图2.3重新启动squid服务
(4)自动启动代理服务器
当我们想在系统启动而自动启动代理服务器的时候,可以在终端执行“ntsysv”命令启动永久服务配置程序,找到“Squid”服务,在其前面按空格变成星号,然后选择“确定”,如图2.3所示。
图2.4自动启动代理服务配置
3Squid代理服务器的高级配置
3.1普通代理的实现
普通代理代理服务是标准的、传统的代理服务器。
客户机需要在浏览器中设定代理服务器的地址、端口。
Client:
192.168.122.11
Server:
192.168.122.22
Web:
192.168.122.33
(1)配置server端
[root@node2~]#yuminstallsquid安装squid
[root@localhost~]#vim/etc/squid/squid.conf修改配置文件
.........
acllocalnetsrc10.0.0.0/8#RFC1918possibleinternalnetwork
acllocalnetsrc172.16.0.0/12#RFC1918possibleinternalnetwork
acllocalnetsrc192.168.0.0/16#R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 基于 Linux Squid 代理服务器 架设
![提示](https://static.bdocx.com/images/bang_tan.gif)