配置文档Word文档格式.docx
《配置文档Word文档格式.docx》由会员分享,可在线阅读,更多相关《配置文档Word文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
Squid由一个主要的服务程序Squid,一个DNS查询程序dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。
当Squid启动以后,它可以派生出指定数目的dnsserver进程,而每一个dnsserver进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时间。
Squid的另一个优越性在于它使用访问控制清单(ACL)和访问权限清单(ARL)。
访问控制清单和访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。
、代理服务器软件squid功能详解
Squid是一个缓存internet数据的一个软件,它会接收用户的下载申请,并自动处理所下载的数据。
也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。
目前,Squid可以代理HTTP,FTP,GOPHER,SSL和WAIS协议,暂不能代理POP,NNTP等协议。
不过,已经有人开始修改Squid,相信不久的将来,Squid能够代理这些协议。
Squid能够缓存任何数据吗?
不是的。
象缓存信用卡帐号、可以远方执行的scripts、经常变换的主页等是不合适的也是不安全的。
Squid可以自动的进行处理,你也可以根据自己的需要设置Squid,使之过滤掉你不想要的东西。
Squid可用在很多操作系统中,如AIX,DigitalUnix,FreeBSD,HP-UX,Irix,Linux,NetBSD,Nextstep,SCO,Solaris,OS/2等,也有不少人在其他操作系统中重新编译过Squid。
Squid对硬件的要求是内存一定要大,不应小于128M,硬盘转速越快越好,最好使用服务器专用SCSI硬盘,处理器要求不高,400MH以上既可。
在网络上常见的代理服务器有三种:
1.标准的代理缓冲服务器
一个标准的代理缓冲服务被用于缓存静态的网页(例如:
html文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。
当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里获取请求数据而不再向原web站点请求数据。
这样就节省了宝贵的网络带宽,而且提高了访问速度。
但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的IP地址和端口号。
客户端上网时,每次都把请求送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。
如果在本地缓冲区有目标文件,则直接将文件传给用户即可。
如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给客户端浏览器。
2.透明代理缓冲服务器
透明代理缓冲服务和标准代理服务器的功能完全相同。
但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。
透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。
如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。
对于Linux操作系统来说,透明代理使用Iptables或者Ipchains实现。
因为不需要对浏览器作任何设置,所以,透明代理对于ISP(Internet服务器提供商)特别有用。
3.反向代理缓冲服务器
反向代理是和前两种代理完全不同的一种代理服务。
使用它可以降低原始WEB服务器的负载。
反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。
它位于本地WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。
如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。
如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发送给用户。
这种方式通过降低了向WEB服务器的请求数从而降低了WEB服务器的负载。
、squid代理服务器配置
Squid是一种源代码开放的高性能代理缓存服务器。
它可支持FTP,gopher和Http数据对象的代理。
另外,Squid也支持SSL,多样化访问控制和代理请求的完整日志功能。
通过轻量级的网际缓存协议,Squid以网状或层次的方式分配内存,这样能节省额外的带宽。
提供Http服务加速代理,Web服务器把Http数据推到Squid缓存中,外界的请求访问可以通过缓存提取所需数据,实现Web服务器的动态镜像。
通过Squid可以配置一个完善的代理服务提供方案。
下面为具体配置步骤:
一.基础准备
Squid下载地址:
http:
//www.squid-cache.org
版本:
squid-3.0.STABLE4-src.tar.gz
二.机器最低配置为:
256M内存,9G硬盘(其中4G分区专用缓存目录),
源代码安装
1.从http:
//www.squid-cache.org下载squid-3.0.STABLE8-src.tar.gz。
2.将该文件拷贝到/usr/local目录。
3.解开该文件tarxvzfsquid-3.0.STABLE8-src.tar.gz,在/usr/local目录下生成一个新的目录squid-3.0.STABLE8。
4.进入squid目录。
5.执行./configure,可以用./configure-prefix=/usr/local/squid指定安装目录。
系统默认安装目录为/usr/local/squid。
6.执行makeall。
7.执行makeinstall。
8.安装结束后,Squid的可执行文件在安装目录的bin子目录下,配置文件在etc子目录下。
编译安装Squid
squid软件包有两种:
一种是基于红旗Asianux系统所使用的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。
3.解开该文件tarxvzf
squid-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指定安装目录。
6.执行makeall。
7.执行makeinstall。
8.安装结束后,Squid的可执行文件在安装目录的bin子目录下,配置文件在etc子目录下。
配置squid
配置文件squid.conf
Squid有一个主要的配置文件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=平均每个对象的大小=20k
NO=平均每个二级子目录所存储的对象数目=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:
00squid
6574?
则表明Squid服务已经正常启动。
客户端的配置
将某台终端设置成内部地址,并将该终端的DNS服务器设置为代理服务器的DNS服务,在内部地址和标准地址之间作一个路由。
在浏览器里设置代理服务器地址为Squid代理服务器的地址,就可以通过代理服务器上网了。
一个实例
假设有这样的应用环境,网络中有一台拨号服务器为用户提供拨号接入服务,且运行有Squid实现的代理服务器,其IP地址为192.168.2.32。
拨号用户得到一个内部IP,地址范围为192.168.2.1-192.168.2.30。
1.配置squid.conf
http_port80
cache_mem32MB
cache_swap_low90
cache_swap_high95
maximum_object_size4096KB
cache_dir/var/spool/squid10016256
cache_access_log/var/log/squid/access.log
cache_log/var/log/squid/cache.log
cache_store_log/var/log/squid/store.log
cache_dns_program/usr/lib/squid/dnsserver
dns_nameservers192.168.2.32
unlinkd_program/usr/lib/squid/unlinkd
aclallsrc0.0.0.0/0.0.0.0
aclallow_ipsrc192.168.2.1/255.255.255.0
aclmanagerprotocache_object
acllocalhostsrc192.168.2.32/255.255.255.255
aclSSL_portsport443563
aclSafe_portsport8021443563702101025-65535
aclCONNECTmethodCONNECT
http_accessallowmanagerlocalhost
http_accessdenymanager
http_accessdeny!
Safe_ports
http_accessdenyCONNECT!
SSL_ports
http_accessallowlocalhost
http_accessallowallow_ip
cache_effective_usersquid
cache_effective_groupsquid
下面两个选项是用来定义squid加速模式的。
用virtual来指定为虚拟主机模式。
80端口为要加速的请求端口。
采用这种模式时,Squid就取消了缓存及ICP功能,假如需要这些功能,必须设置httpd_accel_with_proxy选项。
httpd_accel_hostvirtual
httpd_accel_port80
下面两个选项在透明代理模式下是必须设置成on的。
在该模式下,Squid既是web请求的加速器,又是缓存代理服务器。
httpd_accel_with_proxyon
httpd_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-jMASQ
2.用户认证设置
默认时,Squid本身不带任何认证程序,但是可以通过外部认证程序来实现用户认
证。
一般有以下的认证程序:
LDAP认证、SMB认证、基于mysql的认证、基于sock5的密码认证和基于Radius的认证。
下面介绍常用的
ncsa实现的认证,ncsa是Squid源代码包自带的认证程序之一,实现步骤如下:
*进入/usr/local/squid/auth_modules/NCSA目录,执行:
make
makeinstall
*编译成功后,会生成ncsa_auth的可执行文件,拷贝生成的可执行文件到/usr/bin目录下。
*修改squid.conf文件的相关选项。
aclauth_userproxy_authREQUIRED
http_accessallowauth_user
authenticate_program/usr/local/squid/bin/ncsa_auth
/usr/local/squid/etc/passwd
*利用Apache携带的工具软件htpasswd在/usr/locad/squid/etc下生成密码文件,并添加相应的用户信息。
该密码文件每行包含一个用户的信息,即用户名和密码。
例如,用htpasswd生成密码文件passwd并添加用户me:
htpasswd-c/usr/local/squid/etc/passwdme
*重新启动Squid,密码认证生效。
3.客户端的设置
在客户端浏览器的选项中将代理服务器的IP地址设为192.168.2.32,http端口为80。
若要设置透明代理,则客户端不需要在浏览器中指定代理服务器,而将网关设为192.168.2.32,并且客户端要配置好DNS。
现在,内部网的主机就可以通过代理访问Internet了。
结束语
Squid与Linux下其它的代理软件如Apache、Socks、TIS
FWTK和delegate相比,下载安装简单,配置简单灵活,支持缓存和多种协议。
用ipchains+Squid的解决方案,就可以获得通过缓存高性
能的同时能够无缝的访问Internet。
最后说明一点,squid不仅可用在Linux系统上,还可以用在AIX、Digital
Unix、FreeBSD、HP-UX、Irix、NetBSD、Nextstep、SCO和Solaris等系统上。