squid服务的应用转.docx

上传人:b****7 文档编号:15687386 上传时间:2023-07-06 格式:DOCX 页数:25 大小:29.75KB
下载 相关 举报
squid服务的应用转.docx_第1页
第1页 / 共25页
squid服务的应用转.docx_第2页
第2页 / 共25页
squid服务的应用转.docx_第3页
第3页 / 共25页
squid服务的应用转.docx_第4页
第4页 / 共25页
squid服务的应用转.docx_第5页
第5页 / 共25页
squid服务的应用转.docx_第6页
第6页 / 共25页
squid服务的应用转.docx_第7页
第7页 / 共25页
squid服务的应用转.docx_第8页
第8页 / 共25页
squid服务的应用转.docx_第9页
第9页 / 共25页
squid服务的应用转.docx_第10页
第10页 / 共25页
squid服务的应用转.docx_第11页
第11页 / 共25页
squid服务的应用转.docx_第12页
第12页 / 共25页
squid服务的应用转.docx_第13页
第13页 / 共25页
squid服务的应用转.docx_第14页
第14页 / 共25页
squid服务的应用转.docx_第15页
第15页 / 共25页
squid服务的应用转.docx_第16页
第16页 / 共25页
squid服务的应用转.docx_第17页
第17页 / 共25页
squid服务的应用转.docx_第18页
第18页 / 共25页
squid服务的应用转.docx_第19页
第19页 / 共25页
squid服务的应用转.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

squid服务的应用转.docx

《squid服务的应用转.docx》由会员分享,可在线阅读,更多相关《squid服务的应用转.docx(25页珍藏版)》请在冰点文库上搜索。

squid服务的应用转.docx

squid服务的应用转

squid服务的应用[转]

squid服务的应用

初始化cache

#/s/squid/sbin/squid-z

启动squid

#/s/squid/etc/rc.d/squid.shstart

@设置ipfilter

为了实现透明的功能,需要将所有对80端口的请求转到squid的3128端口上,以实现对客户端透明的功能。

在/etc/ipnat.rules中加入:

rdrfxp10.0.0.0/0port80->127.0.0.13128

刷新ipnat配置:

#ipnat-Cf/etc/ipnat.rules

一切完成,客户端无需任何设置,根本感觉不到代理的存在,而且访问速度明显变快透明代理

httpd_accel_hostvirtual

httpd_accel_port80

httpd_accel_with_proxyon

httpd_accel_user_host_headeron

在Linux上,可以用iptables/ipchains直接将对Web端口80的请求直接转发到Squid端口3128,由Squid接手,而用户浏览器仍然认为它访问的是对方的80端口。

例如以下这条命令:

iptables-tnat-APREROUTING-s192.168.0.200/32-ptcp--dport80-jREDIRECT3128

就是将192.168.0.200的所有针对80端口的访问重定向到3128端口。

普通代理服务器

在这个例子中,代理服务器同时也是网关,内部网络接口eth0的IP地址为192.168.0.1,外部网络接口eth1的IP地址为202.103.x.x。

下面是一个基本的代理所需要配置选项:

http_port192.168.0.1:

3128

默认端口是3128,当然也可以是任何其它端口,只要不与其它服务发生冲突即可。

为了安全起见,在前面加上IP地址,Squid就不会监听外部的网络接口。

下面的配置选项是服务器管理者的电子邮件,当错误发生时,该地址会显示在错误页面上,便于用户联系:

cache_mgr

start@以下这些参数告诉Squid缓存的文件系统、位置和缓存策略:

cache_dirufs/var/squid

cache_mem32MB

cache_swap_low90

cache_swap_high95

  在这里,Squid会将/var/squid目录作为保存缓存数据的目录,每次处理的缓存大小是32兆字节,当缓存空间使用达到95%时,新的内容将取代旧的而不直接添加到目录中,直到空间又下降到90%才停止这一活动。

如果不想Squid缓存任何文件,如某些存储空间有限的专有系统,可以使用null文件系统(这样不需要那些缓存策略):

