⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chinaunix_net - 我刚学习squid时的参考文档,感觉永远是经典之作。.htm

📁 Squid入门资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
            <BR>常见的浏览器如netscape、IE等可以直接使用Socks,&nbsp;并且我们也可以使用socsk5的所带的client来使那些不直接支持socks的internet软件使用Socks。&nbsp; 
            <BR>更多的资料可以参考Socks官方站点http://www.socks.nec.com。&nbsp; 
            <BR><BR>2.3&nbsp;Squid&nbsp; 
            <BR>对于web用户来说,Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。&nbsp; 
            <BR>Squid将数据元缓存在内存中,同时也缓存DNS查询的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。Squid支持SSL,支持访问控制。由于使用了ICP(轻量Internet缓存协议),Squid能够实现层叠的代理阵列,从而最大限度地节约带宽。&nbsp; 
            <BR>Squid由一个主要的服务程序squid,一个DNS查询程序dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid启动以后,它可以派生出预先指定数目的dnsserver进程,而每一个dnsserver进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时间。&nbsp; 
            <BR><BR>2.4&nbsp;选择&nbsp; 
            <BR>从上面的比较可以看出,Apache主要功能是web服务器,代理功能只不过是其一个模块而已,Socks虽然强大,但有欠灵活,因此我们着重推荐你使用Squid。下面的章节我们就一起来学习Squid激动人心的特性及相关的安装与配置。 
            <BR><BR>三、安装Squid&nbsp;Proxy&nbsp;Server&nbsp; <BR><BR>3.1获取软件&nbsp; 
            <BR>你可以通过以下途径获取该软件:&nbsp; 
            <BR>1.从Squid的官方站点http://www.squid-cache.org下载该软件;&nbsp; 
            <BR>2.从你的linux发行版本中获取该软件;&nbsp; 
            <BR>通常,Squid软件包有两种:一种是源代码,下载后需要自己重新编译;可执行文件,下载后只需解压就可以使用;另一种是就是RedHat所使用的rpm包。下面我们分别讲讲这两种软件包的安装方法。&nbsp; 
            <BR><BR>3.2安装软件&nbsp; <BR>我们以目前最新的稳定版本squid-2.3.STABLEX为例。&nbsp; 
            <BR><BR>3.2.1rpm包的安装&nbsp; <BR>1.进入/mnt/cdrom/RedHat/RPMS&nbsp; 
            <BR>2.执行rpm&nbsp;-ivh&nbsp;squid-2.2.STABLE4-8.i386.rpm。&nbsp; 
            <BR>当然,我们也可以在开始安装系统的过程中安装该软件。&nbsp; <BR><BR>3.2.2&nbsp;源代码包的安装&nbsp; 
            <BR>1.从http://www.squid-cache.org下载squid-2.3.STABLE2-src.tar.gz。&nbsp; 
            <BR>2.将该文件拷贝到/usr/local目录。&nbsp; 
            <BR>3.解开该文件&nbsp;tar&nbsp;xvzf&nbsp;squid-2.3.STABLE2-src.tar.gz。&nbsp; 
            <BR>4.解开后,在/usr/local生成一个新的目录squid-2.3.STABLE2,为了方便用mv命令将&nbsp;该目录重命名为squid&nbsp;mv&nbsp;squid-2.3.STABLE2&nbsp;squid;&nbsp; 
            <BR>5.进入squid&nbsp;cd&nbsp;squid&nbsp; 
            <BR>6.执行./configure&nbsp;可以用./confgure&nbsp;--prefix=/directory/you/want指定安装目录&nbsp; 
            <BR>系统缺省安装目录为/usr/local/squid。&nbsp; 
            <BR>7.执行&nbsp;make&nbsp;all&nbsp; 
            <BR>8.执行&nbsp;make&nbsp;install&nbsp; 
            <BR>9.安装结束后,squid的可执行文件在安装目录的bin子目录下,配置文件在etc子目录下。&nbsp; 
            <BR><BR>四、配置squid基础篇——让代理服务器跑起来&nbsp; 
            <BR>由于RedHat各方面的优势(包括易用性,稳定性等等),全世界范围内使用该发行版的用户比较多,所以,我们下面的说明都是以RedHat6.1环境下squid-2.2.STABLE4-8版本为主。从我的使用经验看来,该版本的squid要比其他版本稳定的多,以前的1.1.22版本也比较稳定,但是在功能及灵活性方面有所欠缺。&nbsp; 
            <BR>squid有一个主要的配置文件squid.conf,在RedHat环境下所有squid的配置文件位于/etc/squid子目录下。&nbsp; 
            <BR><BR>4.1常用的配置选项&nbsp; 
            <BR>因为缺省的配置文件有问题,所以我们必须首先修改该配置文件的有关内容,以便让squid跑起来。&nbsp; 
            <BR>下面我们来看一看squid.conf文件的结构以及一些常用的选项:&nbsp; 
            <BR>squid.conf配置文件的可以分为十三个部分,这十三个部分分别是:&nbsp; 
            <BR>1.NETWORK&nbsp;OPTIONS&nbsp;(有关的网络选项)&nbsp; 
            <BR>2.OPTIONS&nbsp;WHICH&nbsp;AFFECT&nbsp;THE&nbsp;NEIGHBOR&nbsp;SELECTION&nbsp;ALGORITHM&nbsp;(作用于邻居选择算&nbsp;法的有关选项)&nbsp; 
            <BR>3.OPTIONS&nbsp;WHICH&nbsp;AFFECT&nbsp;THE&nbsp;CACHE&nbsp;SIZE&nbsp;(定义cache大小的有关选项)&nbsp; 
            <BR>4.LOGFILE&nbsp;PATHNAMES&nbsp;AND&nbsp;CACHE&nbsp;DIRECTORIES&nbsp;(定义日志文件的路径及cache的目录)&nbsp; 
            <BR>5.OPTIONS&nbsp;FOR&nbsp;EXTERNAL&nbsp;SUPPORT&nbsp;PROGRAMS&nbsp;(外部支持程序选项)&nbsp; 
            <BR>6.OPTIONS&nbsp;FOR&nbsp;TUNING&nbsp;THE&nbsp;CACHE&nbsp;(调整cache的选项)&nbsp; 
            <BR>7.TIMEOUTS&nbsp;(超时)&nbsp; 
            <BR>8.ACCESS&nbsp;CONTROLS&nbsp;(访问控制)&nbsp; 
            <BR>9.ADMINISTRATIVE&nbsp;PARAMETERS&nbsp;(管理参数)&nbsp; 
            <BR>10.OPTIONS&nbsp;FOR&nbsp;THE&nbsp;CACHE&nbsp;REGISTRATION&nbsp;SERVICE&nbsp;(cache注册服务选项)&nbsp; 
            <BR>11.HTTPD-ACCELERATOR&nbsp;OPTIONS&nbsp;(HTTPD加速选项)&nbsp; 
            <BR>12.MISCELLANEOUS&nbsp;(杂项)&nbsp; 
            <BR>13.DELAY&nbsp;POOL&nbsp;PARAMETERS&nbsp;(延时池参数)&nbsp; 
            <BR>虽然squid的配置文件很庞大,但是如果你只是为一个中小型网络提供代理服务,并且只准备使用一台服务器,那么,你只需要修改配置文件中的几个选项。这些几个常用选项分别是:&nbsp; 
            <BR>1.http_port&nbsp; 
            <BR>说明:定义squid监听HTTP客户连接请求的端口。缺省是3128,如果使用HTTPD加速模式&nbsp;则为80。你可以指定多个端口,但是所有指定的端口都必须在一条命令行上。&nbsp; 
            <BR>2.cache_mem&nbsp;(bytes)&nbsp; 
            <BR>说明:该选项用于指定squid可以使用的内存的理想值。这部分内存被用来存储以下对象&nbsp;:&nbsp; 
            <BR>In-Transit&nbsp;objects&nbsp;(传入的对象)&nbsp; 
            <BR>Hot&nbsp;Objects&nbsp;(热对象,即用户常访问的对象)&nbsp; 
            <BR>Negative-Cached&nbsp;objects&nbsp;(消极存储的对象)&nbsp; 
            <BR>需要注意的是,这并没有指明squid所使用的内存一定不能超过该值,其实,该选项只&nbsp;定义了squid所使用的内存的一个方面,squid还在其他方面使用内存。所以squid实际&nbsp;使用的内存可能超过该值。缺省值为8MB。&nbsp; 
            <BR>3.cache_dir&nbsp;Directory-Name&nbsp;Mbytes&nbsp;Level-1&nbsp;Level2&nbsp; 
            <BR>说明:指定squid用来存储对象的交换空间的大小及其目录结构。可以用多个cache_dir命令来定义多个这样的交换空间,并且这些交换空间可以分布不同的磁盘分区。"directory&nbsp;"指明了该交换空间的顶级目录。如果你想用整个磁盘来作为交换空间,那么你可以将该目录作为装载点将整个磁盘mount上去。缺省值为/var/spool/squid。“Mbytes”定义了可用的空间总量。需要注意的是,squid进程必须拥有对该目录的读写权力。“Level-1”是可以在该顶级目录下建立的第一级子目录的数目,缺省值为16。同理,“Level-2”是可以建立的第二级子目录的数目,缺省值为256。为什么要定义这么多子目录呢?这是因为如果子目录太少,则存储在一个子目录下的文件数目将大大增加,这也会导致系统寻找某一个文件的时间大大增加,从而使系统的整体性能急剧降低。所以,为了减少每个目录下的文件数量,我们必须增加所使用的目录的数量。如果仅仅使用一级子目录则顶级目录下的子目录数目太大了,所以我们使用两级子目录结构。&nbsp; 
            <BR>那么,怎么来确定你的系统所需要的子目录数目呢?我们可以用下面的公式来估算。&nbsp; <BR>已知量:&nbsp; 
            <BR>DS&nbsp;=&nbsp;可用交换空间总量(单位KB)/&nbsp;交换空间数目&nbsp; 
            <BR>OS&nbsp;=&nbsp;平均每个对象的大小=&nbsp;20k&nbsp; 
            <BR>NO&nbsp;=&nbsp;平均每个二级子目录所存储的对象数目&nbsp;=&nbsp;256&nbsp; 
            <BR>未知量:&nbsp; <BR>L1&nbsp;=&nbsp;一级子目录的数量&nbsp; 
            <BR>L2&nbsp;=&nbsp;二级子目录的数量&nbsp; <BR>计算公式:&nbsp; 
            <BR>L1&nbsp;x&nbsp;L2&nbsp;=&nbsp;DS&nbsp;/&nbsp;OS&nbsp;/&nbsp;NO&nbsp; 
            <BR>注意这是个不定方程,可以有多个解。&nbsp; <BR>4.acl&nbsp; <BR>说明:定义访问控制列表。&nbsp; 
            <BR>定义语法为:&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;acltype&nbsp;string1&nbsp;...&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;acltype&nbsp;"file"&nbsp;...&nbsp; 
            <BR>当使用文件时,该文件的格式为每行包含一个条目。&nbsp; 
            <BR>acltype&nbsp;可以是&nbsp;src&nbsp;dst&nbsp;srcdomain&nbsp;dstdomain&nbsp;url_pattern&nbsp;urlpath_pattern&nbsp;time&nbsp;port&nbsp;proto&nbsp;method&nbsp;browser&nbsp;user&nbsp;中的一种。&nbsp; 
            <BR>分别说明如下:&nbsp; <BR>src&nbsp;指明源地址。可以用以下的方法指定:&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;src&nbsp;ip-address/netmask&nbsp;...&nbsp;(客户ip地址)&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;src&nbsp;addr1-addr2/netmask&nbsp;...&nbsp;(地址范围)&nbsp; 
            <BR>dst&nbsp;指明目标地址。语法为:&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;dst&nbsp;ip-address/netmask&nbsp;...&nbsp;(即客户请求的服务器的ip地址)&nbsp; 
            <BR>srcdomain&nbsp;指明客户所属的域。语法为:&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;srcdomain&nbsp;foo.com&nbsp;...&nbsp;squid将根据客户ip反向查询DNS。&nbsp; 
            <BR>dstdomain&nbsp;指明请求服务器所属的域。语法为:&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;dstdomain&nbsp;foo.com&nbsp;...&nbsp;由客户请求的URL决定。&nbsp; 
            <BR>注意,如果用户使用服务器ip而非完整的域名时,squid将进行反向的DNS解析来确&nbsp;定其完整域名,如果失败就记录为“none”。&nbsp; 
            <BR>time&nbsp;指明访问时间。语法如下:&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;time&nbsp;[day-abbrevs]&nbsp;[h1:m1-h2:m2][hh:mm-hh:mm]&nbsp; 
            <BR>day-abbrevs:&nbsp; <BR>S&nbsp;-&nbsp;Sunday&nbsp; 
            <BR>M&nbsp;-&nbsp;Monday&nbsp; <BR>T&nbsp;-&nbsp;Tuesday&nbsp; 
            <BR>W&nbsp;-&nbsp;Wednesday&nbsp; <BR>H&nbsp;-&nbsp;Thursday&nbsp; 
            <BR>F&nbsp;-&nbsp;Friday&nbsp; <BR>A&nbsp;-&nbsp;Saturday&nbsp; 
            <BR>h1:m1&nbsp;必须小于&nbsp;h2:m2,表达示为[hh:mm-hh:mm]。&nbsp; 
            <BR>port&nbsp;指定访问端口。可以指定多个端口,比如:&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;port&nbsp;80&nbsp;70&nbsp;21&nbsp;...&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;port&nbsp;0-1024&nbsp;...&nbsp;(指定一个端口范围)&nbsp; 
            <BR>proto&nbsp;指定使用协议。可以指定多个协议:&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;proto&nbsp;HTTP&nbsp;FTP&nbsp;...&nbsp; 
            <BR>method&nbsp;指定请求方法。比如:&nbsp; 
            <BR>acl&nbsp;aclname&nbsp;method&nbsp;GET&nbsp;POST&nbsp;...&nbsp; 
            <BR>5.http_access&nbsp; <BR>说明:根据访问控制列表允许或禁止某一类用户访问。&nbsp; 
            <BR>如果某个访问没有相符合的项目,则缺省为应用最后一条项目的“非”。比如最后一条为允许,则缺省就是禁止。所以,通常应该把最后的条目设为"deny&nbsp;all"&nbsp;或&nbsp;"allow&nbsp;all"&nbsp;来避免安全性隐患。 
            <BR>4.2&nbsp;应用实例&nbsp; 
            <BR>假想情景:某公司用squid作代理服务器,该代理服务器配置为PII450/256M/8.4G,公司所用ip段为1.2.3.0/24,并且想用8080作为代理端口。&nbsp; 
            <BR>则相应的squid配置选项为:&nbsp; <BR>1.http_port&nbsp; 
            <BR>http_port&nbsp;8080&nbsp; <BR>2.cache_mem&nbsp; 
            <BR>思路:由于该服务器只提供代理服务,所以该值可以尽量设得大一些。&nbsp; 
            <BR>cache_mem&nbsp;194M&nbsp; 
            <BR>3.cache_dir&nbsp;Directory-Name&nbsp;Mbytes&nbsp;Level-1&nbsp;Level2&nbsp; 
            <BR>思路:硬盘为8.4G的,在安装系统时应该做好规划,为不同的文件系统划分可用空间。在本例中,我们可以这样来划分:&nbsp; 
            <BR>/cache1&nbsp;3.5G&nbsp; <BR>/cache2&nbsp;3.5G&nbsp; 
            <BR>/var&nbsp;400M&nbsp; <BR>swap&nbsp;127M&nbsp; 
            <BR>/&nbsp;剩余部分&nbsp; 
            <BR>并且,在安装时,我们尽量不安装不必要的包。这样在节约空间的同时可以提高系统的安全性和稳定性。下面我们来计算所需的第一级和第二级子目录数。&nbsp; 
            <BR>已知量:&nbsp; 
            <BR>DS&nbsp;=&nbsp;可用交换空间总量(单位KB)/&nbsp;交换空间数目=7G/2=3500000KB&nbsp; 
            <BR>OS&nbsp;=&nbsp;平均每个对象的大小=&nbsp;20k&nbsp; 
            <BR>NO&nbsp;=&nbsp;平均每个二级子目录所存储的对象数目&nbsp;=&nbsp;256&nbsp; 
            <BR>未知量:&nbsp; <BR>L1&nbsp;=&nbsp;一级子目录的数量&nbsp; 
            <BR>L2&nbsp;=&nbsp;二级子目录的数量&nbsp; <BR>计算公式:&nbsp; 
            <BR>L1&nbsp;x&nbsp;L2&nbsp;=&nbsp;DS&nbsp;/&nbsp;OS&nbsp;/&nbsp;NO=3500000/20/256=684&nbsp; 
            <BR>我们取&nbsp; <BR>L1=16&nbsp; <BR>L2=43&nbsp; 
            <BR>所以,我们的cache_dir语句为:&nbsp; 
            <BR>cache_dir&nbsp;/cache1&nbsp;3500M&nbsp;16&nbsp;43&nbsp; 
            <BR>cache_dir&nbsp;/cache2&nbsp;3500M&nbsp;16&nbsp;43&nbsp; 
            <BR>4.acl&nbsp; <BR>思路:通过src来定义acl.&nbsp; 
            <BR>acl&nbsp;allow_ip&nbsp;src&nbsp;1.2.3.4/255.255.255.0&nbsp; 
            <BR>5.http_access&nbsp; 
            <BR>http_access&nbsp;allow&nbsp;allow_ip&nbsp; 
            <BR><BR>4.3启动、停止squid。&nbsp; 
            <BR>配置并保存好squid.conf后,可以用以下命令启动squid。&nbsp; <BR>squid&nbsp; 
            <BR>或者,使用RedHat的启动脚本来启动squid.&nbsp; 
            <BR>/etc/rc.d/init.d/squid&nbsp;start&nbsp; 
            <BR>同样地,你也可以用下列脚本停止运行squid或重启动squid.&nbsp; 
            <BR>/etc/rc.d/init.d/squid&nbsp;stop&nbsp; 
            <BR>/etc/rc.d/init.d/squid&nbsp;restart&nbsp; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -