当前位置: 首页 > 图文教程 > 服务器 > 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服务器 中的 架设Squid代理服务器


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


作者:D.S.Oberoi

Squid已经安装了吗?
Squid的rpm文件已经和RedHat7.1捆绑发行了,在安装系统的时候,如果在Networks选项中选中的
话,它会自动安装在系统上。您可以用下面的命令检查您的系统中是否已经安装了Squid:

rpm-qsquid


Squid的最新版本可以在Squid主页或它的镜像站点得到。Squid可以用下述命令安装在系统上:

rpm-ivhsquid-2.3.STABLE4-10.i386.rpm



配置Squid
Squid的定制是通过编辑它的配置文件squid.conf来实现的,squid.conf文件通常在/etc/squid目录
下。这个配置文件内容很多,但好在它的每个选项都有详尽的说明。

首先要修改的是http_port,这个选项指定了Squid监听客户请求的端口,默认值是3128。要使用代理
功能,这个端口值要和运行Squid的机器的IP地址一起使用,可以修改成下面这样:

http_port192.168.0.1:8080
上述声明表示Squid绑定在IP地址192.168.0.1上,端口为8080。端口可以设置为任意值,但要确认
没有其他程序会使用同样的端口。其他的服务请求的端口设置也可以设为类似的配置。
访问控制
使用访问控制特性,可以控制在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等等。Squid访问控制有两个要素:ACL元素和访问列表。访问列表可以允许或拒绝某些用户对此服务的访问。

下面列出一些重要的ACL元素类型

*src:源地址(即客户机IP地址)
*dst:目标地址(即服务器IP地址)
*srcdomain:源名称(即客户机名称)
*dstdomain:目标名称(即服务器名称)
*time:一天中的时刻和一周内的一天
*url_regex:URL规则表达式匹配
*urlpath_regex:URL-path规则表达式匹配,略去协议和主机名
*proxy_auth:通过外部程序进行用户验证
*maxconn:单一IP的最大连接数

为了使用控制功能,必须先设置ACL规则并应用。ACL声明的格式如下:

aclacl_element_nametype_of_acl_elementvalues_to_acl
注:

1.acl_element_name可以是任一个在ACL中定义的名称。
2.任何两个ACL元素不能用相同的名字。
3.每个ACL由列表值组成。当进行匹配检测的时候,多个值由逻辑或运算连接;换言之,即任一ACL
元素的值被匹配,则这个ACL元素即被匹配。
4.并不是所有的ACL元素都能使用访问列表中的全部类型。
5.不同的ACL元素写在不同行中,Squid将把它们组合在一个列表中。

我们可以使用许多不同的访问条目。下面列出我们将要用到的几个:

*http_access:允许HTTP访问。这个是主要的访问控制条目。
*no_cache:定义对缓存请求的响应。

访问列表的规则由一些类似'allow'或'deny'的关键字构成,用以允许或拒绝向特定或一组ACL元素提供服务。
注:

1.这些规则按照它们的排列顺序进行匹配检测,一旦检测到匹配的规则,匹配检测就立即结束。
2.一个访问列表可以又多条规则组成。
3.如果没有任何规则与访问请求匹配,默认动作将与列表中最后一条规则对应。
4.一个访问条目中的所有元素将用逻辑与运算连接:
http_accessAction声明1AND声明2AND声明OR.
http_accessAction声明3
多个http_access声明间用或运算连接,但每个访问条目的元素间用与运算连接。
5.请记住列表中的规则总是遵循由上而下的顺序。


回到配置Squid
Squid默认不做任何用户访问控制。若要允许某个访问,必须进行定制规则。在squid.conf中http_accessdeny行前输入下述文字:

aclmynetwork192.168.0.1/255.255.255.0
http_accessallowmynetwork
mynetwork是acl名称,下一行则是适用于特定acl(即mynetwork)的规则。192.168.0.1指明是网络中掩码为255.255.255.0的子网。mynetwork主要是为了给出网络上一组机器,下一条规则则允许这些
机器访问http服务。上述修改配合http_port就可以让Squid很好的工作起来了。修改完成后,Squid
可以用下述命令启动:

