一、代理服务器概述
1.1哪些是代理服务器
在TCP/IP网路中,传统的通讯过程是这样的:顾客端向服务器恳求数据,服务器响应该恳求,将数据传送给顾客端。在引入了代理服务器之后,这一过程弄成了这样:顾客端向服务器发起恳求,该恳求被送到代理服务器;代理服务器剖析该恳求,先查看自己缓存中是否有恳求数据,假如有就直接传献给顾客端,假如没有就取代顾客端向该服务器发出恳求。服务器响应之后,代理服务器将响应的数据传送给顾客端,同时在自己的缓存中保留一份该数据的拷贝。这样,再有顾客端恳求相同的数据时,代理服务器就可以直接将数据传送给顾客端,而不须要再向该服务器发起恳求。
1.2代理服务器的功能
通常说来,代理服务器具有以下的功能:
1.通过缓存降低访问速率
随着Internet的迅猛发展,网路带宽显得越来越珍稀。所以为了提升访问速率,很多ISP都提供代理服务器,通过代理服务器的缓存功能来推动网路的访问速率。通常说来linux makefile,大多数的代理服务器都支持HTTP缓存,并且,有的代理服务器也支持FTP缓存。在选择代理服务器时,对于大多数的组织,只须要HTTP缓存功能就足够了。
一般,缓存有主动缓存被动缓存之分。所谓被动缓存,指的是代理服务器只在顾客端恳求数据时才将服务器返回的数据进行缓存,假如数据过期了,又有顾客端恳求相同数据时,代理服务器又必须重新发起新的数据恳求,在将响应数据传送给顾客端时又进行新的缓存。所谓主动缓存,就是代理服务器不断地检测缓存中的数据,一旦有数据过期,则代理服务器主动发起新的数据恳求来更新数据。这样,当有顾客端恳求该数据时都会大大减短响应时间。还须要说明的是,对于数据中的认证信息,大多数的代理服务器都不会进行缓存的。
2.提供用私有IP访问Internet的方式
IP地址是不可再生的宝贵资源,如果你只有有限的IP地址,并且须要提供整个组织的Internet访问能力,这么,你可以通过使用代理服务器来实现这一点。
3.提升网路的安全性
这一点是很显著的,假如内部用户访问Internet都是通过代理服务器代理服务器软件 linux,这么,代理服务器就成为步入Internet的惟一通道;反过来说,代理服务器也是Internet访问内部网的惟一通道,假如你没有做反向代理,则对于Internet上的主机来说,你的整个内部网只有代理服务器是可见的,因而大大提高了网路的安全性。
1.3代理服务器的分类及特征
一般的代理服务器分类方式,是从实现的机理分为线路层代理、应用层代理、智能线路层代理等等。在这儿,我想从另外一个角度出发,把代理服务器分为传统代理服务器和透明代理服务器。
我觉得有必要好好厘清楚二者的区别,只有真正明白了内在地机理,能够在碰到问题时,有章可循,才不会一头雾水,不知从何解决问题。为此,下边我们就通过具体的实例来说明。本章的写作思路来始于PaulRussell所写的IPCHAINS-HOWTO。下边所举的反例也来始于该文章,我认为我读该文的最大收获在于对内部网访问外部网以及外部网访问内部网的实现手段有了一个清晰的认识。其实,这儿所谓的内部网是指使用私有IP的内部网路。
我们的事例都基于以下假定:
你的域名为,你的内部网(192.168.1.*)用户通过(外部插口eth0:1.2.3.4;内部插口eth1:192.168.1.1)的代理服务器访问Internet,换句话说,该代理服务器是惟一一台直接与Internet和内部网相连的机器。并假该设代理服务器上运行着某种代理服务器软件(如squid)。假定内部网中某一顾客机为(192.168.1.100)。
+-------------------+
|内部网(192.168.1.*)|eth1+--------+eth0DDN
|+------------|proxy|Internet
|client198.168.1.100|+--------+
+-------------------+
eth0:1.2.3.4
eth1:198.168.1.1
1.3.1传统代理
在以上基础上我们做以下工作:
1.代理服务软件被绑定到代理服务器的8080端口。
2.顾客端浏览器被配置使用代理服务器的8080端口。
3.顾客端不须要配置DNS。
4.代理服务器上须要配置代理服务器。
5.顾客端不须要配置缺省路由。
当我们在顾客端浏览器中打开一个web恳求代理服务器软件 linux,例如“”,这时将相继发生以下风波:
1.顾客端使用某一端口(例如1025)联接代理服务器8080端口,恳请web页面“”
2.代理服务器向DNS恳求“”,得到相应的IP地址202.99.11.120。之后,代理服务器使用某一端口(例如1037)向该IP地址的80端口发起web联接恳求,恳请web页面。
3.收到响应的web页面后,代理服务器把该数据传送给顾客端。
4.顾客端浏览器显示该页面。
从的角度看来,联接是在1.2.3.4地1037端口和202.99.11.120的80端口之间构建的。从client的角度看来,联接是在192.168.1.100的1025端口和1.2.3.4的8080端口之间构建的。
1.3.2透明代理
透明代理的意思是顾客端根本不须要晓得有代理服务器的存在。
在以上基础上我们做以下工作:
1.配置透明代理服务器软件运行在代理服务器的8080端口。
2.配置代理服务器将所有对80端口的联接重定向到8080端口。
3.配置顾客端浏览器直接连解到Internet。
4.在顾客端配置好DNS.
5.配置顾客端的缺省网段为192.168.1.1.
当我们在顾客端浏览器中打开一个web恳求,例如“”red hat linux下载,这时将相继发生以下风波:
1.顾客端向DNS恳求“”,得到相应的IP地址202.99.11.120。之后,顾客端使用某一端口(例如1066)向该IP地址的80端口发起web联接恳求,恳请web页面。
2.当该恳求包通过透明代理服务器时,被重定向到代理服务器的绑定端口8080。于是,透明代理服务器用某一端口(例如1088)向202.99.11.120的80端口发起web联接恳求,恳请web页面。
3.收到响应的web页面后,代理服务器把该数据传送给顾客端。
4.顾客端浏览器显示该页面。
从的角度看来,联接是在1.2.3.4地1088端口和202.99.11.120的80端口之间构建的。从client的角度看来,联接是在192.168.1.100的1066端口和202.99.11.120的80端口之间构建的。