代理服务器是防火墙技术中比较成熟的一种,利用代理服器可以解决互联网应用的多种隐患,具体介绍如下。
下面向读者简单介绍几种代理服务器的设计实现方式。
应用代理服务器可以在网络应用层提供授权检查及代理服务。当外部某台主机试图访问(如Telnet)受保护网时,它必须先在防火墙上经过身份认证。通过身份认证后,防火墙运行一个专门为Telnet设计的程序,把外部主机与内部主机连接。在这个过程中,防火墙可以限制用户访问的主机、访问的时间及访问的方式。同样,受保护网络内部用户访问外部网时也需先登录到防火墙上,通过验证后才可使用Telnet或FTP等有效命令。应用网关代理的优点是既可以隐藏内部IP地址,也可以给单个用户授权,即使攻击者盗用了一个合法的IP地址,他也通不过严格的身份认证。因此,网关比报文过滤具有更高的安全性。但是这种认证使得应用网关不透明,用户每次连接都要受到“盘问”,这给用户带来许多不便。而且这种代理技术需要为每个应用网关写专门的程序。
回路级代理服务器也称一般代理服务器,它适用于多个协议,但无法解释应用协议,需要通过其他方式来获得信息。所以,回路级代理服务器通常要求修改过的用户程序。其中,套接字服务器(SocketsServer)就是回路级代理服务器。套接字是一种网络应用层的国际标准。当受保护网络客户机需要与外部网交互信息时,在防火墙上的套接字服务器检查客户的UserID、IP源地址和IP目的地址,经过确认后,套服务器才与外部的段服务器建立连接。对用户来说,受保护网与外部网的信息交换是透明的,感觉不到防火墙的存在,那是因为网络用户不需要登录到防火墙上。但是客户端的应用软件必须支持“Socket sifide API”受保护网络用户访问公共网所使用的IP地址也都是防火墙的IP地址。
代管服务器技术换言之就是把不安全的服务,诸如FTP、Telnet等放到防火墙上,使它同时充当服务器,对外部的请求作出回答。与应用层代理实现相比,代管服务器技术不必为每种服务专门写程序。而且,受保护网内部用户想对外部网访问时,也需先登录到防火墙上,再向外提出请求,这样从外部网向内就只能看到防火墙,从而隐藏了内部地址,提高了安全性。
代理服务器防火墙还有很多种,这里就不再一一介绍了,有兴趣的用户可以参考其他有关代理服务器的资料。Proxy是代理、委任的意思。通常说的Proxy服务器就是代理服务器,在Fedora 6中自带的代理服务器软件就是Squid,一般来说我们也把Proxy Server称作Squid Server。
一般说来,代理服务器具有以下的功能。
随着Internet的迅猛发展,网络带宽变得越来越珍贵。所以为了提高访问速度,好多ISP都提供代理服务器,通过代理服务器的缓存功能来加快网络的访问速度。一般说来,大多数的代理服务器都支持HTTP缓存,但是,有的代理服务器也支持FTP缓存。在选择代理服务器时,对于大多数的组织,只需要HTTP缓存功能就足够了。
通常,缓存有主动缓存被动缓存之分。所谓被动缓存,指的是代理服务器只在客户端请求数据时才将服务器返回的数据进行缓存,如果数据过期了,又有客户端请求相同数据时,代理服务器又必须重新发起新的数据请求,在将响应数据传送给客户端时又进行新的缓存。所谓主动缓存,就是代理服务器不断地检查缓存中的数据,一旦有数据过期,则代理服务器主动发起新的数据请求来更新数据。这样,当有客户端请求该数据时就会大大缩短响应时间。还需要说明的是,对于数据中的认证信息,大多数的代理服务器都不会进行缓存。
IP地址是不可再生的宝贵资源,假如只有有限的IP地址,但是需要提供整个组织的Internet访问能力,那么,用户可以通过使用代理服务器来实现这一点。
这一点是很明显的,如果内部用户访问Internet都是通过代理服务器,那么,代理服务器就成为进入Internet的唯一通道;反过来说,代理服务器也是Internet访问内部网的唯一通道。如果用户没有做反向代理,则对于Internet上的主机来说,用户的整个内部网只有代理服务器是可见的,从而大大增强了网络的安全性。
Squid是一个缓存Internet数据的软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户想要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请的Web服务器并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。这样既可以分担Web服务器的负担,也可以提高浏览速度。
目前,Squid可以代理HTTP、FTP、GOPHER、SSL和WAIS协议,暂不能代理POP、NNTP等协议。不过,已经有人开始修改Squid,相信不久的将来,Squid能够代理这些协议。
Squid并不是能够缓存任何数据的。例如缓存信用卡账号、可以远程执行的Scripts、经常变换的主页等是不合适的也是不安全的。Squid可以自动地进行处理,用户也可以根据自己的需要设置Squid,使之过滤掉用户不想要的东西。
作为代理服务器,Squid还可以作为客户机与服务器之间的媒介,客户机不需要直接连接到服务器上,而是先连接到代理服务器上,再由代理服务器将请求转发到Web服务器。这样将Web服务器掩护在代理服务器的后面,就大大地提高了Web服务器的安全指数,能有效地防止了客户机对网络内部的入侵。
除了充当代理服务器外,Squid也可以是Internet缓存层次结构的一部分,来作为缓存服务器。当Internet资料从原来服务器取出并复制到靠近用户的缓存服务器时,就产生了Internet缓存,缓存服务器将上次被请求的资料保留,当用户再次请求缓存结构中的内容时,将直接从缓存服务器得到这些资料,而不需要从原服务器来获取。
Squid的缓存服务是通过Fedora 6系统的ICP端口提供的,除了ICP服务,也可允许SNMP(简单网络管理协议)服务。SNMP允许计算机得到在网络上的SNMP代理的统计和状态信息。
用户可以通过以下途径获取该软件:
· 从Squid的官方站点http://www.squid-cache.org下载该软件。
· 从用户自己手中的Fedora 6发行版本中获取该软件。
通常,Squid软件包有两种:一种是源代码,下载后需要自己重新编译(对于可执行文件,下载后只需解压就可以使用);另一种是就是Fedora 6所使用的rpm包。下面我们分别讲讲这两种软件包的安装方法。
这里以squid-2.6版为例。介绍一下Squid的安装。
进入目录后,执行下面的命令安装Squid程序包:
[root@localhost 2]# rpm -ivh squid-2.6.STABLE4-1.fc6.i386.rpm
Preparing... ########################################### [100%]
package squid-2.6.STABLE4-1.fc6 is already installed
从http://www.squid-cache.org下载squid-2.6.tar.gz。下载后,将该文件复制到/usr/local目录。然后在命令行中输入以下命令来进行安装:
[root@localhost /usr/local]#tar xvzf squid-2.6.tar.gz
解开后,系统将在/usr/local目录下生成一个新的目录squid-2.6,为了方便可用mv命令将该目录重命名为squid:
[root@localhost /usr/local]#mv squid-2.3.STABLE2 squid
[root@localhost /usr/local]#cd squid
然后执行./configure指定安装目录。系统默认安装目录为/usr/local/squid。
[root@localhost /usr/local/squid]#./confgure --prefix=/directory/xxx/xxxx
执行make all编译运行软件。
[root@localhost /usr/local/squid]#make install
安装结束后,squid的可执行文件在安装目录的bin子目录下,配置文件在etc子目录下。
要使用Squid服务器,首先要对其进行相应的配置。Squid的配置文件存放在/etc/squid目录下,用gedit打开并编辑即可。squid.conf配置文件可以分为13个部分,这13个部分分别是:
· network options(有关的网络选项)。
· options which affect the neighbor selection algorithm(作用于邻居选择算法的有关选项)。
· options which affect the cache size(定义cache大小的选项)。
· logfile pathnames and cache directories(定义日志文件的路径及cache的目录)。
· options for external support programs(外部支持程序选项)。
· options for tuning the cache(调整cache的选项)。
· timeouts(超时)。
· access controls(访问控制)。
· administrative parameters(管理参数)。
· options for the cache registration service(cache注册服务选项)。
· httpd-accelerator options(httpd加速选项)。
· miscellaneous(杂项)。
· delay pool parameters(延时池参数)。
虽然Squid的配置文件很庞大,但是如果用户只是为一个中小型网络提供代理服务,并且只准备使用一台服务器,那么,只需要修改配置文件中的几个选项。
http_port定义Squid监听HTTP客户连接请求的端口。默认是3128,如果使用HTTPD加速模式则为80。用户可以指定多个端口,但是所有指定的端口都必须在一条命令行上。
cache_mem(bytes)选项用于指定Squid可以使用的理想内存值。这部分内存被用来存储以下对象:
· In-Transit objects(传入的对象)。
· Hot Objects(热对象,即用户常访问的对象)。
· Negative-Cached objects(消极存储的对象)。
需要注意的是,这里并没有指明Squid所使用的内存一定不能超过该值,其实,该选项只定义了Squid所使用的内存的一个方面,Squid还在其他方面使用内存。所以Squid实际使用的内存可能超过该值。默认值为8MB。
cache_dir Directory-Name Mbytes Level-1 Level2指定Squid用来存储对象的交换空间的大小及其目录结构。可以用多个cache_dir命令来定义多个这样的交换空间,并且这些交换空间可以分布不同的磁盘分区。“directory”指明了该交换空间的顶级目录。如果用户想用整个磁盘来作为交换空间,那么可以将该目录作为装载点将整个磁盘mount上去。默认值为/var/spool/squid。
Mbytes定义了可用的空间总量。需要注意的是,Squid进程必须拥有对该目录的读写权力。Level-1是可以在该顶级目录下建立的第一级子目录的数目,默认值为16。同理,Level-2是可以建立的第二级子目录的数目,默认值为256。
建立这么多子目录的目的是因为如果子目录太少,则存储在一个子目录下的文件数目将大大增加。这也会导致系统寻找某一个文件的时间大大增加,从而使系统的整体性能急剧降低。所以,为了减少每个目录下的文件数量,我们必须增加所使用的目录的数量。如果仅仅使用一级子目录则顶级目录下的子目录数目太大了,所以使用两级子目录结构。
用户可以用下面的公式来估算,来确定系统所需要的子目录数目。
已知量:
DS = 可用交换空间总量(单位KB)/ 交换空间数目
OS = 平均每个对象的大小= 20k
NO = 平均每个二级子目录所存储的对象数目= 256
未知量:
L1 = 一级子目录的数量
L2 = 二级子目录的数量
计算公式:
L1 x L2 = DS / OS / NO
注意这是个不定方程,可以有多个解。
acl参数定义访问控制列表。定义语法为:
acl aclname acltype string1 ...
acl aclname acltype "file" ...
当使用文件时,该文件的格式为每行包含一个条目。
acltype可以是src、dst、srcdomain、dstdomain url_pattern urlpath_pattern、time、port、proto、method、browser和user中的一种。分别说明如下:
src 指明源地址。可以用以下的方法指定:
acl aclname src ip-address/netmask ... (客户ip地址)
acl aclname src addr1-addr2/netmask ... (地址范围)
dst指明目标地址。语法为:
acl aclname dst ip-address/netmask ...(即客户请求的服务器的ip地址)
srcdomain指明客户所属的域。语法为:
acl aclname srcdomain foo.com ... (squid将根据客户ip反向查询DNS)
dstdomain指明请求服务器所属的域。语法为:
acl aclname dstdomain foo.com ... (由客户请求的URL决定)
注意:如果用户使用服务器IP而非完整的域名时,Squid将进行反向的DNS解析来确定其完整域名,如果失败就记录为none。
time指明访问时间。语法如下:
acl aclname time [day-abbrevs] [h1:m1-h2:m2][hh:mm-hh:mm]
day-abbrevs参数有如下几个:
S - Sunday
M - Monday
T - Tuesday
W - Wednesday
H - Thursday
F - Friday
A - Saturday
h1:m1 必须小于h2:m2,表达为[hh:mm-hh:mm]。
port指定访问端口。可以指定多个端口,比如:
acl aclname port 80 70 21 ...
acl aclname port 0-1024 ... (指定一个端口范围)
proto指定使用协议。可以指定多个协议:
acl aclname proto HTTP FTP ...
method指定请求方法。比如:
acl aclname method GET POST ...
http_access命令的作用根据访问控制列表允许或禁止某一类用户访问。如果某个访问没有相符合的项目,则默认为应用最后一条项目的“非”。比如最后一条为允许,则默认就是禁止。所以,通常应该把最后的条目设为deny all或allow all来避免安全性隐患。
假设用户用Squid作代理服务器,该代理服务器配置为P4 2.4G/256M/80G,用户所用IP段为192.168.0.0/24,并且想用8080作为代理端口。则相应的Squid配置选项为:
(1)http_port。
http_port 8080
(2)cache_mem。
由于该服务器只提供代理服务,所以该值可以尽量设得大一些。
cache_mem 194M
(3)cache_dir Directory-Name Mbytes Level-1 Level2。
硬盘为80G的,在安装系统时应该做好规划,为不同的文件系统划分可用空间。在本例中,可以这样来划分:
/cache1 35G
/cache2 35G
/var 6G
swap 2G
并且,在安装时,我们尽量不安装不必要的软件包。这样在节约空间的同时可以提高系统的安全性和稳定性。下面再来计算所需的第一级和第二级子目录数。
已知量:
DS = 可用交换空间总量(单位KB)/交换空间数目=70G/2=35000000KB
OS = 平均每个对象的大小= 200K
NO = 平均每个二级子目录所存储的对象数目= 256
未知量:
L1 = 一级子目录的数量
L2 = 二级子目录的数量
计算公式:
L1×L2 = DS / OS / NO=35000000/200/256=684
我们取:
L1=16
L2=43
所以cache_dir语句为:
cache_dir /cache1 35000M 16 43
cache_dir /cache2 35000M 16 43
(4)acl。通过src来定义acl。
acl allow_ip src 192.168.0.0/255.255.255.0
http_access
http_access allow allow_ip
配置并保存好squid.conf后,可以用以下命令启动Squid。在命令行中输入:
/etc/rc.d/init.d/squid start
同样地,用户也可以用下列脚本停止运行Squid或重启动Squid。
/etc/rc.d/init.d/squid stop
/etc/rc.d/init.d/squid restart
用户也可以在图形界面下选择“系统”→“管理”→“服务器设置”→Service命令,进入“服务配置”对话框,在左边的列表中找到squid项,选择后,单击工具栏中的“开始”按钮,如图10-2所示。
图10-2 服务配置启动Squid
也可以通过ps命令查看squid服务是否已经正常启动,如:
ps –A |grep squid
如果出现如下信息:
15342 ? 00:00:00 squid
15343 ? 00:00:00 squid
则表明squid服务已经正常启动。
简单的配置已经可以实现代理服务器的基本功能,如果需要更多的功能,可以应用Squid的高级配置,Squid高级配置如下。
在Squid中有以下网络选项。
tcp_incoming_address
tcp_outgoing_address
udp_incoming_address
udp_outgoing_address
各项网络选项的作用如下:
· tcp_incoming_address监听来自客户或其他Squid代理服务器的绑定IP地址。
· tcp_outgoing_address向远程服务器或其他Squid代理发起连接的IP地址。
· udp_incoming_address为ICP套接字指定接收来自其他Squid代理服务器的包的IP地址。
· udp_outgoing_address为ICP套接字指定向其他Squid Server发送包的IP。
默认为没有绑定任何IP地址。该绑定地址可以用IP指定,也可以用完整的域名指定。
Squid使用大量的交换空间来存储对象。那么,过了一定的时间以后,该交换空间就会用完,所以还必须定期地按照某种指标来将低于某个水平线的对象清除。Squid使用所谓的“最近最少使用算法”(LRU)来做这一工作。当已使用的交换空间达到cache_swap_high时,Squid就根据LRU所计算的得到每个对象的值将低于某个水平线的对象清除。这种清除工作一直进行直到已用空间达到cache_swap_low。这两个值用百分比表示,如果用户所使用的交换空间很大的话,建议用户减少这两个值的差距,因为这时一个百分点就可能是几百兆空间,这势必影响Squid的性能。
cache_swap_low (percent, 0-100)
cache_swap_high (percent, 0-100)
默认值为:
cache_swap_low 90
cache_swap_high 95
还有一个选项是对交换空间进行设定的,这个选项是maximum_object_size。这个选项比较特殊。大于该值的对象将不被存储。如果用户想要提高访问速度,需要降低该值;如果用户想最大限度地节约带宽,降低成本,请增加该值。单位为KB,默认值为:
maximum_object_size 4096 KB
日志在任何服务器中都有非常重要的作用,它可以帮助管理员维护服务器,基本上所有服务器的行为,管理员都可以通过日志来查找到。
在Squid服务器中,相关的日志选项有下面几种。
(1)cache_access_log。
该选项指定客户请求记录日志的完整路径(包括文件的名称及所在的目录),该请求可以是来自一般用户的HTTP请求或来自邻居的ICP请求。默认值为:
cache_access_log /var/log/squid/access.log
如果用户不需要该日志,可以用以下语句取消:
cache_access_log none
(2)cache_store_log。
该选项指定对象存储记录日志的完整路径(包括文件的名称及所在目录)该记录表明哪些对象被写到交换空间,哪些对象被从交换空间清除。默认路径为:
cache_log /var/log/squid/cache.log
如果用户不需要该日志,可以用以下语句取消:
cache_store_log none
(3)cache_log。
该选项指定Squid一般信息日志的完整路径(包括文件的名称及所在的目录)。默认路径为:
cache_log /var/log/squid/cache.log
用户也可以自行选择路径,来保障服务器安全。
(4)cache_swap_log。
该选项指明每个交换空间的“swap.log”日志的完整路径(包括文件的名称及所在的目录)。该日志文件包含了存储在交换空间里的对象的元数据(metadata)。通常,系统将该文件自动保存在第一个“cache_dir”所定义的顶级目录里,但是用户也可以指定其他的路径。如果定义了多个“cache_dir”,则相应的日志文件可能是这样的:
cache_swap_log.00
cache_swap_log.01
cache_swap_log.02
后面的数字扩展名与指定的多个“cache_dir”一一对应。
提示:最好不要删除这类日志文件,否则Squid将不能正常工作。
(5)pid_filename。
该选项指定记录Squid进程号的日志的完整路径(包括文件的名称及所在的目录)。默认路径为:
pid_filename /var/run/squid.pid
如果用户不需要该文件,可以用以下语句取消:
pid_filename none
(6)debug_options。
该选项控制作日志时记录信息的多寡。可以从两个方面控制:section控制从几个方面作记录;level控制每个方面的记录的详细程度。推荐的方式(也是默认方式)是:
debug_options ALL,1
即对每个方面都作记录,但详细程度为1(最低)。
(7)log_fqdn on/off。
该选项控制在access.log中对用户地址的记录方式。打开该选项时,Squid记录客户的完整域名,取消该选项时,Squid记录客户的IP地址。如果打开该选项会增加系统的负担,因为Squid还得进行客户IP的DNS查询。默认值为:
log_fqdn off
配置好了日志选项,下面来介绍一下Squid日志系统的构成,Squid拥有完善的日志系统,但是对用户来说,以下的几个日志文件具有比较重要的意义。
(1)access.log。该文件主要包含了客户访问的相关信息,如客户机的IP地址、访问的站点、访问的流量大小等。一般的Squid日志分析程序主要是基于该文件的。
(2)cache.log。该文件包含着Squid服务进程的相关信息,如启动的状态,错误信息等。
(3)store.log。该文件包含缓存中存储对象的相关信息,如对象存储的时间、对象的大小、对象超期的时间等。
由于access.log文件是最重要的一个日志文件,好多Squid的日志分析程序都是围绕该文件编写的(如计费、流量分析、热门站点等),所以在这里我们就着重讲述一下该日志文件的格式。
access.log可以有两种基本的格式:一种是native日志文件格式;另外一种是common日志文件格式。common日志文件格式包含的信息要比native日志文件格式来得少,并且native日志文件包含着许多管理员感兴趣的信息。默认地,Squid采用native日志文件格式。如果要切换到common日志文件格式,可以更改emulate_httpd_log选项为on。native日志文件格式如下所示:
time elapsed remotehost code/status bytes method URL rfc931 peerstatus/peerhost type
(1)time:UNIX时间邮票,以毫秒计。
(2)elapsed:用户请求所花费的时间。
(3)remotehost:客户机的IP地址。
(4)code/status:code为客户请求的类型,status为HTTP的返回代码。
(5)bytes:客户请求数据的大小。
(6)method:客户请求的方法,如GET/POST。
(7)URL:客户请求的URL。
(8)rfc931:包含用户的认证信息,如果没有则用“-”表示。
(9)peerstatus/peerhost:包含peer的相关信息。
(10)type:包含对象的内容类型,如image/jpeg。
(1)ftp_user。
该选项设置登录匿名FTP服务器时提供的电子邮件地址,登录匿名FTP服务器时要求用用户的电子邮件地址作为登录口令(更多的信息请参看本书的相关章节)。需要注意的是,有的匿名FTP服务器对这一点要求很苛刻,有的甚至会检查用户的电子邮件的有效性。默认值为:
ftp_user Squid@
(2)ftp_list_width。
该选项设置FTP列表的宽度,如果设得太小将不能浏览到长文件名。默认值为:
ftp_list_width 32
(3)cache_dns_program。
该选项指定DNS查询程序的完整路径(包括文件的名称及所在的目录)。默认路径为:
cache_dns_program /usr/lib/squid/dnsserver
(4)dns_children。
改选项设置DNS查询程序的进程数。对于大型的登录服务器系统,建议该值至少为10。最大值可以是32,默认设置为5个。
提示:如果用户任意地降低该值,可能会使系统性能急剧降低,因为Squid主进程要等待域名查询的结果。没有必要减少该值,因为DNS查询进程并不会消耗太多的系统的资源。
(5)dns_nameservers。
该选项指定一个DNS服务器列表,强制Squid使用该列表中的DNS服务器而非使用/etc/resolv.conf文件中定义的DNS服务器。用户可以这样指定多个DNS服务器。
dns_nameservers 10.0.0.1 192.172.0.4
默认设置为:
dns_nameservers none
(6)unlinkd_program。
该选项指定文件删除进程的完整路径。默认设置为:
unlinkd_program /usr/lib/squid/unlinkd
(7)pinger_program。
指定ping进程的完整路径。该进程被Squid利用来测量与其他邻居的路由距离。该选项只在用户启用了该功能时有用。默认为:
pinger_program /usr/lib/squid/pinger
(8)authenticate_program。
该选项指定用来进行用户认证的外部程序的完整路径。默认设置为不认证。
(1)request_size(KB)。
提示:设置用户请求通信量的最大允许值(单位为KB)。如果用户用POST方法请求时,应该设一个较大的值。默认设置为:
request_size 100 KB
(2)reference_age。
Squid根据对象的LRU(最近最少使用算法)清除对象,Squid依据使用磁盘空间的总量动态地计算对象的LRU年龄。用reference_age定义对象的最大LRU年龄。如果一个对象在指定的reference_age内没有被访问,Squid将删除该对象。默认值为一个月。用户可以使用如下所示的时间表示方法:
1 week
3.5 days
4 months
2.2 hours
(3)quick_abort_min (KB)、quick_abort_max (KB)、quick_abort_pct (percent)。
上面三个选项控制Squid是否继续传输被用户中断的请求。当用户中断请求时,Squid将检测quick_abort 的值。如果剩余部分小于“quick_abort_min”指定的值,Squid将继续完成剩余部分的传输;如果剩余部分大于“quick_abort_max”指定的值,Squid将终止剩余部分的传输;如果已完成“quick_abort_pct”指定的百分比,Squid将继续完成剩余部分的传输。默认的设置为:
quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95
(1)negative_ttl time-units。
该选项设置消极存储对象的生存时间。所谓的消极存储对象,就是诸如“连接失败”和“404 Not Found”等一类错误信息,默认设置为:
negative_ttl 5 minutes
(2)positive_dns_ttl time-units。
该选项设置缓存成功的DNS查询结果的生存时间,默认为6小时。
positive_dns_ttl 6 hours
(3)negative_dns_ttl time-units。
该选项设置缓存失败的DNS查询结果的生存时间。默认为5分钟。
negative_dns_ttl 5 minutes
(4)connect_timeout time-units。
该选项设置Squid等待连接完成的超时值。默认值为2分钟。
connect_timeout 120 seconds
(5)read_timeout time-units。
该选项如果在指定的时间内Squid尚未从被请求的服务器读入任何数据,则Squid将终止该客户请求。默认值为15分钟。
read_timeout 15 minutes
(6)request_timeout。
该选项设置在建立与客户的连接后,Squid将花多长时间等待客户发出HTTP请求。默认值为30秒。
request_timeout 30 seconds
(7)client_lifetime time-units。
该选项设置客户在与Squid建立连接后,可以将该连接保持多长时间。因为客户建立的每个连接都会消耗一定的系统资源,所以如果用户是为一个大型网络提供代理服务,一定要正确地修改该值。因为如果同一时间的连接数量太大的话,可能会消耗大量的系统资源,从而导致服务器宕机。默认值为1天,该值太大了,建议根据用户自己的情况适当减小该值。
client_lifetime 1 day
(8)half_closed_clients on/off。
该选项有时候由于用户的不正常操作,可能会使与Squid的TCP连接处于半关闭状态,这时候,该TCP连接的发送端已经关闭,而接收端正常工作。默认地,Squid将一直保持这种处于半关闭状态的TCP连接,直到返回套接字的读写错误才将其关闭。如果将该值设为off,则一旦从客户端返回“no more data to read”的信息,Squid就立即关闭该连接。
half_closed_clients on
(9)pconn_timeout。
该选项设置Squid在与其他服务器和代理建立连接后,该连接闲置多长时间后被关闭。默认值为120s。
pconn_timeout 120 seconds
(10)ident_timeout。
该选项设置Squid等待用户认证请求的时间。默认值为10秒。
i dent_timeout 10 seconds
(11)shutdown_lifetime time-units。
该选项当收到SIGTERM或者SIGHUP信号后,Squid将进入一种shutdown pending的模式,等待所有活动的套接字关闭。在过了shutdown_lifetime所定义的时间后,所有活动的用户都将收到一个超时信息。默认值为30秒。
shutdown_lifetime 30 seconds
(1)cache_mgr。
该选项设置管理员邮件地址。默认为:
cache_mgr root
(2)cache_effective_user、cache_effective_group。
这两个选项的作用:如果用root启动Squid,Squid将变成这两条语句指定的用户和用户组。默认变为Squid用户和Squid用户组。注意这里指定的用户和用户组必须真是存在于/etc/passwd中。如果用非root账号启动Squid,则Squid将保持该用户及用户组运行,这时候,用户不能指定小于1024的http_port。
cache_effective_user squid
cache_effective_group squid
(3)visible_hostname。
该选项定义在返回给用户的出错信息中的主机名。如:
visible_hostname www-cache.foo.org
(4)unique_hostname。
如果用户有一个代理服务器阵列,并且为每个代理服务器指定了同样的“visible_
hostname”,同时用户必须为它们指定不同的“unique_hostname”来避免“forwarding loops”(传输循环)发生。
简单的代理服务器完成以后,就要对客户端进行相应的设置,这里介绍一下Windows系统下IE浏览器和Fedora 6系统下mozilla浏览器的设置。
(1)运行Microsoft Internet Explore后,选择“工具”→“Internet选项”选项,进入“Internet选项”对话框,在对话框中选择“连接”标签,进入“连接”选项卡,如图10-3所示。
(2)单击“局域网设置”按钮,打开“局域网设置”对话框,如图10-4所示。在“局域网设置”对话框中,用户选择“使用代理服务器”选项,然后在“地址”和“端口”文本框中填写上服务器的IP地址和端口。
在Firefox中设置代理同样简单,在“编辑”菜单中选择“首选项”命令,打开“首选项”对话框。在该对话框中选择“连接设置”按钮,打开“连接设置”对话框,如图10-5所示。单击“手动配置代理”单选按钮后,在下面的文本框中填写相应的IP地址与端口。
图10-3 Internet选项 图10-4 局域网设置
图10-5 Firefox浏览器的代理设置