2022年Linux下架设代理服务器-Squid配置 .pdf





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

限制150内