使用 Squid 代理服务器 Squid 是一种代理服务器,它实现了对 HTTP、FTP 和 Gopher 协议的缓存。Squid 能够使用访问控制列表(Access Control List,ACL)来允许或拒绝访问。Squid 具备强大的可配置能力以及鲁棒性,而且用户会发现,该软件非常容易学习。更好的是,可将 Squid 配置为透明代理,即好像用户根本不知道有 Squid 一样。 1 获取并安装 Squid 用户可从 FTP 站点:ftp://squid.nlanr.net/pub 上获得最新的版本。目前最新的版本是2.3。现在,我们假定你的代理服务有两个网络接口,一个连接到外部世界,而另一个连接到内部网络,并且你已经关闭了 IP 转发功能。 图标 注意 您也可以在仅有一个网络接口的服务器上建立 Squid,但我们并不建议这样做。这种配置会加倍本地网络的交通,并可能导致拥塞。目前,网卡和集线器(Hub)的价格已经非常低廉,即使对较小的网络而言,这种投资也是值得的。 如果用户计划使用 Squid 维护缓存,则需要考虑硬盘驱动器和内存限制。Web 缓存的本质是,有上千个小文件要同时而有效地递交给客户。Squid 的作者建议至少需要有 300MHz Pentium II CPU、512MB RAM 和五个超宽 SCSI 硬盘,每个有 9GB 的容量。笔者曾听说,某个 Internet 供应商只使用几个 486/66 处理器以及 IDE 驱动器。我认为大部分人处于这两种极限之间比较合适。笔者建议使用至少 100MHz Pentium CPU、64MB RAM 和 6GB SCSI 硬盘。实际上,略微低一些的配置也没有多大关系。 在获得 tar.gz 文件之后,使用下面的命令将它解开: tar zxvf squid-2.3.STABLE4-src.tar.gz 到Squid所在目录中运行 ./configure 检查系统设置并建立配置文件之后,可输入 make 编译 Squid。如果没有出现任何错误,输入 make install,默认将会将其安装到/usr/local下。 2 使用 Squid 为建立交换目录,输入如下命令: /usr/local/squid/bin/squid ?z 但在第一次运行该命令之前,需要修改 /usr/local/squid/squid.conf 配置文件。Squid 的访问控制列表默认是拒绝所有的请求。编辑 /usr/local/squid/squid.conf 文件并添加如下行: acl local_net src 192.168.1.1/255.255.255.0 这里,192.168.1.1 是本地网络中的一个 IP 地址,而 255.255.255.0 是内部网络的网络掩码。同时还需要添加: http_access allow local_net 将这一行放在 http_access deny all 的前面。这定义了允许使用缓存的 IP 地址组。 输入 squid & 启动 Squid。用户可通过几种方法验证 Squid 的运行: l 在 ps -x 的输出清单中应该出现 Squid。 l 运行 client www.yahoo.com 应该在终端上打印 Web 页文本。 l 目录 /var/log/squid 中的 cache.log 和 store.log 能够表明 Squid 正在工作。 l 运行 squid -k check && echo "squid is running" 将告诉用户 Squid 是否正在运行。 现在进行真正的测试:在 Netscap Navigator 中,可选择 Edit->Preference,然后从 Advanced 类中选择 Proxies 而进行代理设置。选择 Manual Proxy Configuration 然后单击 View,可指定 Squid 服务器的 IP 地址作为 HTTP、FTP 和 Gopher 代理服务器。默认的代理端口是 3128,除非在 squid.conf 文件中修改了默认的代理端口,否则应该在 port 框中输入 3128。 现在应该能够浏览任何 Web 站点了。检查代理服务器上的日志文件 /var/log/squid/access.log,并确认浏览过的 Web 站点保存在日志文件中,从而可再次证实 Squid 正在工作。 3 配置 Squid 满足自己的需求 现在 Squid 已经能够运行,用户可以定制它以满足自己的需求。到此为止,Squid 并不限制用户访问任何站点。你可以在 squid.conf 文件中定义规则,设置访问控制列表 (ACL),然后根据这些列表允许或拒绝访问者。 添加下面的配置行,该行定义了一个 ACL 规则,称为 BadWords,它匹配任何包含 foo 或 bar 的 URL: acl BadWords url_regex foo bar 这条规则作用于 http://foo.deepwell.com/pictures 和 http://www.thekennedycompound.com/ourbar.jpg,因为这两个 URL 包含了BadWords 所定义的两个单词。 在 squid.conf 文件中添加下面的行,它可以防止用户访问任何匹配上述规则的 URL: http_access deny BadWords 图标 注意 几乎每个管理员在使用单词式 ACL 时,都会遇到一些情况,这些情况下不能简单地使用单词。比如,如果你要禁止用户访问包含有“sex”的站点,则同样也会禁止他们访问 www.buildersexchange.com 这样的站点。因为 “buildersexchange” 刚好属于这个由“sex”定义的范畴。 因为 Squid 功能的所有方面均受到 squid.conf 文件的控制,因此用户可通过编辑该文件而调整 Squid 以满足自己的需求。 比如,添加如下配置行: cach_mem 16 MB 将允许 Squid 使用 16MB 的内存来保存 Web 页。经过不断尝试,就可以找出适合自己的不同数量。 图标 注意 cache_mem 并不是 Squid 所消耗的内存总量,它只是 Squid 用来保存 Web 页图像等的内存最大值。Squid 的文档中说,Squid 可能会消耗这一数量的三倍多的内存。 使用如下配置行: emulate_httpd_log on 能够让 /var/log/squid 中日志文件的格式类似 Web 服务器的日志文件格式。这样,用户可以使用 Web 统计程序,例如 Analog 或 WeBTrends 来分析日志,从而了解用户的使用情况。 某些 FTP 服务器在以匿名方式登录时需要输入 e-mail 地址作为口令。通过将 ftp_user 设置为有效的 e-mail 地址,可以让 FTP 会话另一端的服务器接收到期望的数据,例如: ftp_user
[email protected] 你可能想使用代理防火墙管理员的地址,但这可能会导致外部 FTP 管理员与你联系时出现问题。 如果URL页没有被找到,则可以推断该页不会在近期出现。通过将 negative_ttl 设置为期望的分钟数,可以控制 Squid 记住某页没有找到的时间,例如: negative_ttl 2 minutes 默认值为 5 分钟,但如果不想禁止的话,笔者建议减小到两分钟或一分钟,因为用户希望代理能够尽量透明。如果用户正在查找一个已知存在的页,则代理不应该在该页能够实际得到的情况下报告找不到。 cache_mgr
[email protected] 将 cache_mgr 设置为自己的 e-mail 地址,可让 Squid 在检测到缓存问题时向你发送 e-mail。 cache_effective_user nobody cache_effective_group nobody 这两行非常重要,如果以 root 身份启动 Squid,这两行将把 Squid 的 UID 改变为“nobody”。这将避免程序中的 bug 修改或删除不应该修改或删除的东西。 最后,类似 Squid 这样的工具对用户来讲应该是完全透明的。这样,用户不必关系复杂的管理文件,并能够让他们浏览 Web,就像没有 Web 代理服务器一样。如何达到这一目的的方法不在本书中讨论,用户可参阅 http://squid.nlanr.net/Squid/FAQ/FAQ.Html 上的 Squid 问答,第 17 小节详细描述了如何设置 Squid 作为透明代理。 同时,如果你需要在 squid.conf 文件中管理一个大的“黑名单”站点,则可以考虑使用一个重定向程序。大的 ACL 规则列表可能会降低负荷很重的 Squid 代理服务器的速度。而使用重定向程序,则可以提供根据过滤规则允许或禁止访问 URL 的效率。用户可在 Squirm 上(http://www.senet.com.au/squirm)获得详细信息,它是一个功能完整的 Squid 重定向器。 Squid 发行中带有一个 cachemrg.cgi 文件。该文件是 CGI 程序,能够用来查看代理的统计信息,也可以用来关闭或重新启动 Squid。该程序能够以清楚的细节来描述代理的执行情况。还能够帮助你调整 Web 缓存。
[1] [2] 下一页
(出处:http://www.sheup.com)
上一页 [1] [2]