《linux下架设代理服务器》由会员分享,可在线阅读,更多相关《linux下架设代理服务器(20页珍藏版)》请在金锄头文库上搜索。
1、 Linux 下架设代理服务器一、代理服务器概述 1.1 什么是代理服务器 在 TCP/IP 网络中,传统的通信过程是这样的:客户端向服务器请求数据,服务器响应该请求,将数据传送给客户端。在引入了代理服务器以后,这一过程变成了这样:客户端向服务器发起请求,该请求被送到代理服务器;代理服务器分析该请求,先查看自己缓存中是否有请求数据,如果有就直接传送给客户端,如果没有就代替客户端向该服务器发出请求。服务器响应以后,代理服务器将响应的数据传送给客户端,同时在自己的缓存中保留一份该数据的拷贝。这样,再有客户端请求相同的数据时,代理服务器就可以直接将数据传送给客户端,而不需要再向该服务器发起请求。 1
2、.2 代理服务器的功能 一般说来,代理服务器具有以下的功能: 1.通过缓存增加访问速度 随着 Internet 的迅猛发展,网络带宽变得越来越珍贵。所以为了提高访问速度,好多 ISP 都提供代理服务器,通过代理服务器的缓存功能来加快网络的访问速度。一般说来,大多数的代理服务器都支持 HTTP 缓存,但是,有的代理服务器也支持 FTP 缓存。在选择代理服务器时,对于大多数的组织,只需要 HTTP缓存功能就足够了。 通常,缓存有主动缓存被动缓存之分。所谓被动缓存,指的是代理服务器只在客户端请求数据时才将服务器返回的数据进行缓存,如果数据过期了,又有客户端请求相同数据时,代理服务器又必须重新发起新的
3、数据请求,在将响应数据传送给客户端时又进行新的缓存。所谓主动缓存,就是代理服务器不断地检查缓存中的数据,一旦有数据过期,则代理服务器主动发起新的数据请求来更新数据。这样,当有客户端请求该数据时就会大大缩短响应时间。还需要说明的是,对于数据中的认证信息,大多数的代理服务器都不会进行缓存的。 2.提供用私有 IP 访问 Internet 的方法 IP 地址是不可再生的宝贵资源,假如你只有有限的 IP 地址,但是需要提供整个组织的 Internet 访问能力,那么,你可以通过使用代理服务器来实现这一点。3.提高网络的安全性 这一点是很明显的,如果内部用户访问 Internet 都是通过代理服务器,那
4、么,代理服务器就成为进入 Internet 的唯一通道;反过来说,代理服务器也是Internet 访问内部网的唯一通道,如果你没有做反向代理,则对于 Internet 上的主机来说,你的整个内部网只有代理服务器是可见的,从而大大增强了网络的安全性。 1.3 代理服务器的分类及特点 通常的代理服务器分类方法,是从实现的机理分为线路层代理、应用层代理、智能线路层代理等等。在这里,我想从另外一个角度出发,把代理服务器分为传统代理服务器和透明代理服务器。 我认为有必要好好搞清楚两者的区别,只有真正明白了内在地机理,才能在遇到问题时,有章可循,才不会一头雾水,不知从何解决问题。因此,下面我们就通过具体的
5、实例来说明。本章的写作思路来源于 Paul Russell 所写的IPCHAINS-HOWTO。下面所举的例子也来源于该文章,我觉得我读该文的最大收获在于对内部网访问外部网以及外部网访问内部网的实现手段有了一个清晰的认识。当然,这里所谓的内部网是指使用私有 IP 的内部网络。 我们的例子都基于以下假设: 你的域名为 ,你的内部网(192.168.1.*) 用户通过(外部接口 eth0:1.2.3.4;内部接口 eth1:192.168.1.1)的代理服务器访问 Internet,换句话说,该代理服务器是唯一一台直接与 Internet 和内部网相连的机器。并假该设代理服务器上运行着某种代理服务
6、器软件(如squid)。假设内部网中某一客户机为 (192.168.1.100)。 +-+ |内部网(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 端口。 2.客户端浏览器被配置使用代理服务器的 8080 端口。 3.客户端不需要配置 DNS。 4.代理服务器上需要配置代理服务器。 5.客户端不需要配置缺省路由。
7、当我们在客户端浏览器中打开一个 web 请求,比如“http:/”,这时将陆续发生以下事件: 1.客户端使用某一端口(比如 1025)连接代理服务器 8080 端口,请求 web 页面“http:/” 2.代理服务器向 DNS 请求“”,得到相应的 IP 地址202.99.11.120。然后,代理服务器使用某一端口(比如 1037)向该 IP 地址的80 端口发起 web 连接请求,请求 web 页面。 3.收到响应的 web 页面后,代理服务器把该数据传送给客户端。 4.客户端浏览器显示该页面。 从 的角度看来,连接是在 1.2.3.4 地 1037 端口和202.99.11.120 的
8、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 请求,比如“http
9、:/”,这时将陆续发生以下事件: 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
10、 端口和202.99.11.120 的 80 端口之间建立的。从 client 的角度看来,连接是在192.168.1.100 的 1066 端口和 202.99.11.120 的 80 端口之间建立的。 以上就是传统代理服务器和透明代理服务器的区别所在。 二、各种代理服务器的比较 linux 下的代理服务器软件很多,我从 (一个著名的 linux 软件站点)查看了一下,足有六十多个。但是被广泛应用的只有Apache、socks、squid 等几个实践证明是高性能的代理软件。下面我们分别来比较一下这几个软件: 2.1 Apache Apache 是世界上用的最广泛的 HTTP 服务器,之所以用
11、的最广泛,是因为它强大的功能、高效率、安全性和速度。从 1.1.x 版本开始,Apache 开始包含了一个代理模块。用 Apache 作代理服务器的性能优势并不明显,不建议使用。 2.2 Socks Socks 是一种网络代理协议,该协议可以让客户机通过 Socks 服务器获得对Internet 的完全访问能力。Scoks 在服务器和客户端之间建立一个安全的代理数据通道,从客户的角度看来,Scoks 是透明的;从服务器的角度看来,Socks 就是客户端。客户端不需要具有对 Internet 的直接访问能力(也就是说,可以使用私有 IP 地址),因为 Socks 服务器能够把来自于客户端的连接请
12、求重定向到 Internet。此外,Socks 服务器可以对用户连接请求进行认证,允许合法用户建立代理连接。同理,Socks 也能防止非授权的 Internet 用户访问及的内部网络。所以常常把 Socks 当作防火墙来使用。 常见的浏览器如 netscape、IE 等可以直接使用 Socks, 并且我们也可以使用socsk5 的所带的 client 来使那些不直接支持 socks 的 internet 软件使用Socks。 更多的资料可以参考 Socks 官方站点 http:/。 2.3 Squid 对于 web 用户来说,Squid 是一个高性能的代理缓存服务器, Squid 支持FTP、
13、gopher 和 HTTP 协议。和一般的代理缓存软件不同,Squid 用一个单独的、非模块化的、I/O 驱动的进程来处理所有的客户端请求。 Squid 将数据元缓存在内存中,同时也缓存 DNS 查询的结果,除此之外,它还支持非模块化的 DNS 查询,对失败的请求进行消极缓存。Squid 支持 SSL,支持访问控制。由于使用了 ICP(轻量 Internet 缓存协议), Squid 能够实现层叠的代理阵列,从而最大限度地节约带宽。 Squid 由一个主要的服务程序 squid,一个 DNS 查询程序 dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。当 Squid 启动
14、以后,它可以派生出预先指定数目的 dnsserver 进程,而每一个 dnsserver 进程都可以执行单独的 DNS 查询,这样一来就大大减少了服务器等待 DNS 查询的时间。 2.4 选择 从上面的比较可以看出,Apache 主要功能是 web 服务器,代理功能只不过是其一个模块而已,Socks 虽然强大,但有欠灵活,因此我们着重推荐你使用Squid。下面的章节我们就一起来学习 Squid 激动人心的特性及相关的安装与配置。 三、安装 Squid Proxy Server 3.1 获取软件 你可以通过以下途径获取该软件: 1.从 Squid 的官方站点 http:/www.squid-ca
15、che.org 下载该软件; 2.从你的 linux 发行版本中获取该软件; 通常,Squid 软件包有两种:一种是源代码,下载后需要自己重新编译;可执行文件,下载后只需解压就可以使用;另一种是就是 RedHat 所使用的 rpm 包。下面我们分别讲讲这两种软件包的安装方法。 3.2 安装软件 我们以目前最新的稳定版本 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 squi