08Linux代理服务器
更新时间:2023-06-01 19:32:01 阅读量: 实用文档 文档下载
- 08领驭自动挡什么变速箱推荐度:
- 相关推荐
Linux代理服务器
第8章Linux代理服务器
8.1 代理服务器概述
8.1.1 什么是代理服务器
在T CP/IP网络中,传统的We b通信过程是这样的:客户端向服务器请求数据,服务器响应该请求,将数据传送给客户端见图8 -1。
客户端向服务器发出请求
服务器传送数据给客户端
客户端Web服务器
图8-1 传统的We b通信过程
在引入了代理服务器以后,这一过程变成了这样:客户端向服务器发起请求,该请求被送到代理服务器;代理服务器分析该请求,先查看自己缓存中是否有请求数据,如果有,就直接传送给客户端,如果没有,就代替客户端向该服务器发出请求。服务器响应以后,代理服务器将响应的数据传送给客户端,同时在自己的缓存中保留一份该数据的拷贝(如图8 -2所示)。这样,再有客户端请求相同的数据时,代理服务器就可以直接将数据传送给客户端,而不需要再向该服务器发起请求。
客户端将请求送到代理服务器Proxy向Web服务器发出请求
Proxy将数据传给客户端如果代理缓存中有请求的数据,则直接传给客户端
Web服务器响应请求
客户端代理服务器Web服务器
图8-2 引入了代理服务器后的We b通信过程
8.1.2 代理服务器的功能
一般说来,代理服务器具有以下的功能:
Linux代理服务器
1. 通过缓存增加访问速度
随着I nternet的迅猛发展,网络带宽变得越来越珍贵。为了提高访问速度,好多I SP都提供代理服务器,通过代理服务器的缓存功能来加快网络的访问速度。一般说来,大多数的代理服务器都支持H TTP缓存,但是,有的代理服务器也支持F TP缓存。在选择代理服务器时,对于大多数的组织,只需要H TTP缓存功能就足够了。
通常,缓存有主动缓存,被动缓存之分。所谓被动缓存,指的是代理服务器只在客户端请求数据时才将服务器返回的数据进行缓存,如果数据过期了,又有客户端请求相同数据时,代理服务器又必须重新发起新的数据请求,在将响应数据传送给客户端时又进行新的缓存。所谓主动缓存,就是代理服务器不断地检查缓存中的数据,一旦有数据过期,则代理服务器主动发起新的数据请求来更新数据。这样,当有客户端请求该数据时,就会大大缩短响应时间。需要说明的是,对于数据中的认证信息,大多数的代理服务器都不会进行缓存。
2. 提供用私有I P访问I nternet的方法
I P地址是不可再生的宝贵资源,假如只有有限的I P地址,但是需要提供整个组织的I nternet访问能力,那么,可以通过使用代理服务器来实现这一点。
3. 提高网络的安全性
这一点是很明显的,如果内部用户访问I nternet都是通过代理服务器进行,那么,代理服务器就成为进入I nternet的唯一通道;反过来说,代理服务器也是I nternet访问内部网的唯一通道,如果你没有做反向代理,则对于I nternet上的主机来说,你的整个内部网只有代理服务器是可见的,从而大大增强了网络的安全性。8.1.3 代理服务器的分类及特点
通常的代理服务器分类方法,是从实现的机理分为线路层代理、应用层代理、智能线路层代理等等。在这里,从另外一个角度出发,把代理服务器分为传统代理服务器和透明代理服务器。
有必要好好搞清楚两者的区别,只有真正明白了内在的机理,才能在遇到问题时,有章可循,不会一头雾水,不知从何解决问题。因此,下面就通过具体的实例来说明。
我们的例子都基于以下假设(见图8 -3):
DDN
内部网
Internet
Client192.168.1.100
Proxyeth0:1.2.3.4eth1:192.168.1.1
图8-3 代理服务器示意图
你的域名为s a m p l e . c o m ,你的内部网( 1 9 2 . 1 6 8 . 1 . * )用户通过p r o x y. s a m p l e . c o m (外部接口e th0:1.2.3.4;内部接口e th1:192.168.1.1)的代理服务器访问I nternet,换句话说,该代理服务器是
Linux代理服务器
唯一一台直接与I nternet和内部网相连的机器。该代理服务器上运行着某种代理服务器软件(如s quid)。并假设内部网中某一客户机为c (192.168.1.100)。
1. 传统代理
在以上基础上我们做以下工作:
1) 代理服务软件被绑定到代理服务器的8 080端口。2) 客户端浏览器被配置使用代理服务器的8 080端口。3) 客户端不需要配置D NS。
4) 代理服务器上需要配置代理服务器。5) 客户端不需要配置默认路由。
当我们在客户端浏览器中打开一个w eb请求,比如“h ttp://www. ”时,将陆续发生以下事件:
1) 客户端使用某一端口(比如1 025)连接代理服务器8 080端口,请求w eb页面“h ttp://www.l ”。
2) 代理服务器向D NS请求“w ww. ”,得到相应的I P地址2 02.99.11 .120。然后,代理服务器使用某一端口(比如1 037)向该I P地址的8 0端口发起w eb连接请求,请求w eb页面。
3) 收到响应的w eb页面后,代理服务器把该数据传送给客户端。4) 客户端浏览器显示该页面。
从w ww. 的角度看来,连接是在1 .2.3.4地1 037端口和2 02.99.11 .120的8 0端口之间建立的。从c lient的角度看来,连接是在1 92.168.1.100的1 025端口和1 .2.3.4的8 080端口之间建立的。
2. 透明代理
透明代理的意思是客户端根本不需要知道有代理服务器的存在。在以上基础上我们做以下工作:
1) 配置透明代理服务器软件运行在代理服务器的8 080端口。2) 配置代理服务器将所有对8 0端口的连接重定向到8 080端口。3) 配置客户端浏览器直接连接到I nternet。4) 在客户端配置好D NS.
5) 配置客户端的默认网关为1 92.168.1.1.
当我们在客户端浏览器中打开一个w eb请求,比如“h ttp://www. ”时,将陆续发生以下事件:
1) 客户端向D NS请求“w ww. ”,得到相应的I P地址2 02.99.11 .120。然后,客户端使用某一端口(比如1 066)向该I P地址的8 0端口发起w eb连接请求,请求w eb页面。
2) 当该请求包通过透明代理服务器时,被重定向到代理服务器的绑定端口8 080。于是,透明代理服务器用某一端口(比如1 088)向2 02.99.11 .120的8 0端口发起w eb连接请求,请求w eb页面。
3) 收到响应的w eb页面后,代理服务器把该数据传送给客户端。4) 客户端浏览器显示该页面。
Linux代理服务器
从w ww. 的角度看来,连接是在1 .2.3.4地1 088端口和2 02.99.11 .120的8 0端口之间建立的。从c lient的角度看来,连接是在1 92.168.1.100的1 066端口和2 02.99.11 .120的8 0端口之间建立的。
以上就是传统代理服务器和透明代理服务器的区别所在。
8.2 各种代理服务器的比较
l inux下的代理服务器软件很多,但是被广泛应用的只有A pache、s ocks、s quid等几个实践证明是高性能的代理软件。下面我们分别来比较一下这几个软件。8.2.1 Apache
A pache是世界上用的最广泛的H TTP服务器,之所以用的最广泛,是因为它强大的功能、高效率、安全性和速度。从1 .1.x版本开始,A pache开始包含了一个代理模块。用A pache作代理服务器的性能优势并不明显,不建议使用。8.2.2 Socks
S ocks是一种网络代理协议,该协议可以让客户机通过S ocks服务器获得对I nternet的完全访问能力。S o c k s在服务器和客户端之间建立一个安全的代理数据通道,从客户的角度看来,S ocks是透明的;从服务器的角度看来,S ocks就是客户端。客户端不需要具有对I nternet的直接访问能力(也就是说,可以使用私有I P地址),因为S ocks服务器能够把来自于客户端的连接请求重定向到I nternet。此外,S ocks服务器可以对用户连接请求进行认证,允许合法用户建立代理连接。同理,S ocks也能防止非授权的I nternet用户访问内部网络。所以常常把S ocks当作防火墙来使用。
常见的浏览器如n etscape、I E等可以直接使用S ocks,也可以使用s ocsk5的所带的c lient来使那些不直接支持s ocks的i nternet软件使用S ocks。
更多的资料可以参考S ocks官方站点h ttp://www. 。8.2.3 TIS FWTK
TIS FWTK 是Trusted Information Systems(TIS)Firewall Tools Kit的简称,也称为F WTK。与其说是代理服务器,还不如称之为防火墙,因为它是应用网关式防火墙软件包的典型代表。
F WTK是用来建立和维护内部网络防火墙的工具集。其代码是用C语言编写的,可以运行在类U NIX的许多平台上,如l inux、SCO UNIX。F WTK包含了许多独立的组件,大部分的组件是代理应用程序,其支持的协议主要有以下几种:
Telnet、FTP、HTTP、X-windows
F WTK的突出优点是将很好的访问控制融入其设计中。例如,用户可以许可(或拒绝)从某网络或某个网络的一部分,甚至从某个地址上对被保护的网络进行访问。可以到T IS的w eb站点下载h ttp://www. ,但它有一些很麻烦的认证过程。
Linux代理服务器
8.2.4 delegate
d elegate是一个应用级网关,或者称之为代理服务器。d elegate主要具有以下的特性:具有灵活的访问控制功能。通过缓存降低网络带宽的利用率。通过重用和共享连接提高响应时间。d elegate是完全免费的。
支持多种操作系统,如U nix、Wi ndows95/98/NT/2K、O S/2。
支持多种协议:H TTP、F TP、N NTP、P OP、I MAP、S MTP、Te lnet、Wa is、X、L DAP、L PR、S ocks、I CP、S SL。
下面是d elegate官方网站(w ww. )提供的一份关于H TTP代理服务器的市场份额
的统计。他们的调查方法是通过程序记录访问其网站上某一个页面的客户端使用代理服务器的情况来进行统计的。虽然这种调查方法不太全面,但是所谓窥一斑而知全豹,从中我们也可以看出什么样的代理服务器是被用户广泛使用的。8.2.5 Squid
对于We b用户来说,S quid是一个高性能的代理缓存服务器,S quid支持F TD、g opher(电子版中可能有这行内容,但是被图片所遮住)和H TTP协议。和一般的代理缓存软件不同,S quid用一个单独的、非模块化的、I /O驱动的进程来处理所有的客户端请求。
S quid将数据元缓存在内存中,同时也缓存D NS查询的结果,除此之外,它还支持非模块化的D NS查询,对失败的请求进行消极缓存。S quid支持S SL,支持访问控制。由于使用了I CP(轻量I nternet缓存协议),S quid能够实现层叠的代理阵列,从而最大限度地节约带宽。
S quid由一个主要的服务程序s quid,一个D NS查询程序d nsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid启动以后,它可以派生出预先指定数目的dnsserver进程,而每一个dnsserver进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时间。8.2.6 选择
从上面的比较可以看出,A pache主要功能是w eb服务器,代理功能只不过是其一个模块而已,S ocks虽然强大,但有欠灵活,TIS FWTK不但下载太麻烦,安装配置也挺烦人。至于d elegate和s quid,d elegate支持的协议更多,并且也支持缓存,为什么我们还要选择s quid呢?笔者认为虽然d elegate支持的协议比较多,但事实上值得作缓存的协议不过有H TTP和F TP两种,只要我们用i pchains+squid的解决方案,就可以在获得通过缓存高性能的同时使用户能够无缝地访问I nternet。因此我们着重推荐使用S quid。下面我们就一起来学习S quid激动人心的特性及相关的安装与配置。
8.3 安装Squid Proxy Server
8.3.1 获取软件
可以通过以下途径获取该软件:1) 从S quid的官方站点h ttp://www. 下载该软
Linux代理服务器
件。2) 从l inux发行版本中获取该软件;
通常,S quid软件包有两种:一种是源代码(下载后需要自己重新编译),可执行文件(下载后只需解压就可以使用);另一种是R edHat所使用的r pm包。下面我们分别讲讲这两种软件包的安装方法。8.3.2 安装软件
我们以目前最新的稳定版本s quid-2.3.STA BLEX为例。1. rpm包的安装
1) 进入/ mnt/cdrom/RedHat/RPMS。
2) 执行rpm -ivh squid-2.2.STA BLE4-8.i386.rpm。当然,我们也可以在开始安装系统的过程中安装该软件。2. 源代码包的安装
1) 从h ttp://www. 下载s quid-2.3.STA BLE2-src.tar. gz。2) 将该文件拷贝到/ usr/local目录。
3) 解开该文件tar xvzf squid-2.3.STA BLE2-src.tar. gz。
4) 解开后,在/ usr/local生成一个新的目录s quid-2.3.STA BLE2,为了方便使用m v命令,将该目录重命名为s quid:
mv squid-2.3.STABLE2 squid;
5) 进入s quid。
cd squid
6) 执行. /configure,可以用./confgure --prefix=/directory/you/want指定安装目录。系统默认安装目录为/ usr/local/squid。
7) 执行make all。8) 执行make install。
9) 安装结束后,s quid的可执行文件在安装目录的b in子目录下,配置文件在e tc子目录下。
8.4 配置s quid基础篇—让代理服务器跑起来
由于R edHat各方面的优势(包括易用性,稳定性等等),全世界范围内使用该发行版的用户比较多,所以,我们下面的说明以R edHat6.1环境下s quid-2.2.STA BLE4-8版本为主。该版本的s quid要比其他版本稳定的多,以前的1 .1.22版本也比较稳定,但是在功能及灵活性方面有所欠缺。
s quid有一个主要的配置文件s quid.conf,在R edHat环境下所有s quid的配置文件位于/ etc/squid子目录下。
8.4.1 常用的配置选项
因为默认的配置文件有问题,所以我们必须首先修改该配置文件的有关内容,以便让s quid跑起来。
Linux代理服务器
下面我们来看一看s quid.conf文件的结构以及一些常用的选项。s quid.conf配置文件可以分为十三个部分,这十三个部分分别是:1) NETWORK OPTIONS (有关的网络选项)。
2) OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM (作用于邻居选择算法的有关选项)。
3) OPTIONS WHICH AFFECT THE CACHE SIZE (定义c ache大小的选项)。
4) LOGFILE PATHNAMES AND CACHE DIRECTORIES (定义日志文件的路径及c ache的目录)。
5) OPTIONS FOR EXTERNAL SUPPORT PROGRAMS (外部支持程序选项)。6) OPTIONS FOR TUNING THE CACHE (调整c ache的选项)。7) TIMEOUTS(超时)。
8) ACCESS CONTROLS (访问控制)。
9) ADMINISTRATIVE PARAMETERS (管理参数)。
10) OPTIONS FOR THE CACHE REGISTRATION SERVICE (c ache注册服务选项)。11) HTTPD-ACCELERATOR OPTIONS (H TTPD加速选项)。12) MISCELLANEOUS (杂项)。
13) DELAY POOL PARAMETERS (延时池参数)。
虽然s quid的配置文件很庞大,但是如果你只是为一个中小型网络提供代理服务,并且只准备使用一台服务器,那么,只需要修改配置文件中的几个选项。这些几个常用选项分别是:
1. http_port
定义s quid监听H TTP客户连接请求的端口。默认是3 128,如果使用H TTPD加速模式,则为8 0。可以指定多个端口,但是所有指定的端口都必须在一条命令行上。
2. cache_mem (bytes)
该选项用于指定s quid可以使用的内存的理想值。这部分内存被用来存储以下对象: In-Transit objects (传入的对象)。
Hot Objects (热对象,即用户常访问的对象)。 Negative-Cached objects (消极存储的对象)。
需要注意的是,这并没有指明s quid所使用的内存一定不能超过该值,其实,该选项只定义了s quid所使用的内存的一个方面,s quid还在其他方面使用内存。所以s quid实际使用的内存可能超过该值。默认值为8 MB。
3. cache_dir Directory-Name Mbytes Level-1 Level2
指定s quid用来存储对象的交换空间的大小及其目录结构。可以用多个c ache_dir命令来定义多个交换空间,并且这些交换空间可以分布在不同的磁盘分区。"directory "指明了该交换空间的顶级目录。如果想用整个磁盘来作为交换空间,那么可以将该目录作为装载点将整个磁盘挂装上去。默认值为/ var/spool/squid。M bytes定义了可用的空间总量。需要注意的是,s quid进程必须拥有对该目录的读写权力。L evel-1是可以在该顶级目录下建立的第一级子目录的数目,默认值为1 6。同理,L evel-2是可以建立的第二级子目录的数目,默认值为2 56。为什么要定义这么多
Linux代理服务器
子目录呢?因为如果子目录太少,则存储在一个子目录下的文件数目将大大增加,这会导致系统寻找某一个文件的时间大大增加,从而使系统的整体性能急剧降低。所以,为了减少每个目录下的文件数量,必须增加所使用的目录的数量。如果仅仅使用一级子目录,则顶级目录下的子目录数目太大了,所以使用两级子目录结构。
那么,怎么来确定系统所需要的子目录数目呢?可以用下面的公式来估算。已知量:
DS = 可用交换空间总量(单位K B)/ 交换空间数目OS = 平均每个对象的大小= 20k
NO = 平均每个二级子目录所存储的对象数目= 256未知量:
L1 = 一级子目录的数量L2 = 二级子目录的数量计算公式:
L1xL2 = DS / OS / NO
注意,这是个不定方程,可以有多个解。4. acl
定义访问控制列表。定义语法为:
acl aclname acltype string1 ...acl aclname acltype "file" ...
当使用文件时,该文件的格式为每行包含一个条目。
acltype 可以是src dst srcdomain dstdomain url_pattern urlpath_pattern time port proto methodbrowser 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 ... squid将根据客户ip反向查询DNS
dstdomain 指明请求服务器所属的域。语法为:
acl aclname dstdomain ... 由客户请求的URL决定
注意,如果用户使用服务器i p而非完整的域名时,s quid将进行反向的D NS解析来确定其完整域名,如果失败,就记录为“n one”。
time 指明访问时间。语法如下:
acl aclname time [day-abbrevs] [h1:m1-h2:m2][hh:mm-hh:mm]
day-abbrevs:
Linux代理服务器
S - SundayM - MondayT - TuesdayW - WednesdayH - ThursdayF - FridayA - Saturday
h 1:m1必须小于h 2: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 ...
5. http_access
根据访问控制列表允许或禁止某一类用户访问。
如果某个访问没有相符合的项目,则默认为应用最后一条项目的“非”。比如最后一条为允许,则默认就是禁止。通常应该把最后的条目设为"deny all" 或"allow all" 来避免安全性隐患。8.4.2 应用实例
假定:某公司用s quid作代理服务器,该代理服务器配置为P II450/256M/8.4G,公司所用i p段为1 .2.3.0/24,并且想用8 080作为代理端口。
则相应的s quid配置选项为:1. http_port
http_port 8080
2. cache_mem
思路:由于该服务器只提供代理服务,所以该值可以尽量设得大一些。
cache_mem 194M
3. cache_dir Directory-Name Mbytes Level-1 Level2
思路:硬盘为8 .4G的,在安装系统时应该做好规划,为不同的文件系统划分可用空间。在本例中,可以这样来划分:
/cache1 3.5G/cache2 3.5G/var 400Mswap 127M/ 剩余部分
在安装时,我们尽量不安装不必要的包。这样在节约空间的同时可以提高系统的安全性和稳定性。下面我们来计算所需的第一级和第二级子目录数。
Linux代理服务器
已知量:
DS = 可用交换空间总量(单位K B)/ 交换空间数目=7 G/2=3500000KBOS = 平均每个对象的大小= 20k
NO = 平均每个二级子目录所存储的对象数目= 256未知量:
L1 = 一级子目录的数量L2 = 二级子目录的数量计算公式:
L 1×L2 = DS / OS / NO=3 500000/20/256=684我们取L 1=16L 2=43
所以,我们的c ache_dir语句为:
cache_dir /cache1 3500M 16 43cache_dir /cache2 3500M 16 43
4. acl
思路:通过s rc来定义a cl.
acl allow_ip src 1.2.3.4/258.258.258.0
5. http_access
http_access allow allow_ip
8.4.3 启动、停止s quid
配置并保存好s quid.conf后,可以用以下命令启动s quid。
squid
或者,使用R edHat的启动脚本来启动s quid。
/etc/rc.d/init.d/squid start
同样,也可以用下列脚本停止运行s quid或重启动s quid。
/etc/rc.d/init.d/squid stop/etc/rc.d/init.d/squid restart
8.4.4 如何判断s quid已经正常启动
可以通过p s命令查看s quid服务是否已经正常启动,如:
ps -A |grep squid
如果出现如下信息:
15342 ? 00:00:00 squid15343 ? 00:00:00 squid
Linux代理服务器
则表明s quid服务已经正常启动。8.4.5 客户端的配置
接下来,我们来看看客户端浏览器的配置。N e t s c a p e的N a v i g a t o r和M i c r o s o f t的I n t e r n e tE xplore是两种最常见的浏览器,我们看看怎样在这两种浏览器中配置代理服务器。8.4.6 在Netscape Navigator中配置代理服务
1) 运行Netscape Navigator,单击“编辑”菜单中的“首选项”(见图8 -4);
图8-4 Netscape Navigator的欢迎光临对话框
2) 在弹出的“首选项”窗口中双击“高级”,再单击“代理”,然后选中“手工配置代理”,单击“察看”(见图8 -5);
图8-5 首选项对话框
3) 在弹出的“手工配置代理”对话框(见图8 -6)中填写相应的代理服务器的i p地址和服务端口,然后单击“确定”。
Linux代理服务器
图8-6
手工配置代理对话框
8.4.7 在
Microsoft Internet Explore5中配置代理服务器
1)
运行Microsoft Internet Explore5,单击“工具”菜单中的“I nternet选项”(见图8 -7);2) 在弹出的“I nternet选项”中单击“连接”,再单击下面的“局域网设置”(见图8 -8);
图8-7 Internet Explore 5对话框
图8-8 Internet选项对话框
Linux代理服务器
3) 在弹出的“局域网设置”窗体中选中“使用代理服务器”并单击“高级”(见图8 -9);4) 在弹出的“代理服务器设置”对话框中(见图8 -10)填入相应的代理服务器的i p地址和服务端口,然后单击“确定”。
图8-9 局域网设置对话框
图8-10 代理服务器设置
8.5 根据需求配置s quid—进阶篇
8.5.1 其他配置选项
在进行s quid的一些高级应用之前,有必要对其他有用的配置选项作一个全面的了解。下面我们分类来讲一讲这些选项,用于某些特殊应用的选项将在适当的地方讲述。
1. 网络选项
tcp_incoming_address
Linux代理服务器
tcp_outgoing_addressudp_incoming_addressudp_outgoing_address
t cp_incoming_address监听来自客户或其他s quid代理服务器的绑定i p地址。t cp_outgoing_address向远程服务器或其他s quid代理发起连接的i p地址。
u dp_incoming_address为I CP套接字指定接收来自其他s quid代理服务器的包的i p地址。u dp_outgoing_address为I CP套接字指定向其他squid server发送包的i p。
默认为没有绑定任何i p地址。该绑定地址可以用i p指定,也可以用完整的域名指定。2. 交换空间设定选项
cache_swap_low
cache_swap_high
(percent, 0-100)(percent, 0-100)
s quid使用大量的交换空间来存储对象。过了一定的时间以后,该交换空间就会用完,所以还必须定期的按照某种指标来将低于某个水平线的对象清除。s quid使用所谓的“最近最少使用算法”(L RU)来做这一工作。当已使用的交换空间达到c ache_swap_high时,s quid就根据L RU所计算的得到每个对象的值,将低于某个水平线的对象清除。这种清除工作一进行到已用空间达到c ache_swap_low。这两个值用百分比表示,如果所使用的交换空间很大的话,建议减少这两个值得差距,因为这时一个百分点就可能是几百兆空间,这势必影响s quid的性能。默认为:
cache_swap_low 90
cache_swap_high 95
maximum_object_size 大于该值的对象将不被存储。如果想要提高访问速度,就请降低该值;如果想最大限度地节约带宽,降低成本,请增加该值。单位为K,默认值为:
maximum_object_size 4096 KB
3. 有关日志的选项(1) cache_access_log
指定客户请求记录日志的完整路径(包括文件的名称及所在的目录),该请求可以是来自一般用户的H TTP请求或来自邻居的I CP请求。默认值为:
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
指定s quid一般信息日志的完整路径(包括文件的名称及所在的目录)。默认路径为:
Linux代理服务器
cache_log /var/log/squid/cache.log
(4) cache_swap_log
该选项指明每个交换空间的s wap.log日志的完整路径(包括文件的名称及所在的目录)。该日志文件包含了存储在交换空间里的对象的元数据(m etadata)。通常,系统将该文件自动保存在第一个c a c h e _ d i r说定义的顶级目录里,但是也可以指定其他的路径。如果定义了多个c ache_dir,则相应的日志文件可能是这样的:
cache_swap_log.00cache_swap_log.01cache_swap_log.02
后面的数字扩展名与指定的多个c ache_dir一一对应。需要注意的是,最好不要删除这类日志文件,否则s quid将不能正常工作。
(5) pid_filename
指定记录s quid进程号的日志的完整路径(包括文件的名称及所在的目录)。默认路径为
pid_filename /var/run/squid.pid
如果不需要该文件,可以用以下语句取消:
pid_filename none
(6) debug_options
控制作日志时记录信息的多寡。可以从两个方面控制:s e c t i o n控制从几个方面作记录;l evel控制每个方面的记录的详细程度。推荐的方式(也是默认方式)是:
debug_options ALL,1
即,对每个方面都作记录,但详细程度为1 (最低)。(7) log_fqdn
o n|off
控制在access.log 中对用户地址的记录方式。打开该选项时,s quid记录客户的完整域名,取消该选项时,s q u i d记录客户的i p地址。注意,如果打开该选项,会增加系统的负担,因为s quid还得进行客户i p的D NS查询。默认值为:log_fqdn off。
4. 有关外部支持程序的选项(1) ftp_user
设置登录匿名f tp服务器时提供的电子邮件地址,登录匿名f tp服务器时要求用电子邮件地址作为登录口令(更多的信息请参看本书的相关章节)。需要注意的是,有的匿名f tp服务器对这一点要求很苛刻,有的甚至会检查电子邮件的有效性。默认值为:ftp_user Squid@
(2) ftp_list_width
设置f tp列表的宽度,如果设得太小,将不能浏览到长文件名。默认值为:ftp_list_width 32(3) cache_dns_program
指定D NS查询程序的完整路径(包括文件的名称及所在的目录)。默认路径为:
cache_dns_program /usr/lib/squid/dnsserver
(4) dns_children
设置D NS查询程序的进程数。对于大型的登录服务器系统,建议该值至少为1 0。最大值可
Linux代理服务器
以是3 2,默认设置为5个。注意,如果任意地降低该值,可能会使系统性能急剧降低,因为s quid主进程要等待域名查询的结果。没有必要减少该值,因为D NS查询进程并不会消耗太多的系统的资源。
(5) dns_nameservers
指定一个D NS服务器列表,强制s quid使用该列表中的D NS服务器而非使用/ etc/resolv. conf文件中定义的D NS服务器。可以这样指定多个D NS服务器: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
指定p ing进程的完整路径。该进程被s quid利用来测量与其他邻居的路由距离。该选项只在启用了该功能时有用。默认为:
pinger_program /usr/lib/squid/pinger
(8) authenticate_program
指定用来进行用户认证的外部程序的完整路径。s quid的用户认证功能将在后面讲述。默认设置为不认证。
8. 用户访问控制选项(1) request_size (KB)
设置用户请求通信量的最大允许值(单位为K B)。如果用户用P OST方法请求时,应该设一个较大的值。默认设置为:
request_size 100 KB
(2) reference_age
s quid根据对象的L RU(最近最少使用算法)来清除对象,s quid依据使用磁盘空间的总量动态地计算对象的L RU年龄。我们用r eference_age定义对象的最大L RU年龄。如果一个对象在指定的r eference_age内没有被访问,s quid将删除该对象。默认值为一个月。可以使用如下所示的时间表示方法。
1 week3.5 days4 months2.2 hours
(3) quick_abort_min( KB)
quick_abort_maxquick_abort_pct
(KB)
(percent)
控制s quid是否继续传输被用户中断的请求。当用户中断请求时,s quid将检测quick_abort 的值。如果剩余部分小于q uick_abort_min指定的值,squid 将继续完成剩余部分的传输;如果剩余部分大于q u i c k _ a b o r t _ m a x指定的值,squid 将终止剩余部分的传输;如果已完成
Linux代理服务器
“q uick_abort_pct"指定的百分比,s quid将继续完成剩余部分的传输。默认的设置为:
quick_abort_min 16 KBquick_abort_max 16 KBquick_abort_pct 95
6. 各类超时设置选项(1) negative_ttl time-units
设置消极存储对象的生存时间。所谓的消极存储对象,就是诸如“连接失败”及F ound等一类错误信息。默认设置为:negative_ttl 5 minutes。
(2) positive_dns_ttlt ime-units
设置缓存成功的D NS查询结果的生存时间。默认为6小时。
positive_dns_ttl 6 hours
404 Not
(3) negative_dns_ttlt ime-units
设置缓存失败的D NS查询结果的生存时间。默认为5 min。
negative_dns_ttl 5 minutes
(4) connect_timeout time-units
说明:设置s quid等待连接完成的超时值。默认值为2 min。
connect_timeout 120 seconds
(5) read_timeout time-units
如果在指定的时间内s quid尚未从被请求的服务器读入任何数据,则s quid将终止该客户请求。默认值为1 5min。
read_timeout 15 minutes
(6) request_timeout
设置在建立与客户的连接后,s quid将花多长时间等待客户发出H TTP请求。默认值为3 0s。
request_timeout 30 seconds
(7) client_lifetime time-units
设置客户在与s quid建立连接后,可以将该连接保持多长时间。
注意,因为客户建立的每个连接都会消耗一定的系统资源,所以如果是为一个大型网络提供代理服务的话,一定要正确地修改该值。因为如果同一时间的连接数量太大的话,可能会消耗大量的系统资源,从而导致服务器宕机。默认值为1天,该值太大了,建议根据自己的情况适当减小该值。
client_lifetime 1 day
(8) half_closed_clients on/off
有时候由于用户的不正常操作,可能会使与s quid的T CP连接处于半关闭状态,这时候,该T CP连接的发送端已经关闭,而接收端正常工作。默认时,s quid将一直保持这种处于半关闭状态的T CP连接,直到返回套接字的读写错误才将其关闭。如果将该值设为o ff,则一旦从客户端返回“no more data to read”的信息,s quid就立即关闭该连接。half_closed_clients on
Linux代理服务器
(9) pconn_timeout
设置s quid在与其他服务器和代理建立连接后,该连接闲置多长时间后被关闭。默认值为1 20秒。
pconn_timeout 120 seconds
(10) ident_timeout
设置s quid等待用户认证请求的时间。默认值为1 0s。
i dent_timeout 10 seconds
( 11) shutdown_lifetime time-units
当收到SIGTERM 或者SIGHUP 信号后, squid将进入一种shutdown pending的模式,等待所有活动的套接字关闭。在过了s hutdown_lifetime所定义的时间后,所有活动的用户都将收到一个超时信息。默认值为3 0s。
shutdown_lifetime 30 seconds
7. 管理参数选项(1) cache_mgr
设置管理员邮件地址。默认为:
cache_mgr root
(2) cache_eff ective_user
cache_effective_group
如果用r oot启动s quid,s quid将变成这两条语句指定的用户和用户组。默认变为s quid用户和s quid用户组。注意这里指定的用户和用户组必须真是存在于/ etc/passwd中。如果用非r oot账号启动s quid,则s quid将保持该用户及用户组运行,这时候,不能指定小于1 024的h ttp_port。
cache_effective_user squidcache_effective_group squid
(3) visible_hostname
定义在返回给用户的出错信息中的主机名。如: visible_hostname (4) unique_hostname
如果你有一个代理服务器阵列,并且为每个代理服务器指定了同样的“v isible_hostname",则你必须同时为它们指定不同的“u nique_hostname”来避免“forwarding loops”(传输循环)发生。
8. 其他杂项(1) dns_testnames
设置进行D NS查询测试,如果第一个站点解析成功,则立即结束D NS查询测试。如果不愿意进行D NS查询测试,就不要去掉默认的设置。
#dns_testnames
(2) logfile_rotate
Linux代理服务器
通常,s quid会定期的将日志文件更名并打包。比如正在使用的日志文件为a ccess.log,squid会将其更名并打包为a c c e s s . l o g . 1 . g z;过了一定时间后,s q u i d又会将a c c e s s . l o g . 1 . g z更名为a ccess.log.2.gz并将当前的日志文件更名并打包为a ccess.log.1.gz,以此循环。l ogfile_rotate指定的数字即为打包并备份的文件的数量,当达到这一数目时,s quid将删除最老的备份文件。默认值为1 0。如果想手动来进行这些操作,可以用logfile_rotate 0来取消自动操作。
(3) err_html_text
用该语句定义一个字符串变量,可以用%L在返回给用户的错误信息文件中引用。错误信息文件通常在/ etc/squid/errors目录中,这是一些用H TML写成的脚本文件,可以自己修改它。
(4) deny_info
可以定制自定义的拒绝访问信息文件,和不同的用户列表相关联。当用户被h ttp_access相关规则拒绝时,s quid可以向用户显示你自定义的相应的拒绝访问信息文件。语法为:
Usage: deny_info err_page_name acl
比如:
deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys
(5) memory_pools on|off
如果将该项设为o n,则s quid将保留所有已经分配(但是未使用)的内存池以便在将来使用。默认为o n.
memory_pools on
(6) log_icp_queries on|off
设置是否对I CP请求作日志。如果系统负载很大,可以用o ff来取消该功能。默认为:
log_icp_queries on
(7) always_direct
该选项允许指定某些用户类,s quid将这些用户类的请求直接转发给被请求的服务器。语法为:
always_direct allow|deny [!]aclname ...
如:直接转发F TP请求可以这样设置:
acl FTP proto FTPalways_direct allow FTP
(8) never_direct
与a lways_direct相反。语法为:
Usage: never_direct allow|deny [!]aclname ...
比如,为了强制除了本地域的其他用户使用代理服务器,可以这样设置:
acl local-servers dstdomain acl all src 0.0.0.0/0.0.0.0never_direct deny local-serversnever_direct allow all
Linux代理服务器
(9) icon_directory
指明向用户传送错误信息时所用到的图标文件的目录。默认路径为:
icon_directory /usr/lib/squid/icons
(10) error_directory
向用户传送错误信息所用到的错误描述文件的目录。默认路径为:
error_directory /etc/squid/errors
8.5.2 用户认证设置
默认时,s quid本身不带任何认证程序,但是我们可以通过外部认证程序来实现用户认证。一般说来有以下的认证程序:
LDAP认证:可以访问以下资源来获取更多的有用信息。
/ResearchTriangle/Thinktank/5292/projects/ldap/http://home.iae.nl/users/devet/squid/proxy_auth/contrib/ldap_auth.tar.gz
SMB认证:可以实现基于N T和s amba的用户认证。更多的信息请访问以下资源。
http://www.hacom.nl/~richard/software/smb_auth.html
基于m ysql的用户认证。
http://home.iae.nl/users/devet/squid/proxy_auth/contrib/mysql_auth.c
基于s ock5密码用户认证。
/
基于Radius 的用户认证。
http://home.iae.nl/users/devet/squid/proxy_auth/contrib/auth.pl
但是我们一般常用的是用n csa实现的认证和用s mb_auth实现的基于N T和s amba的用户认证。下面我们就来讲这两种认证方法的具体实现。
1. ncsa用户认证的实现
n csa是s quid源代码包自带的认证程序之一,下面我们以s quid-2.3.STA BLE2版本为例讲述n csa的安装和配置。
1) 从w ww. 下载s quid源代码包s quid-2.3.STA BLE2-src.tar. gz并放到/ tmp目录下。
2) 用t ar解开:
tar xvzf squid-2.3.STABLE2-src.tar.gz %make
%make install
3) 然后,进入/ tmp/squid-2.3.STA BLE2/auth_modules/NCSA目录。
% make
% make install
编译成功后,会生成n csa_auth的可执行文件。4) 拷贝生成的执行文件n csa_auth到/ usr/bin目录
Linux代理服务器
cp ncsa_auth /usr/bin/bin
5) 修改s quid.conf中的相关选项如下所示:
authenticate_program /usr/local/squid/bin/ncsa_auth /usr/bin/passwd
6) 定义相关的用户类
acl auth_user proxy_auth REQUIRED
注意,R EQUIRED关键字指明了接收所有合法用户的访问。7) 设置h ttp_access
http_access allow auth_user
注意,如果你在该行中指定了多个允许访问的用户类的话,应该把要认证的用户类放在第一个。如下所示:
错误的配置:http_access allow auth_user all manager正确的配置:http_access allow auth_user manager all
8) 利用a pache携带的工具软件h tpasswd在/ usr/local/squid/etc下生成密码文件并添加相应的用户信息。一般说来,该密码文件每行包含一个用户的用户信息,即用户名和密码。用h tpasswd生成密码文件p asswd并添加用户b ye。
htpasswd -c /usr/local/squid/etc/passwd bye
然后重新启动s quid,密码认证已经生效。2. smb用户认证的实现
目前介绍并使用n csa实现用户认证的文章不多,而使用s mb_auth和s amba实现基于N T的用户认证也很少,下面我们就来看一看在s quid中实现基于N T的用户认证。
当前s mb_auth的最高版本是s mb_auth-0.05,可以在以下地址下载。当然,s quid的源代码包中也包含s mb_auth,但是是0 .02版的。
http://www.hacom.nl/~richard/software/smb_auth-0.08.tar.gz
s mb_auth的主页地址是: http://www.hacom.nl/~richard/software/smb_auth.html。1) 系统需求:s quid2.0以上版本。
安装s amba2.0.4以上版本。你并不需要运行s amba服务,因为s mb_auth只用到了s amba的客户端软件。
2) 下载s mb_auth-0.08.tar. gz并复制到/ tmp。3) tar xvzf smb_auth-0.08.tar. gz。
4) 根据要求修改M akefile中的S AMBAPREFIX和I NSTA LLBIN参数。S AMBAPREFIX指定了s amba安装路径,I NSTA LLBIN指明了s mb_auth的安装路径。我们指定:
SAMBAPREFIX=/usr,INSTALLBIN=/usr/bin.
5) make。
6) make install,成功后会在I NSTA LLBIN指定路径中生成可执行文件s mb_auth.。7) 按下列步骤设置你要用于认证的主域控制器:
首先在N ETLOG共享目录中建立一个“p roxy”文件,该文件只包含一个“a llow"的字符串,
正在阅读:
08Linux代理服务器06-01
疲倦的爸爸,是怎样在看电视时慢慢睡着的作文400字06-26
输电线路仿真的报告1110-12
我心爱的一件物品作文600字07-14
论 公 共 管 理 者 应 具 备 的 素 质-毕业论文10-12
密封式电炉项目可行性研究报告编写格式及参考(模板word)01-26
午后02-14
面向对象A面向对象习题(南航皮德常)05-07
济南人力资源机构哪家好06-21
盐城卫院影技题库样式10-30
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 08Linux
- 服务器
- 代理
- 动物微生物学复习资料
- 2014年河北美术学院书法学专业专接本试题
- 合并同类项练习题
- 全国电力设计院排名
- 暑假家教实践心得体会范文(精品版)
- 世界高科技纤维正形成三足鼎立之势_一_.TextMark
- 苏教版四年级下册单词词组句子汇总
- 黑龙江省龙东地区2011-2012学年高一下学期高中教学联合体期末考试数学试题
- 16春地大《工程地质》在线作业一
- 2005-2010天津市高考生物真题分类透析
- 含气量测定仪校验方法
- 小儿肱骨髁上骨折的手法复位的临床研究
- 2020-2021学年人教部编版八年级下册语文第二单元测试卷及答案
- 诗词鉴赏中景物形象的意境术语及例子
- 非谓语动词翻译练习
- Unit 9 Have you ever been to an amusement park 单元测试及答案
- 《思修与法基》在线试题
- 用友软件861管理驾驶舱串讲
- 2013年砼大管桩市场分析报告
- 新会计准则下公允价值计量盈余管理手段探析