当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 在LINUX下使用Squid代理服务器

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 在LINUX下使用Squid代理服务器


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 40 ::
收藏到网摘: n/a


使用Squid代理服务器
Squid是一种代理服务器,它实现了对HTTP、FTP和Gopher协议的缓存。Squid能够使用访问控制列表(AccessControlList,ACL)来允许或拒绝访问。Squid具备强大的可配置能力以及鲁棒性,而且用户会发现,该软件非常容易学习。更好的是,可将Squid配置为透明代理,即好像用户根本不知道有Squid一样。
1获取并安装Squid
用户可从FTP站点:ftp://squid.nlanr.net/pub上获得最新的版本。目前最新的版本是2.3。现在,我们假定你的代理服务有两个网络接口,一个连接到外部世界,而另一个连接到内部网络,并且你已经关闭了IP转发功能。

图标注意您也可以在仅有一个网络接口的服务器上建立Squid,但我们并不建议这样做。这种配置会加倍本地网络的交通,并可能导致拥塞。目前,网卡和集线器(Hub)的价格已经非常低廉,即使对较小的网络而言,这种投资也是值得的。

如果用户计划使用Squid维护缓存,则需要考虑硬盘驱动器和内存限制。Web缓存的本质是,有上千个小文件要同时而有效地递交给客户。Squid的作者建议至少需要有300MHzPentiumIICPU、512MBRAM和五个超宽SCSI硬盘,每个有9GB的容量。笔者曾听说,某个Internet供应商只使用几个486/66处理器以及IDE驱动器。我认为大部分人处于这两种极限之间比较合适。笔者建议使用至少100MHzPentiumCPU、64MBRAM和6GBSCSI硬盘。实际上,略微低一些的配置也没有多大关系。
在获得tar.gz文件之后,使用下面的命令将它解开:
tarzxvfsquid-2.3.STABLE4-src.tar.gz

到Squid所在目录中运行./configure检查系统设置并建立配置文件之后,可输入make编译Squid。如果没有出现任何错误,输入makeinstall,默认将会将其安装到/usr/local下。
2使用Squid
为建立交换目录,输入如下命令:
/usr/local/squid/bin/squid–z

但在第一次运行该命令之前,需要修改/usr/local/squid/squid.conf配置文件。Squid的访问控制列表默认是拒绝所有的请求。编辑/usr/local/squid/squid.conf文件并添加如下行:
acllocal_netsrc192.168.1.1/255.255.255.0

这里,192.168.1.1是本地网络中的一个IP地址,而255.255.255.0是内部网络的网络掩码。同时还需要添加:
http_accessallowlocal_net

将这一行放在http_accessdenyall的前面。这定义了允许使用缓存的IP地址组。
输入squid&启动Squid。用户可通过几种方法验证Squid的运行:
l在ps-x的输出清单中应该出现Squid。
l运行clientwww.yahoo.com应该在终端上打印Web页文本。
l目录/var/log/squid中的cache.log和store.log能够表明Squid正在工作。
l运行squid-kcheck&&echo"squidisrunning"将告诉用户Squid是否正在运行。

现在进行真正的测试:在NetscapNavigator中,可选择Edit->Preference,然后从Advanced类中选择Proxies而进行代理设置。选择ManualProxyConfiguration然后单击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:
aclBadWordsurl_regexfoobar

这条规则作用于http://foo.deepwell.com/pictures和http://www.thekennedycompound.com/ourbar.jpg,因为这两个URL包含了BadWords所定义的两个单词。
在squid.conf文件中添加下面的行,它可以防止用户访问任何匹配上述规则的URL:
http_accessdenyBadWords

图标注意几乎每个管理员在使用单词式ACL时,都会遇到一些情况,这些情况下不能简单地使用单词。比如,如果你要禁止用户访问包含有“sex”的站点,则同样也会禁止他们访问www.buildersexchange.com这样的站点。因为“buildersexchange”刚好属于这个由“sex”定义的范畴。

因为Squid功能的所有方面均受到squid.conf文件的控制,因此用户可通过编辑该文件而调整Squid以满足自己的需求。
比如,添加如下配置行:
cach_mem16MB

将允许Squid使用16MB的内存来保存Web页。经过不断尝试,就可以找出适合自己的不同数量。

图标注意cache_mem并不是Squid所消耗的内存总量,它只是Squid用来保存Web页图像等的内存最大值。Squid的文档中说,Squid可能会消耗这一数量的三倍多的内存。

使用如下配置行:
emulate_httpd_logon

能够让/var/log/squid中日志文件的格式类似Web服务器的日志文件格式。这样,用户可以使用Web统计程序,例如Analog或Webtrends来分析日志,从而了解用户的使用情况。
某些FTP服务器在以匿名方式登录时需要输入e-mail地址作为口令。通过将ftp_user设置为有效的e-mail地址,可以让FTP会话另一端的服务器接收到期望的数据,例如:
[email protected]

你可能想使用代理防火墙管理员的地址,但这可能会导致外部FTP管理员与你联系时出现问题。
如果URL页没有被找到,则可以推断该页不会在近期出现。通过将negative_ttl设置为期望的分钟数,可以控制Squid记住某页没有找到的时间,例如:
negative_ttl2minutes

默认值为5分钟,但如果不想禁止的话,笔者建议减小到两分钟或一分钟,因为用户希望代理能够尽量透明。如果用户正在查找一个已知存在的页,则代理不应该在该页能够实际得到的情况下报告找不到。
[email protected]

将cache_mgr设置为自己的e-mail地址,可让Squid在检测到缓存问题时向你发送e-mail。
cache_effective_usernobody
cache_effective_groupnobody

这两行非常重要,如果以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缓存。