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. 下载该软