基于 Linux 的 Squid 代理实现与应用
|
|
|
作者:internet 来源:internetlove 加入时间:2005-8-29 |
|
摘要:
基于 Linux 的 Squid 代理实现与应用
A:问题的提出:随着Internet的迅速发展,宽带网络的接入增多,Internet用户的数量也迅速膨胀,IP地址资源日趋紧张,特别是对于大中专院校和中小型企业更加需要解决IP资源紧张的问题。笔者结合实际工作中的经验,总结了一套在Linux操作系统下用Squid代理来解决这个问题的办法。
目前,我们大多数用户得到的IP都是C类... |
转载:转载请保留本信息,本文来自
http://www.51dibs.com/info/19488.htm |
|
基于 Linux 的 Squid 代理实现与应用
A:问题的提出:随着Internet的迅速发展,宽带网络的接入增多,Internet用户的数量也迅速膨胀,IP地址资源日趋紧张,特别是对于大中专院校和中小型企业更加需要解决IP资源紧张的问题。笔者结合实际工作中的经验,总结了一套在Linux操作系统下用Squid代理来解决这个问题的办法。
目前,我们大多数用户得到的IP都是C类IP,除了满足服务器使用真实IP之外,所剩余的IP就很少了,根本无法满足个人用户(比如一个校园网的个人用户可能就有数千人)的需要。这个时候,我们就需要用到代理服务器了。那么,代理服务器是如何工作的呢?我们可以在服务器上安装两块网卡,一块网卡(eth0)做为公网连接用,另外一块网卡(eth1)作为内网连接用。然后用户安装代理服务器软件─Squid,这样就可以使用私有IP地址作为内部网络的地址,通过代理服务器的外部网卡,实现透明代理,达到内部网络受保护的目的,使用户在不自觉的情况下轻松上网。
得到软件并正确安装
本文中提到的Squid是一款优秀的开放源代码的免费软件,可以运行于多种系统平台上,各位读者可以在http://www.Squid-cache.org站点下载。假若您的服务器是Redhat Linux 7,可以按下面步骤操作(基于源代码包的安装):
1.从http://www.Squid-cache.org网站下载“Squid-2.4.STABLE4-src.tar.gz”;
2.将该文件拷贝到/usr/local目录;
3.解开该文件:
$tar xvzf Squid-2.4.STABLE4-src.tar.gz;
4.在/usr/local生成一个新的目录“Squid-2.4.STABLE4”;
5.进入该目录,即键入“cd Squid-2.4.STABLE4”;
6.执行“./configure”,可以用“./confgure --prefix=/usr/local/Squid”指定安装目录(根据用户习惯可以随意指定目录),系统缺省安装目录为“/usr/local/Squid”;
7.运行“make”和“make install”;
8.安装结束后,Squid的可执行文件在安装目录的bin子目录下,配置文件在etc子目录下。
这样,代理软件就安装完毕了。当然,您还可以下载Squid的rpm安装包,同样可以在Squid的网站上找到“Squid-2.4.STABLE4-8.i386.rpm”,
然后把该文件放在“/usr/local/”之下,再执行
rpm -ivh Squid-2.2.STABLE4-8.i386.rpm
就可以轻松地完成安装了。
设置代理服务器
在默认安装的情况下,Squid的主配置文件是“/usr/local/Squid/etc/Squid.conf”,我们可以用Linux下的编辑工具vi对“Squid.conf”文件进行修改,以完成符合我们自己要求的配置。另外,值得注意的是,我们还要执行“#/usr/local/Squid/bin/Squid -z”,手工建立Squid的缓存目录“/usr/local/Squid/cache”。
访问控制
使用访问控制特性,可以控制在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等等。Squid访问控制有两个要素:ACL元素和访问列表。访问列表可以允许或拒绝某些用户对此服务的访问。
下面列出了一些重要的ACL元素类型:
src—源地址(即客户机IP地址)
dst—目标地址(即服务器IP地址)
srcdomain—源名称(即客户机名称)
dstdomain—目标名称(即服务器名称)
time—一天中的时刻和一周内的一天
url_regex—URL规则表达式匹配
urlpath_regex—URL-path规则表达式匹配,略去协议和主机名
proxy_auth—通过外部程序进行用户验证
ACL声明的格式如下:
acl aclname acltype string1 ... | “file”
其中的“aclname”可以是任一个在ACL中定义的名称。
任何两个ACL元素不能使用相同的名字。每个ACL由列表值组成。当进行匹配检测的时候,多个值由逻辑或运算连接,即任一ACL元素的值被匹配,则这个ACL元素即被匹配。
并不是所有的ACL元素都能使用访问列表中的全部类型。不同的ACL元素写在不同行中,Squid将把它们组合在一个列表中。我们可以使用许多不同的访问条目。下面列出我们将要用到的几个:
请记住列表中的规则总是遵循由上而下的顺序。
1、找到“http_access deny all”将其改为“http_access allow all”即令所有的计算机都能透过代理服务访问互联网资源;
2、acl allow_ip src 172.16.250.250/16
http_access allow allow_ip
# 以上两行是基于IP的访问控制。
acl toobig urlpath_regex \.mpg$ \.mpeg$ \.mp3$ \.rm$ \.au$ \.iso$
http_access deny toobig
# 以上两行是基于URL的访问控制,过滤掉含有以上后缀的文件。
http_port 3128
# HTTP协议代理默认代理端口(也可以这样设置http_port 172.16.250.250:3128 表示基于IP和端口的监听,这样对于有两块网卡的代理服务器,可以制定IP通过代理)。
cache_mem 32 MB
# 开辟一块内存区域作为缓冲。
cache_dir ufs /home/Squid/cache 1024 16 256
# 开辟一块硬盘空间,作为硬盘缓冲区,这块区域的分布是连续的,逻辑关系由管理员设定。
cache_access_log /var/log/Squid/access.log
# 该log文件是用来描述每次客户请求HTTP的内容,并指定存放路径。
cache_log /var/log/Squid/cache.log
# 用于描述当Squid守护进程启动时,可看到有多少内存、交换空间,高速缓存目录的位置,所接受的连接类型及接受连接的端口。
cache_store_log /var/log/Squid/store.log
# 用于描述页面从高速缓存中被调入调出的情况。
pid_filename /var/run/Squid.pid
# 管理员可以通过查看此文件了解当前执行的Squid进程PID。
cache_mgr [email protected]
# 设置cache管理员的邮箱地址。
reference_age 7 days
# 设置缓冲区的更新周期。
maximum_object_size 4096 KB
# 设置允许被缓存的一次性最大请求。
3、修改完配置文件执行“/usr/local/Squid/bin/Squid restart”。
另外,Squid的日志文件会逐渐变得很大,一般我们都要设置好自动清理日志,在“cron”里边加上这样两句:
01 1 * * 1,4 /Squid/bin/Squid -k rotate
05 1 * * 2,6 rm -f /Squid/logs/*0
这样轮替下来的日志就会自动被删除掉。
|
|
|
|
相关文章:
相关软件:
|