servicesquidstart
注:
Squid也可以在系统启动的时候自动运行,方法是在ntsysv或setup(系统服务菜单)中打开Squid。在
对配置文件做了任何更改之后,当前正运行的Squid进程必须重新启动。可以用下面的命令来完成:

1.servicesquidrestart或
2./etc/rc.d/init.d/squidrestart


配置客户端
由于客户端的请求是送到代理服务器的特定端口的,因此,客户端也要做相应配置。在继续下一步之前,请
确认要访问代理服务器的客户端已经连接在局域网中并已分配了有效的IP地址,请确认它们都能ping通
运行了Squid的Linux服务器。
在InternetExplorer下的配置:

1.点击菜单上的工具->Internet选项
2.选择连接并单击局域网设置
3.选中使用代理服务器输入上述代理服务器的IP地址和端口。


在NetscapeNavigator下的配置:

1.点击菜单上的编辑(Edit)->首选项(Preference)->高级(Advanced)->代理服务器(Proxies)。
2.选中手动配置代理服务器(ManualProxyConfiguration)。
3.点击查看(View)并
4.输入上述代理服务器的IP地址和端口。


使用访问控制
多个访问控制及其规则为客户端访问控制提供了一种灵活的机制。下面给出通常所用到的例子:

1.允许列表中的机器访问Internet。

aclallowed_clientssrc192.168.0.10192.168.0.20192.168.0.30
http_accessallowallowed_clients
http_accessdeny!allowed_clients
这个规则只允许IP地址为192.168.0.10、192.168.0.20及192.168.0.30的机器
访问Internet,其他IP地址的机器则都被拒绝访问。

2.限制访问时段。

aclallowed_clientssrc192.168.0.1/255.255.255.0
aclregular_daystimeMTWHF10:00-16:00
http_accessallowallowed_clientsregular_days
http_accessdeny!allowed_clients
这个规则允许子网192.168.0.1中的所有客户机在周一到周五的上午10:00到下午4:00
访问Internet。

3.为不同的客户机分配不同的访问时段。

aclhosts1src192.168.0.10
aclhosts2src192.168.0.20
aclhosts3src192.168.0.30
aclmorningtime10:00-13:00
acllunchtime13:30-14:30
acleveningtime15:00-18:00
http_accessallowhost1morning
http_accessallowhost1evening
http_accessallowhost2lunch
http_accessallowhost3evening
http_accessdenyall
在这个规则中,主机host1可以在morning和evening时段访问Internet,主机
host2和host3分别只能在lunch和evening时段访问Internet。

注:
一个访问条目中所有的元素之间用与运算按下述方式连接:

http_accessActionstatement1ANDstaement2ANDstatementOR.
多个http_access声明之间用或运算连接而每个访问条目中的元素用与运算连接,见
下:

http_accessallowhost1morningevening
无法在时段morning和时段evening同时进行(morningANDevening),这个表达
式将不会返回真值(TRUE),从而这个条目将不会引发任何动作。

4.站点屏蔽
Squid可以屏蔽某些特定站点或含有某些特定字词的站点。可以用下面的规则实现:

aclallowed_clientssrc192.168.0.1/255.255.255.0
aclbanned_sitesurl_regexabc.com*()(*.com
http_accessdenybanned_sites
http_accessallowallowed_clients
也可以用以屏蔽含有某些特定字词(比如说dummy、fake)的站点

aclallowed_clientssrc192.168.0.1/255.255.255.0
aclbanned_sitesurl_regexdummyfake
http_accessdenybanned_sites
http_accessallowallowed_machibes
在实际应用中,不需要把需屏蔽的所有站点或字词都列在上面,可以先保存在一个文件
中(请查看/etc目录中的banned.list文件)ACL将从这个文件中读出所需信息用以
屏蔽被禁止的站点。

aclallowed_clientssrc192.168.0.1/255.255.255.0
aclbanned_sitesurl_regex"/etc/banned.list"
http_accessdenybanned_sites
http_accessallowallowed_clients
5.优化
Squid可以通过使用maxconn元素来限制客户端连接的数目。要使用这个选项,必须
先允许client_db。

aclmynetwork192.168.0.1/255.255.255.0
aclnumconnmaxconn5
http_accessdenymynetworknumconn
注:
maxconnACL使用小于(less-than)对比。此ACL规则将在连接数大于设定值