cache_dirnull/tmp

  下面的几个关于缓存的策略配置中,较主要的是第一行,即用户的访问记录,通过分析它来了解所有用户访问的详尽地址

cache_access_log/var/squid/access.log

cache_log/var/squid/cache.log

cache_store_log/var/squid/store.log

  下面这行配置是在较新版本中出现的参数,告诉Squid在错误页面中显示的服务器名称:

visible_hostnameNo1.proxy

  以下配置告诉Squid如何处理用户,对每个请求的IP地址作为单独地址处理:

client_mask255.255.255.255################################################################################

第4章快速配置向导

4.1squid.conf语法

Squid的配置文件相对规范。

它与其他许多unix程序相似。

每行以配置指令开始,后面跟着数字值或关键字。

在读取配置文件时,squid忽略空行和注释掉的行(以#开始)。

如下是一些配置行示例:

cache_log/squid/var/cache.log

#definethelocalhostACL

aclLocalhostsrc127.0.0.1/32

connect_timeout2minutes

log_fqdnon

某些指令取唯一值。

在这些情形下,重复赋予该指令不同的值,将覆盖前面的值。

例如,

下面是一个连接超时值。

第一行无效,因为第二行覆盖了它:

connect_timeout2minutes

connect_timeout1hour

另外,某些指令取列表值。

在这些情形下,每一个新增的值都有效。

"扩展方式"指令以这种方法工作:

extension_methodsUNGET

extension_methodsUNPUT

extension_methodsUNPOST

对这些基于列表的指令,你通常能在同一行中赋予多个值:

extension_methodsUNGETUNPUTUNPOST

许多指令有通用类型。

例如,连接超时值是一个时间规范,在数字后面跟着时间单元。

例如:

connect_timeout3hours

client_lifetime4days

negative_ttl27minutes

类似的,大量的指令指向文件大小或者内存额度。

例如,你可以这样编写大小规范:

十进制数字后面跟bytes,KB,MB或GB.例如:

minimum_object_size12bytes

request_header_max_size10KB

maximum_object_size187MB

另一种值得提起的类型是触发器,它的值是on或者off。

许多指令使用该类型。

例如:

server_persistent_connectionson

strip_query_termsoff

prefer_directon

通常,配置文件指令能以任何顺序出现。

然而,如果某个指令指向的值被其他指令所定义,那么顺序就很重要。

访问控制列表是个好的例子。

acl被用在http_access规则之前必须被定义:

aclFoosrc1.2.3.4

http_accessdenyFoo

squid.conf文件里的许多东西是大小写敏感的,例如指令名。

你不能将http_port写成HTTP_port。

默认的squid.conf文件包含了对每个指令的大量注释,以及指令的默认值。

例如:

#TAG:

persistent_request_timeout

#HowlongtowaitforthenextHTTPrequestonapersistent

#connectionafterthepreviousrequestcompletes.

#

#Default:

#persistent_request_timeout1minute

每次安装squid后,当前默认配置文件存放在$prefix/etc目录下的squid.conf.default。

既然指令每次都有所改变,你能参考该文档,以获取最近的更新。

该章剩下的部分是关于在开始运行squid之前,你必须知道的少数指令。

4.2UserIDs

你可能知道,unix进程和文件拥有文件和组属主的属性。

你必须选择某个用户和组给squid。

该用户和组的组合,必须对大部分squid相关的文件和目录有读和写的权限。

我高度推荐创建名为"squid"的用户和组。

这避免了某人利用squid来读取系统中的其他文件。

假如不止一个人拥有对squid的管理权限,你可以将他们加到squid组里。

unix进程继承了它们父进程的属主属性。

那就是说,假如你以joe用户来启动squid,squid也以joe来运行。

假如你不想以joe来运行squid,你需要预先改变你的用户ID。

这是su命令的典型功能。

例如:

joe%su-squid

squid%/usr/local/squid/sbin/squid

不幸的是,运行squid并非总是如此简单。

在某些情况下,你必须以root来启动squid,这依赖于你的配置。

例如,仅仅root能绑定TCP套接字到特权端口上,如80。

假如你必须以root来启动squid,你必须设置cache_effective_user指令。

它告诉squid,在执行完需要特别权限的任务后,变成哪个用户。

例如:

cache_effective_usersquid

你提供的该名字必须是有效用户(在/etc/passwd文件里)。

请注意仅仅当你以root来启动squid时,你才需要用到该指令。

仅仅root有能力来随意改变用户身份。

假如你以joe来启动squid,它不能改变到squid用户。

你可能尝试不设置cache_effective_user,直接以root来运行squid。

假如你试过,你会发现squid拒绝运行。

这违背了安全规则。

假如外部攻击者有能力危及或利用squid,他能获取对系统的全部访问权。

尽管我们努力使squid安全和少bug,但还是稳重点好。

假如你没有设置cache_effective_user,以root来启动squid,squid使用nobody作为默认值。

不管你选择什么用户ID,请确认它有对下面目录的读访问权:

$prefix/etc,$prefix/libexec,$prefix/share。

该用户ID也必须有对日志文件和缓存目录的写访问

权。

squid也有一个cache_effective_group指令,但你也许不必设置它。

默认的,squid使用cache_effective_user的默认组(从/etc/passwd文件读取)。

4.3端口号

http_port指令告诉squid在哪个端口侦听HTTP请求。

默认端口是3128:

http_port3128

假如你将squid作为加速器运行(见15章),你也许该将它设为80。

你能使用附加的http_port行,来指示squid侦听在多个端口上。

假如你必须支持客户组(它们被配置得不一致),这点就经常有用。

例如,来自某个部门的浏览器发送请求到3128,

然而另一个部门使用80端口。

简单的将两个端口号列举出来:

http_port3128

http_port8080

你也能使用http_port指令来使squid侦听在指定的接口地址上。

当squid作为防火墙运行时,它有两个网络接口:

一个内部的和一个外部的。

你可能不想接受来自外部的http请求。

为了使squid仅仅侦听在内部接口上,简单的将IP地址放在端口号前面:

http_port192.168.1.1:

3128

4.4日志文件路径

我将在第13章讨论所有squid的日志细节。

你现在你关注的唯一事情是,squid将它的日志放在何处。

默认的日志目录是squid安装位置下的logs目录。

例如,假如你在./configure

时没有使用--prefix=选项,那么默认的日志文件路径是/usr/local/squid/var/logs。

你必须确认日志文件所存放的磁盘位置空间足够。

在squid写日志时如果接受到错误,它会退出和重启。

该行为的主要理由应引起你的注意。

squid想确认你不会丢失任何重要的日志信息,特别是你的系统被滥用或者被攻击时。

squid有三个主要的日志文件:

cache.log,access.log,store.log.第一个文件即cache.log,包含状态性的和调试性的消息。

当你刚开始运行squid时,你应密切的关注该文件。

假如squid拒绝运行,理由也许会出现在cache.log文件的结尾处。

在正常条件下,该文件不会变得很大。

也请注意,假如你以-s选项来运行squid,重要的cache.log消息也可被送到你的syslog进程。

通过使用cache_log指令,你可以改变该日志文件的路径:

cache_log/squid/logs/cache.log

access.log文件包含了对squid发起的每个客户请求的单一行。

每行平均约150个字节。

也就是说,在接受一百万条客户请求后,它的体积约是150M。

请使用cache_access_log指令来改变该日志文件的路径:

cache_access_log/squid/logs/access.log

假如因为某些理由,你不想squid记录客户端请求日志,你能指定日志文件的路径为/dev/null.

store.log文件对大多数cache管理员来说并非很有用。

它包含了进入和离开缓存的每个目标的记录。

平均记录大小典型的是175-200字节。

然而,squid不在store.log里对cache点击创建接口,所以它比access.log包含少得多的记录。

请使用cache_store_log指令来改变它的位置:

cache_store_log/squid/logs/store.log

通过指定路径为none,你能轻易的完全禁止store.log日志:

cache_store_lognone

假如你不小心,squid的日志文件增加没有限制。

某些操作系统对单个文件强制执行2G的大小限制,即使你有充足的磁盘空间。

超过该限制会导致写错误,这样squid就会退出。

为了保证日志文件大小合理,你应创建任务来有规律的重命名和打包日志。

squid有内建功能来使这个容易做到。

请见13.7章关于日志轮循的解释。

4.5访问控制

在第6章里有更多的关于访问控制的描述。

现在,我只讲述少量的访问控制方法,以使热心的读者能快速开始使用squid。

squid默认的配置文件拒绝每一个客户请求。

在任何人能使用代理之前,你必须在squid.conf文件里加入附加的访问控制规则。

最简单的方法就是定义一个针对客户IP地址的ACL和一个访问规则,告诉squid允许来自这些地址的HTTP请求。

squid有许多不同的ACL类型。

src类型匹配客户IP地址,squid会针对客户HTTP请求检查http_access规则。

这样,你需要增加两行:

aclMyNetworksrc192.168.0.0/16

http_accessallowMyNetwork

请将这些行放在正确的位置。

http_access的顺序非常重要,但是acl行的顺序你不必介意。

你也该注意默认的配置文件包含了一些重要的访问控制,你不应该改变或删除它们,除非你完全理解它们的意义。

在你第一次编辑squid.conf文件时,请看如下注释:

#INSERTYOUROWNRULE(S)HERETOALLOWACCESSFROMYOURCLIENTS

在该注释之后,以及"http_accessdenyall"之前插入你自己的新规则。

为了彻底说明,如下是一个合理的初始访问控制配置,包括推荐的默认控制和早先的例子:

aclAllsrc0/0

aclManagerprotocache_object

aclLocalhostsrc127.0.0.1/32

aclSafe_portsport8021443563702102804885917771025-65535

aclSSL_ports443563

aclCONNECTmethodCONNECT

aclMyNetworksrc192.168.0.0/16

http_accessallowManagerLocalhost

http_accessdenyManager

http_accessdeny!

Safe_ports

http_accessdenyCONNECT!

SSL_ports

http_accessallowMyNetwork

http_accessdenyAll

4.6可见主机名

希望你不必担心visible_hostname指令。

然而,假如squid不能发现它所运行的机器的主机名,你就必须设置它。

如果发生这样的事,squid抱怨和拒绝运行:

%squid-Nd1

FATAL:

Couldnotdeterminefullyqualifiedhostname.Pleaseset'visible_hostname'

有大量的理由使squid需要知道主机名:

+主机名出现在squid的错误消息里,这帮助用户验证潜在问题的源头。

+主机名出现在squid转发的cache单元的HTTPVia头里。

当请求到达原始主机时,Via头包含了在传输过程中涉及的代理列表。

squid也使用Via头来检测转发环路。

我将在第10章里讨论转发环路。

squid对特定事务使用内部URL,例如FTP目录列表的图标。

当squid对FTP目录产生HTML页面时,它插入小图标用以指明该目录中的文件类型。

图标URL包含了cache的主机名,以便web浏览器能直接从squid请求它们。

每个从squid响应的HTTP回复包含了X-Cache头。

这并非官方HTTP头。

它是一个扩展头,用以指明该响应是cache点击还是cache丢失。

既然请求和响应可能经过多个cache,每个X-Cache头包含了cache报告点击或丢失的名字。

如下是一个通过2个cache的响应示例:

HTTP/1.0200OK

Date:

Mon,29Sep200322:

57:

23GMT

Content-type:

text/html

Content-length:

733

X-Cache:

HITfrom

X-Cache:

MISSfrom

squid在启动时试图自动获取主机名。

首先它调用gethostname()函数,这通常能返回正确的主机名。

接着,squid调用gethostbyname()函数尝试对主机名进行DNS查询。

该函数典型的返回IP地址和系统的规范名。

假如gethostbyname()成功,squid在错误消息里,Via头里等地方使用这个规范名。

因为大量的理由,squid可能不能检测到它的规范主机名,包括:

+主机名可能未设置。

+主机名可能从DNS区域或/etc/hosts文件里丢失。

squid系统的DNS客户端配置可能不正确或丢失。

在unix系统上,你该检查/etc/resolv.conf和/etc/host.conf文件。

假如你看到上述的致命错误,你必须修正主机名和DNS信息,或者显式的给squid指明主机名。

在大多数情况下,请确认"hostname"命令返回一个完全规范的主机名,并且在/etc/hosts文件里增加这个接口。

假如这样不成功,请在squid.conf里设置可见主机名:

visible_hostnamesquid.packet-

4.7管理联系信息

你应该设置cache_mgr指令作为对用户的帮助。

它是一个email地址,假如问题发生,用户能写信给它。

cache_mgr地址默认出现在squid的错误消息里。

例如:

cache_mgr

squid@web-

4.8下一步

在创建了初步的配置文件后,你多少准备首次运行squid了。

请遵循下面章节的建议。

当你掌握了启动和停止squid后,你该花费一些时间来改善配置文件。

你可能想增加更高级的访问控制,这在第6章里有描述。

既然我在这里没有讨论磁盘cache,你该花些时间阅读第7和第8章。

第5章运行Squid

5.1squid命令行选项

在开始其他事情之前,让我们先看一下squid的命令行选项。

这里的许多选项你从不会使用,另外有些仅仅在调试问题时有用。

-aport

指定新的http_port值。

该选项覆盖了来自squid.conf的值。

然而请注意,你能在squid.conf里指定多个值。

-a选项仅仅覆盖配置文件里的第一个值。

(该选项使用字母a是因为在Harvestcache里,HTTP端口被叫做ASCII端口)

-dlevel

让squid将它的调试信息写到标准错误(假如配置了,就是cache.log和syslog)。

level参数指定了显示在标准错误里的消息的最大等级。

在多数情况下,d1工作良好。

请见16.2章关于调试等级的描述。

-ffile

指定另一个配置文件。

-h

显示用法。

-kfunction

指示squid执行不同的管理功能。

功能参数是下列之一:

reconfigure,rotate,shutdown,interrupt,kill,debug,check,orparse。

+reconfigure导致运行中的squid重新读取配置文件。

+rotate导致squid滚动它的日志,这包括了关闭日志,重命名,和再次打开它们。

+shutdown发送关闭squid进程的信号。

+interrupt立刻关闭squid,不必等待活动会话完成。

+kill发送KILL信号给squid,这是关闭squid的最后保证。

+debug将squid设置成完全的调试模式,假如你的cache很忙,它能迅速的用完你的磁盘空间。

+check简单的检查运行中的squid进程,返回的值显示squid是否在运行。

+最后,parse简单的解析squid.conf文件,如果配置文件包含错误,进程返回非零值。

-s

激活将日志记录到syslog进程。

squid使用LOCAL4syslog设备。

0级别调试信息以优先级LOG_WARNING被记录,1级别消息以LOG_NOTICE被记录。

更高级的调试信息不会被发送到syslogd.你可以在/etc/syslogd.conf文件里使用如下接口:

local4.warning/var/log/squid.log

-uport

指定另一个ICP端口号,覆盖掉squid.conf文件里的icp_port。

-v

打印版本信息。

-z

初始化cache,或者交换,目录。

在首次运行squid,或者增加新的cache目录时,你必须使用该选项。

-C

阻止安装某些信号句柄,它们捕获特定的致命信号例如SIGBUS和SIGSEGV。

正常的,这些信号被squid捕获,以便它能干净的关闭。

然而,捕获这些信号可能让以后调试问题困难。

使用该选项,致命的信号导致它们的默认动作,通常是coredump。

-D

禁止初始化DNS测试。

正常情况下,squid直到验证它的DNS可用才能启动。

该选项阻止了这样的检测。

你也能在squid.conf文件里改变或删除dns_testnames选项。

-F

让squid拒绝所有的请求,直到它重新建立起存储元数据。

假如你的系统很忙,该选项可以减短重建存储元数据的时间。

然而,如果你的c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2