2022年代理服务器的配置与应用 .pdf
《2022年代理服务器的配置与应用 .pdf》由会员分享,可在线阅读,更多相关《2022年代理服务器的配置与应用 .pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 代理服务器的配置与应用第一节 代理服务器概述1.1 什么是代理服务器在 TCP/IP 网络中,传统的通信过程是这样的:客户端向服务器请求数据,服务器响应该请求,将数据传送给客户端。在引入了代理服务器以后,这一过程变成了这样:客户端向服务器发起请求,该请求被送到代理服务器;代理服务器分析该请求,先查看自己缓存中是否有请求数据,如果有就直接传送给客户端,如果没有就代替客户端向该服务器发出请求。服务器响应以后,代理服务器将响应的数据传送给客户端,同时在自己的缓存中保留一份该数据的拷贝。这样,再有客户端请求相同的数据时,代理服务器就可以直接将数据传送给客户端,而不需要再向该服务器发起请求。1.2
2、代理服务器的功能一般说来,代理服务器具有以下的功能:1.通过缓存增加访问速度随着 Internet 的迅猛发展,网络带宽变得越来越珍贵。所以为了提高访问速度,好多ISP 都提供代理服务器, 通过代理服务器的缓存功能来加快网络的访问速度。一般说来, 大多数的代理服务器都支持HTTP缓存,但是,有的代理服务器也支持FTP 缓存。在选择代理服务器时,对于大多数的组织,只需要HTTP缓存功能就足够了。通常,缓存有主动缓存被动缓存之分。所谓被动缓存,指的是代理服务器只在客户端请求数据时才将服务器返回的数据进行缓存,如果数据过期了,又有客户端请求相同数据时,代理服务器又必须重新发起新的数据请求,在将响应数
3、据传送给客户端时又进行新的缓存。所谓主动缓存,就是代理服务器不断地检查缓存中的数据,一旦有数据过期,则代理服务器主动发起新的数据请求来更新数据。这样,当有客户端请求该数据时就会大大缩短响应时间。还需要说明的是,对于数据中的认证信息,大多数的代理服务器都不会进行缓存的。2.提供用私有IP 访问 Internet 的方法IP 地址是不可再生的宝贵资源,假如你只有有限的IP 地址, 但是需要提供整个组织的Internet 访问能力,那么,你可以通过使用代理服务器来实现这一点。3.提高网络的安全性这一点是很明显的,如果内部用户访问Internet 都是通过代理服务器,那么,代理服务器就成为进入Inte
4、rnet 的唯一通道; 反过来说, 代理服务器也是Internet 访问内部网的唯一通道,如果你没有做反向代理,则对于 Internet 上的主机来说,你的整个内部网只有代理服务器是可见的,从而大大增强了网络的安全性。1.3 代理服务器的分类及特点通常的代理服务器分类方法,是从实现的机理分为线路层代理、应用层代理、智能线路层代理等等。在这里,我想从另外一个角度出发,把代理服务器分为传统代理服务器和透明代理服务器。我认为有必要好好搞清楚两者的区别,只有真正明白了内在地机理,才能在遇到问题时,有章可循,才不会一头雾水,不知从何解决问题。因此,下面我们就通过具体的实例来说明。本章的写作思路来源于Pa
5、ul Russell 所写的 IPCHAINS-HOWTO。下面所举的例子也来源于该文章,我觉得我读该文的最大收获在于对内部网访问外部网以及外部网访问内部网的实现手段有了一个清晰的认识。当然,这里所谓的内部网是指使用私有IP 的内部网络。我们的例子都基于以下假设:你的域名为,你的内部网 (192.168.1.*) 用户通过( 外部接口eth0:1.2.3.4;内部接口eth1:192.168.1.1)的代理服务器访问Internet,换句话说,该代理服务器是唯一一台直接与Internet和内部网相连的机器。并假该设代理服务器上运行着某种代理服务器软件(如squid)。假设内部网中某一客户机为(
6、192.168.1.100) 。+-+ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 2 |内部网 (192.168.1.*)| eth1+-+eth0 DDN | +-| proxy |Internet |client198.168.1.100| +-+ +-+ eth0: 1.2.3.4 eth1: 198.168.1.1 1.3.1 传统代理在以上基础上我们做以下工作:1.代理服务软件被绑定到代理服务器的8080 端口
7、。2.客户端浏览器被配置使用代理服务器的8080 端口。3.客户端不需要配置DNS。4.代理服务器上需要配置代理服务器。5.客户端不需要配置缺省路由。当我们在客户端浏览器中打开一个web 请求,比如“http:/” ,这时将陆续发生以下事件:1. 客 户 端 使 用 某 一 端 口 ( 比 如1025) 连 接 代 理 服 务 器8080端 口 , 请 求web页 面“http:/”2.代理服务器向DNS 请求“ ”,得到相应的IP 地址 202.99.11.120。然后,代理服务器使用某一端口(比如1037)向该 IP 地址的 80 端口发起web 连接请求,请求web 页面。3.收到响应的
8、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
9、。4.在客户端配置好DNS. 5.配置客户端的缺省网关为192.168.1.1. 当我们在客户端浏览器中打开一个web 请求,比如“http:/” ,这时将陆续发生以下事件:1.客户端向DNS 请求“ ”,得到相应的IP 地址 202.99.11.120。然后,客户端使用某一端口(比如1066)向该 IP 地址的 80 端口发起 web 连接请求,请求web 页面。2.当该请求包通过透明代理服务器时,被重定向到代理服务器的绑定端口8080。于是,透明代理服务器用某一端口(比如1088)向 202.99.11.120 的 80 端口发起 web 连接请求,请求web 页面。3.收到响应的web
10、页面后,代理服务器把该数据传送给客户端。4.客户端浏览器显示该页面。从 的角度看来,连接是在1.2.3.4 地 1088 端口和 202.99.11.120 的 80 端口之间建立的。从client 的角度看来,连接是在192.168.1.100 的 1066 端口和 202.99.11.120 的 80 端口之间建立的。以上就是传统代理服务器和透明代理服务器的区别所在。第二节 各种代理服务器的比较linux 下的代理服务器软件很多,我从( 一个著名的linux 软件站点)查看了一下,足有六十多个。但是被广泛应用的只有Apache、socks、squid 等几个实践证明是高性能的代理软件。下面
11、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - 3 我们分别来比较一下这几个软件:2.1 Apache Apache 是世界上用的最广泛的HTTP 服务器,之所以用的最广泛,是因为它强大的功能、高效率、安全性和速度。 从 1.1.x 版本开始, Apache 开始包含了一个代理模块。用 Apache 作代理服务器的性能优势并不明显,不建议使用。2.2 Socks Socks 是一种网络代理协议,该协议可以让客户机通过Socks
12、 服务器获得对Internet 的完全访问能力。Scoks 在服务器和客户端之间建立一个安全的代理数据通道,从客户的角度看来,Scoks 是透明的; 从服务器的角度看来,Socks 就是客户端。客户端不需要具有对Internet 的直接访问能力(也就是说,可以使用私有 IP 地址) ,因为 Socks 服务器能够把来自于客户端的连接请求重定向到Internet。此外, Socks 服务器可以对用户连接请求进行认证,允许合法用户建立代理连接。同理, Socks 也能防止非授权的Internet 用户访问及的内部网络。所以常常把Socks 当作防火墙来使用。常见的浏览器如netscape、 IE
13、等可以直接使用Socks, 并且我们也可以使用socsk5 的所带的 client 来使那些不直接支持socks 的 internet 软件使用 Socks。更多的资料可以参考Socks 官方站点 http:/ 。2.3 Squid 对于 web 用户来说, Squid 是一个高性能的代理缓存服务器,Squid 支持 FTP、 gopher和 HTTP 协议。和一般的代理缓存软件不同,Squid 用一个单独的、 非模块化的、 I/O 驱动的进程来处理所有的客户端请求。Squid 将数据元缓存在内存中,同时也缓存DNS 查询的结果,除此之外,它还支持非模块化的DNS 查询,对失败的请求进行消极缓
14、存。Squid 支持 SSL,支持访问控制。由于使用了ICP(轻量 Internet 缓存协议),Squid 能够实现层叠的代理阵列,从而最大限度地节约带宽。Squid 由一个主要的服务程序squid,一个 DNS 查询程序dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid 启动以后,它可以派生出预先指定数目的dnsserver 进程,而每一个dnsserver 进程都可以执行单独的DNS 查询,这样一来就大大减少了服务器等待DNS 查询的时间。2.4 选择从上面的比较可以看出,Apache 主要功能是web 服务器,代理功能只不过是其一个模块而已,Socks
15、虽然强大,但有欠灵活,因此我们着重推荐你使用Squid。下面的章节我们就一起来学习Squid 激动人心的特性及相关的安装与配置。第三节 安装 Squid Proxy Server 3.1 获取软件你可以通过以下途径获取该软件:1.从 Squid 的官方站点http:/www.squid-cache.org 下载该软件;2.从你的 linux 发行版本中获取该软件;通常, Squid 软件包有两种:一种是源代码,下载后需要自己重新编译;可执行文件,下载后只需解压就可以使用;另一种是就是RedHat 所使用的rpm 包。下面我们分别讲讲这两种软件包的安装方法。3.2 安装软件我们以目前最新的稳定版
16、本squid-2.3.STABLEX为例。3.2.1rpm 包的安装1.进入 /mnt/cdrom/RedHat/RPMS 2.执行 rpm -ivh squid-2.2.STABLE4-8.i386.rpm。当然,我们也可以在开始安装系统的过程中安装该软件。3.2.2 源代码包的安装1.从 http:/www.squid-cache.org 下载 squid-2.3.STABLE2-src.tar.gz 。2.将该文件拷贝到/usr/local 目录。3.解开该文件tar xvzf squid-2.3.STABLE2-src.tar.gz 。名师资料总结 - - -精品资料欢迎下载 - -
17、- - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - 4 4.解开后,在 /usr/local 生成一个新的目录squid-2.3.STABLE2 ,为了方便用mv 命令将该目录重命名为 squid mv squid-2.3.STABLE2 squid; 5.进入 squid cd squid 6.执行 ./configure 可以用 ./confgure -prefix=/directory/you/want指定安装目录系统缺省安装目录为/usr/local/squid 。7.执
18、行make all 8.执行make install 9.安装结束后,squid 的可执行文件在安装目录的bin 子目录下,配置文件在etc 子目录下。第四节 配置 squid 基础篇让代理服务器跑起来由于 RedHat各方面的优势(包括易用性,稳定性等等),全世界范围内使用该发行版的用户比较多,所以, 我们下面的说明都是以RedHat6.1 环境下 squid-2.2.STABLE4-8 版本为主。 从我的使用经验看来,该版本的 squid 要比其他版本稳定的多,以前的 1.1.22 版本也比较稳定,但是在功能及灵活性方面有所欠缺。squid 有一个主要的配置文件squid.conf,在 R
19、edHat 环境下所有squid 的配置文件位于/etc/squid 子目录下。4.1 常用的配置选项因为缺省的配置文件有问题,所以我们必须首先修改该配置文件的有关内容,以便让 squid 跑起来。下面我们来看一看squid.conf 文件的结构以及一些常用的选项:squid.conf 配置文件的可以分为十三个部分,这十三个部分分别是:1.NETWORK OPTIONS (有关的网络选项)2.OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM (作用于邻居选择算法的有关选项)3.OPTIONS WHICH AFFECT THE CACHE
20、 SIZE (定义 cache大小的有关选项)4.LOGFILE PATHNAMES AND CACHE DIRECTORIES (定义日志文件的路径及cache 的目录 ) 5.OPTIONS FOR EXTERNAL SUPPORT PROGRAMS (外部支持程序选项)6.OPTIONS FOR TUNING THE CACHE (调整 cache的选项)7.TIMEOUTS (超时)8.ACCESS CONTROLS (访问控制)9.ADMINISTRA TIVE PARAMETERS (管理参数)10.OPTIONS FOR THE CACHE REGISTRATION SERVIC
21、E (cache 注册服务选项)11.HTTPD-ACCELERA TOR OPTIONS (HTTPD 加速选项)12.MISCELLANEOUS (杂项)13.DELAY POOL PARAMETERS (延时池参数)虽然 squid 的配置文件很庞大,但是如果你只是为一个中小型网络提供代理服务,并且只准备使用一台服务器,那么,你只需要修改配置文件中的几个选项。这些几个常用选项分别是:1.http_port 说明:定义 squid 监听 HTTP 客户连接请求的端口。缺省是 3128, 如果使用HTTPD 加速模式则为 80。你可以指定多个端口,但是所有指定的端口都必须在一条命令行上。2.
22、cache_mem (bytes) 说明:该选项用于指定squid 可以使用的内存的理想值。这部分内存被用来存储以下对象:In-Transit objects (传入的对象)Hot Objects (热对象,即用户常访问的对象)Negative-Cached objects (消极存储的对象)需要注意的是,这并没有指明squid 所使用的内存一定不能超过该值,其实,该选项只定义了 squid所使用的内存的一个方面,squid 还在其他方面使用内存。所以squid 实际使用的内存可能超过该值。缺省值为 8MB。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
23、- - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 5 3.cache_dir Directory-Name Mbytes Level-1 Level2 说明:指定squid 用来存储对象的交换空间的大小及其目录结构。可以用多个cache_dir 命令来定义多个这样的交换空间,并且这些交换空间可以分布不同的磁盘分区。directory 指明了该交换空间的顶级目录。如果你想用整个磁盘来作为交换空间,那么你可以将该目录作为装载点将整个磁盘mount 上去。缺省值为 /var/spool/squid。 “Mbytes”定
24、义了可用的空间总量。需要注意的是,squid 进程必须拥有对该目录的读写权力。“Level-1”是可以在该顶级目录下建立的第一级子目录的数目,缺省值为16。同理,“ Level-2”是可以建立的第二级子目录的数目,缺省值为256。为什么要定义这么多子目录呢?这是因为如果子目录太少,则存储在一个子目录下的文件数目将大大增加,这也会导致系统寻找某一个文件的时间大大增加,从而使系统的整体性能急剧降低。所以,为了减少每个目录下的文件数量,我们必须增加所使用的目录的数量。如果仅仅使用一级子目录则顶级目录下的子目录数目太大了,所以我们使用两级子目录结构。那么,怎么来确定你的系统所需要的子目录数目呢?我们可
25、以用下面的公式来估算。已知量:DS = 可用交换空间总量(单位KB) / 交换空间数目OS = 平均每个对象的大小= 20k NO = 平均每个二级子目录所存储的对象数目= 256 未知量:L1 = 一级子目录的数量L2 = 二级子目录的数量计算公式:L1 x L2 = DS / OS / NO 注意这是个不定方程,可以有多个解。4.acl 说明:定义访问控制列表。定义语法为:acl aclname acltype string1 . acl aclname acltype file . 当使用文件时,该文件的格式为每行包含一个条目。acltype 可以是src dst srcdomain d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年代理服务器的配置与应用 2022 年代 服务器 配置 应用
限制150内