当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 高效配置Linux代理服务器Squid介绍
Linux服务器 中的 高效配置Linux代理服务器Squid介绍
出处:互联网 整理: 软晨网(RuanChen.com) 发布: 2009-10-18 浏览: 128 ::
收藏到网摘:
n/a
作为一种免费的网络操作系统,Linux越来越受到广大网络爱好者的欢迎,目前Internet上运行的主机有相当一部分采用的就是Linux,而且中国已经把Linux作为政府上网的指定网络操作系统。种种迹象表明,Linux正在逐渐走向成熟。为了解决Internet发展迅速和IP地址资源紧张的矛盾,代理服务器的使用越来越广泛。Squid是一种在Linux系统下使用的比较优秀的代理服务器软件。代理服务代理服务是指由一台拥有标准IP地址的机器代替若干没有标准IP地址的机器和Internet上的其它主机打交道,提供代理服务的这台机器称为代理服务器。拥有内部地址的机器想连接到Internet上时,先把这个请求发给拥有标准IP地址的代理服务器,由代理服务器把这个请求通过它的标准IP地址发到请求的目的地址。然后目标地址的服务器把返回的结果发回给代理服务器,代理服务器再原封不动的把资料发给内部主机。若干拥有内部地址的机器就组成了内部网,代理服务器的作用就是沟通内部网和Internet,解决内部网访问Internet的问题。这种代理事不可逆的,Internet上的主机不能访问任何一台拥有内部地址的机器,这样又可以保障内部资料的安全性。代理软件的一个优点是它能够检验除了数据包之外的许多东西。Squid对数据包的有效载荷进行检验,也就是穿越防火墙的数据包中TCP(或者UDP)部分所占地份量。根据数据包报头(数据包中的IP部分)和数据包有效载荷(TCP部分)的信息,代理防火墙能够决定数据包将发往何处,数据包请求什么,以及根据数据包所必须提供的这些信息决定采取什么样的行动。对于Web用户来说,Squid是一个高性能的代理缓存服务器,可以加快内部网浏览Internet的速度,提高客户机的访问命中率。Squid不仅支持HTTP协议,还支持FTP、gopher、SSL和WAIS等协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。Squid将数据元缓存在内存中,同时也缓存DNS查寻的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。Squid支持SSL,支持访问控制。由于使用了ICP,Squid能够实现重叠的代理阵列,从而最大限度的节约带宽。Squid由一个主要的服务程序Squid,一个DNS查询程序dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid启动以后,它可以派生出指定数目的dnsserver进程,而每一个dnsserver进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时间。Squid的另一个优越性在于它使用访问控制清单(ACL)和访问权限清单(ARL)。访问控制清单和访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。编译安装Squidsquid软件包有两种:一种是RedHat所使用的rpm包,另一种是源代码包。rpm包的安装:1.进入/mnt/cdrom/RedHat/RPMS。2.执行rpm-ivhsquid-2.2.STABLE4-8.I386.rpm。源代码包的安装:1.从http://www.squid-cache.org下载squid-2.2.STABLE4-src.tar.gz。2.将该文件拷贝到/usr/local目录。3.解开该文件tarxvzfsquid-2.2.STABLE4-src.tar.gz,在/usr/local目录下生成一个新的目录squid-2.2.STABLE4,为了方便使用mvsquid-2.2.STABLE4squid将目录更名为squid。4.进入squid目录。5.执行./configure,可以用./configure-prefix=/directory/you/want指定安装目录。系统默认安装目录为/usr/local/squid。6.执行makeall。7.执行makeinstall。8.安装结束后,Squid的可执行文件在安装目录的bin子目录下,配置文件在etc子目录下。 配置squid配置文件squid.confSquid有一个主要的配置文件squid.conf,位于/etc/squid目录下,用户仅仅需要修改该配置文件即可。squid.conf配置文件分为13个部分,分别是:1.NETWORKOPTIONS(有关的网络选项)2.OPTIONSWHICHAFFECTTHENEIGHBORSELECTIONALGORITHM(作用于邻居选择算法的有关选项)3.OPTIONSWHICHAFFECTTHECACHESIZE(定义cache大小选项)4.LOGFILEPATHNAMESANDCACHEDIRECTORIES(定义日志文件的路径及cache的目录)5.OPTIONSFOREXTERNALSUPPORTPROGRAMS(外部支持程序选项)6.OPTIONSFOETUNINGTHECACHE(调整cache选项)7.TIMEOUTS(超时)8.ACCESSCONTROLS(访问控制)9.ADMINISTRATIVEPARAMETERS(管理参数)10.OPTIONSFORTHECACHEREGISTRATIONSERVICE(cache注册服务选项)11.HTTPD-ACCELERATOEOPTIONS(HTTPD加速选项)12.MISCELLANEOUS(杂项)13.DELAYPOOLPARAMETERS(延时池选项)虽然squid的配置文件很庞大,但是用户可以根据自己的实际情况修改相应的选项,并不需要配置所有的选项。下面介绍几个常用的选项。1.http_port定义squid监听HTTP客户连接请求的端口。缺省是3128,如果使用HTTPD加速模式则为80。可以指定多个端口,但是所有指定的端口都必须在一条命令行上。2.cache_mem指定squid可以使用的内存理想值,建议设为内存的1/3.3.cache_dirDirectory-NameMbytesLevel1Level2指定squid用来存储对象的交换空间的大小及其目录结构。可以用下面的公式来估算系统所需要的子目录数目。已知量:DS=可用交换空间总量(单位KB)/交换空间数目OS=平均每个对象的大小=20kNO=平均每个二级子目录所存储的对象数目=256 未知量:L1=一级子目录的数量L2=二级子目录的数量计算公式:L1xL2=DS/OS/NO注意这是个不定方程,可以有多个解。4.maximum_object_size大于该值得对象将不被存储。如果要提高访问速度,就降低该值;如果想最大限度的节约带宽,降低成本,就增加该值。5.dns_nameservers定义Squid进行域名解析时使用的域名服务器。6.acl定义访问控制列表。定义语法为:aclaclnameacltypestring...aclaclnameacltype"file"...7.http_access根据某个访问控制列表允许或禁止某一类用户访问。运行Squid配置并保存好squid.conf后,就可以启动、停止和重新启动Squid:/etc/rc.d/init.d/squidstart/etc/rc.d/init.d/squidstop/etc/rc.d/init.d/squidrestart可以通过ps命令查看Squid服务是否已经正常启动:ps-A|grepsquid如果出现以下信息:6573?00:00:00squid6574?00:00:00squid则表明Squid服务已经正常启动。客户端的配置将某台终端设置成内部地址,并将该终端的DNS服务器设置为代理服务器的DNS服务,在内部地址和标准地址之间作一个路由。在浏览器里设置代理服务器地址为Squid代理服务器的地址,就可以通过代理服务器上网了。一个实例假设有这样的应用环境,网络中有一台拨号服务器为用户提供拨号接入服务,且运行有Squid实现的代理服务器,其IP地址为192.168.2.32。拨号用户得到一个内部IP,地址范围为192.168.2.1-192.168.2.30。 1.配置squid.confhttp_port80cache_mem32MBcache_swap_low90cache_swap_high95maximum_object_size4096KBcache_dir/var/spool/squid10016256cache_access_log/var/log/squid/access.logcache_log/var/log/squid/cache.logcache_store_log/var/log/squid/store.logcache_dns_program/usr/lib/squid/dnsserverdns_nameservers192.168.2.32unlinkd_program/usr/lib/squid/unlinkdaclallsrc0.0.0.0/0.0.0.0aclallow_ipsrc192.168.2.1/255.255.255.0aclmanagerprotocache_objectacllocalhostsrc192.168.2.32/255.255.255.255aclSSL_portsport443563aclSafe_portsport8021443563702101025-65535aclCONNECTmethodCONNECThttp_accessallowmanagerlocalhosthttp_accessdenymanagerhttp_accessdeny!Safe_portshttp_accessdenyCONNECT!SSL_portshttp_accessallowlocalhosthttp_accessallowallow_ipcache_effective_usersquidcache_effective_groupsquid下面两个选项是用来定义squid加速模式的。用virtual来指定为虚拟主机模式。80端口为要加速的请求端口。采用这种模式时,Squid就取消了缓存及ICP功能,假如需要这些功能,必须设置httpd_accel_with_proxy选项。httpd_accel_hostvirtualhttpd_accel_port80 下面两个选项在透明代理模式下是必须设置成on的。在该模式下,Squid既是web请求的加速器,又是缓存代理服务器。httpd_accel_with_proxyonhttpd_accel_uses_host_headeron设置透明代理时,必须打开包转发功能,还要结合ipchains:echo1>/proc/sys/net/ipv4/ip_forward/sbin/ipchains-Ainput-jACCEPT-ilo/sbin/ipchains-Aforward-s192.168.2.1/24-d0/0-jMASQ2.用户认证设置默认时,Squid本身不带任何认证程序,但是可以通过外部认证程序来实现用户认证。一般有以下的认证程序:LDAP认证、SMB认证、基于mysql的认证、基于sock5的密码认证和基于Radius的认证。下面介绍常用的ncsa实现的认证,ncsa是Squid源代码包自带的认证程序之一,实现步骤如下:*进入/usr/local/squid/auth_modules/NCSA目录,执行: