第10章代理服务器配置第10章代理服务器配置10.1代理服务器概述10.2Squid安装10.3Squid服务器的基本配置10.4Squid服务器的高级配置10.5配置代理客户端10.1代理服务器概述代理服务器简介代理服务器的英文是ProxyServer,是用户与网络信息的中转站,其功能就是代理网络用户去取得网络信息,让多台没有公有IP地址的客户端高速、安全地访问互联网资源。代理服务器的主要作用包括共享网络、访问代理、防止攻击、掩藏身份、突破限制、提高速度、起到防火墙的作用、方便对用户管理等。代理服务器简介1.共享网络共享上网是目前代理服务器最为广泛的用途之一。使用网络共享等代理服务器,可以很好地解决IP资源不足的问题。最为常见的就是使用一个公有IP地址满足整个局域网用户的上网需求。常见的代理服务器有Squid、Sygate、CCproxy等。2.访问代理通过代理访问不仅可以让用户访问暂时无法访问的网站,若巧妙利用,还可以有效地避免网络拥挤的情况。另外,直接读取服务器上的信息,还可以大大加快访问速度,节约网络资源。代理服务器简介3.防止攻击内部主机的访问是通过代理服务器完成的。在这个过程中,内部主机地址等信息不会发送到外部,隐藏了自己的真实地址信息,还可隐藏自己的IP地址。这样外部攻击者就无法通过扫描、刺探等方式对内部主机进行渗透,进而起到保护内部主机的作用。4.掩藏身份使用代理服务器的反向代理功能,可以隐藏内网用户的身份信息,是用户能安全地对外发布信息,从而保证内部网络的安全。代理服务器简介5.突破限制由于互联网上有许多开放的代理服务器,当客户在访问权限受到限制时,通过代理服务器访问目标网站就成为可能。国内的高校大多使用教育网,不能出国,但通过代理服务器,就能实现访问Internet。6.提高速度提高下载速度,突破下载限制。例如,有的网站提供的下载资源,做了一个IP地址一个下载线程的限制,这时候能用影音传送带,设置多线程,为每个线程设置一个代理。对于限制一个IP地址的情况非常好突破,只要用不同的代理服务器,就可同时下载多个资源,适用于从Web和FTP上下载的情况。代理服务器简介7.起到防火墙的作用由于所有使用代理服务器的用户都必须通过代理服务器访问远程站点,因此在代理服务器上就可以设置相应的限制,以过滤或屏蔽掉某些信息。这是局域网网管对局域网用户访问范围限制最常用的办法,也是局域网用户为什么不能浏览某些网站的原因。拨号用户如果使用代理服务器,同样必须服从代理服务器的访问限制,除非你不使用这个代理服务器。8.方便对用户管理通过代理服务器,管理员可以设置用户验证和记账功能,对用户进行记账,没有登记的用户无权通过代理服务器访问Internet;并对用户的访问时间、访问地点、信息流量进行统计。代理服务器的工作原理代理服务器是一种以HTTP协议为基础的服务软件,是建立在TCP/IP协议应用层上的。总的来说,代理服务器的工作流程分为4个部分:客户端向服务器发送的请求到达代理服务器,代理服务器把请求发给客户端真正需要联系的服务器,服务器向代理服务器返回响应,代理服务器把响应返给客户端。代理服务器的工作原理客户端A通过代理服务器访问互联网上的远程Web服务器的具体流程如下:(1)启动代理服务器,此时代理服务器的主进程将监听某个绑定的端口并初始化缓存。(2)客户端A向代理服务器发送访问请求。(3)代理服务器在收到请求后创建一个子进程以应对该请求。代理服务器的工作原理(4)代理服务器与客户端A建立连接,然后解析客户端发出的请求并按照预设的访问规则验证该请求。(5)子进程开始查询缓存,根据查询结果进行不同处理。处理一般分为两种情况:一种是,若缓存中有客户端A请求的信息,并且该信息没有过期,则将信息直接发送给客户端A;另外一种情况是,若缓存中有客户端A请求的信息,但该信息已经过期,则子进程代理客户端A向目标Web服务器发出请求。代理服务器的工作原理(6)目标Web服务器响应代理服务器子进程发来的请求,同时代理服务器子进程依据具体的缓存更新算法更新代理服务器缓存。(7)代理服务器子进程将目标Web服务器回应的信息转送给客户端A。子进程将目标Web服务器回应的信息转送给客户端A。(8)代理服务器子进程处理完客户端A的代理服务后,进程自动终止,所有相关资源全部释放。10.2Squid安装Squid简介对于Web用户来说,Squid是一个高性能的代理缓存服务器,可以加快内部网浏览Internet的速度,提高客户机的访问命中率。Squid不仅支持HTTP协议,还支持FTP、gopher、SSL和WAIS等协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。Squid将数据元缓存在内存中,同时也缓存DNS查寻的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。Squid支持SSL,支持访问控制。由于使用了ICP,Squid能够实现重叠的代理阵列,从而最大限度的节约带宽。Squid简介Squid由一个主要的服务程序Squid,一个DNS查询程序DNSServer,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid启动以后,它可以派生出指定数目的DNSServer进程,而每一个DNSServer进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时间。Squid的另一个优越性在于它使用访问控制清单(ACL)和访问权限清单(ARL)。访问控制清单和访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。Squid简介Squid代理服务器对于硬件的要求很高,因为架设代理服务器的目的就是希望能够加快网络的传输速度。Squid对硬件的具体要求如下。(1)CPU足够好;(2)RAM足够大,这是一个很重要的硬件参数;(3)HardDisk优先选择SCSI接口的,这样能保证速度与稳定度都比较好。Squid的安装1.rpm包的安装(1)查询是否安装了Squid服务。输入如下命令:#rpm–qsquid(2)将RedHatEnterpriseLinux5安装光盘放入光驱中,在shell提示符下输入命令挂载光驱,并进入光盘安装目录。#mount/dev/cdrom/mnt/cdrom#cd/mnt/cdrom/Server(3)在shell提示符下命令,安装软件包。执行rpm-ivhsquid-2.2.STABLE4-8.I386.rpm。Squid的安装2.源代码包的安装(1)从。(2)将该文件拷贝到/usr/local目录。(3)解开该文件tarxvzfsquid-2.2.STABLE4-src.tar.gz,在/usr/local目录下生成一个新的目录squid-2.2.STABLE4,为了方便使用mvsquid-2.2.STABLE4squid将目录更名为squid。(4)进入squid目录。Squid的安装(5)执行./configure,可以用./configure-prefix=/directory/you/want指定安装目录。系统默认安装目录为/usr/local/squid。(6)执行makeall。(7)执行makeinstall。(8)安装结束后,Squid的可执行文件在安装目录的bin子目录下,配置文件在etc子目录下。10.3Squid服务器的基本配置Squid服务配置文件1.目录结构Squid通常创建几个目录。它们一般如下:/usr/local/squid/bin/cache/etc/logs//src。/bin包括Squid本身的程序,以及其它程序如ftpget,它可以被Squid用来执行各种功能。/cache/目录是实际缓冲数据的存放区。/etc/包含squid.conf文件,它是唯一的Squid配置文件。/logs/目录可能会很大,特别是如果你包含同属时,它们会查询你每一次连接,这可以使你的log文件双倍增加。/src/一般包括你运行Squid版本的源文件。Squid服务配置文件2.基本配置所有的Squid配置集中到一个文件----squid.conf。这个配置允许所有的人访问缓冲区,并创建一个100M的缓冲区,使用8M的内存,保持最小型的logs,而且存储所有文件到默认区域,这一般指的是所有文件将以Squid用户,Squid组的名义存储到“/usr/local/squid/cache”中。所有客户请求将来自于3128端口,并且所有“内部缓冲(inter-cache)”流量将走UDP端口3130。Squid服务配置文件3.运行SquidSquid由一个脚本正常运行,这个脚本在它的进程死掉后重启Squid。这里有脚本的两种版本:/usr/local/squid/bin/RunCache和/usr/local/squid/bin/RunAccel。RunCache脚本一般在前台运行,所以启动Squid,输入以下内容:%/usr/local/squid/bin/RunCache&%然后用以下命令查看主Squidlog文件/usr/local/squid/logs/cache.log%more/usr/local/squid/logs/cache.logSquid服务常用设置1.设置监听的IP地址和端口squid.conf配置文件中的http_port参数设置便是为了告诉SquidServer在哪个IP地址的哪个端口侦听来自客户机的HTTP请求。该参数默认的配置是在本机的3128端口进行侦听。该参数的默认定义如下。http_port3128当将SquidServer作为Web服务器的加速器应用时,通常会将该参数设置为80。http_port80当需要Squid侦听多个端口时,可以通过附加一行http_port参数定义实现。Squid服务常用设置另外,我们也可以使用参数http_port来指明在哪个接口地址的端口上进行侦听。例如,当Squid作为防火墙运行时,它有两个网络接口:一个内部接口和一个外部接口。我们可能不想接收来自外部的HTTP请求,但需要接收来自内部的HTTP请求,为了使Squid仅仅侦听内部接口,达到前面阐述的规则约束,我们的实现方案如下:http_port192.168.1.100:3128Squid服务常用设置2.设置缓冲大小代理服务器的一个很重要的功能是缓冲和存储数据。在Squid服务器中,主要使用cache_mem、cache_dir、cache_swap_low和cache_swap_hig这四个参数来设置缓冲容量的大小。1)cache_mem参数cache_mem并非用于指定Squid进程开辟的内存缓存的最大值,它只是设定额外提供多少内存给Squid使用。这里的额外是指Squid会将最常用的一些缓存放到这块内存中。Squid服务常用设置2)cache_dir参数cache_dir告诉Squid以何种方式将Cache文件存储到磁盘的什么位置。参数cache_dir的定义格式如下:cache_dirschemedirectorysizeL1L2[options]参数cache-dir的很多功能体现在其子参数上,cache-dir常用的子参数描述如下:(1)scheme。Squid支持许多不同的存储机制。默认的是ufs。依赖于操作系统的不同,你可以选择不同的存储机制。在./configure时,你必须使用--enable-storeio=LIST选项来编译其他存储机制的附加代码Squid服务常用设置(2)directory。该参数是文件系统目录,S