中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 操作系统 > 服务器 > 代理服务器
用Squid实现代理上网及计费(转)
作者:未知 时间:2005-09-13 18:52 出处:ChinaUnix.net 责编:chinaitpower
              摘要:用Squid实现代理上网及计费(转)

用Squid实现代理上网及计费

---- IP紧缺是高速发展的网络面临的现实问题,我们该如何解决这 一问题?将只有内 
部IP的计算机通过一台具有标准IP作为代理服务器 的计算机连接到Internet上是解决此 
问题的一种绝妙手段。代理服务 器是数据的中转站,它可以将经过代理服务器的数据记 
录下来,为后 继的数据分析和计费提供服务与帮助。另外,借助代理服务器软件 (比 
如Squid)可以建立访问站点的缓存,从而让再次访问的用户能 够直接从缓存中调用数据, 
加快访问速度,减少重复的网络数据流 量。  

---- 由于Squid具有权限管理灵活、性能高和效率快等特点,应用较 为广泛,因此,我 
们将就代理服务器软件Squid在Linux、FreeBSD和 Unix应用中的认证问题进行讨论,同时 
还将介绍关于利用Squid辅助 软件实现代理上网与计费的具体方法。  

一、 获取Squid及相关的软件  

---- 从http://squid-cache.org/上获取Squid软件,从http:// web.onda.com.br/orso/ 
上获取htpasswd_plus和SQMGRLOG,并将它们 保存在/tmp目录下。  

二、在Linux下编译并安装Squid 

---- 我们假设软件环境为Redhat Linux 7.x,编译和安装Squid的操 作步骤如下。  

---- 1.下载最新版本的源文件Squid-2.3.STABLE4.src.tar.gz,并 将它放置在/tmp目 
录下。  

---- 2.以root身份创建用户squidadmin#adduser squidadmin  

---- 在缺省的情况下,同名组squidadmin已经被建立。Squid因为考 虑到安全问题,不 
能以root身份运行,所以从一开始就使用新建的用 户进行安装管理。  

---- 3.以squidadmin登录,对Squid源文件解包和安装。  

$cd /tmp 
$tar -zxvf squid* 
$cd squid* 
$./configure --prefix=/usr/local/squid  
进入Squid目录进行编译,考虑的选项是安装路径 
--prefix=/usr/local/squid。 
$make 
$make install 

---- 4.进入/usr/local/squid/bin目录,执行$./squid -z,创建 cache交换目录。至此, 
Squid已经安装在用户的系统上了。然而,要 让Squid正常运转,用户还需要做一些基本设 
置。Squid的运转只与/ usr/local/squid/etc/squid.conf有关,所有设置均在此文件中完  
成。  

三、Squid基本设置  

#Defaults: 
acl all src 0.0.0.0/0.0.0.0 
设置的规则在此处加入。 
http_access deny all 

---- 在缺省的情况下,有以上2条规则。当有请求未能匹配任何一条 用户定义的规则时, 
http_access deny all规则将被应用,这 样,http请求将被拒绝。  

---- 那么如何在Linux中设置Squid的用户认证存取控制呢?Squid用 access control list 
(缩写为acl)来管理规则。例如:  

acl aclname acltype string1 ... 
acl aclname acltype "file" 

---- aclname为用户定义规则的名字,acltype是可被Squid识别的类 别(主要有src、 
dst、proxy_auth、port和time...),string为用 户的设置,可以用"file"从外部文件 
调入设置。  

---- 1.如果用户喜欢弹出输入用户名及密码的方式,首先需要安装 认证程序。Squid 
的源文件包自带了几种认证程序,都在/tmp/squid- 2.3.STABLE4/auth_modules目录下。  

(1)$ cd /tmp/squid-2.3.STABLE4/auth_modules/NCSA  
$ make ncsa_auth 
(2)将生成的执行文件ncsa_auth拷贝到squid执行文件目录中。 
$ cp ncsa_auth /usr/local/squid/bin 
(3)用htpasswd_plus生成供Squid利用的用户名和密码认证数据文 件。 
$htpasswd_plus -c /usr/local/squid/etc/passwd 
passwd的格式如下。 
username1:SilykvIBT46C.:977867617:* 
username2:tV.8XcR8tgIqw:*:192.168.1.0 
username3:密码:失效时间:可以登录的IP 
若为*,则说明任何项都能与其匹配。另外还可以增加其他更多的用 户。 
$ htpasswd_plus /usr/local/squid/etc/passwd newusername 
(4)修改squid.conf设置 
authenticate program /usr/local/squid/bin/ncsa_auth 
/usr/local/squid/etc/passwd指定认证身份的内部程序。添加规则 如下。 
acl alloweduer proxy_auth username1 username2或者 
acl alloweduser proxy_auth REQUIRED http access allow alloweduser 

---- 关键字REQUIRED意味着任何合法的用户都可以认证身份,在其 他的acltype中也 
起同样的作用。  

---- 2.用IP限制Squid proxy的使用,设置内容如下。  

acl manager proto HTTP FTP … 
acl safeports port 80 21 443 563 70 210 1025-65535 … 
acl connect method CONNECT 
acl allowedIP src 202.120.x.x/255.255.255.224 
acl denyIP src 202.96.x.x/255.255.255.224 
acl allowedusers proxy_auth REQUIRED 
http_access deny !safeports 
#禁止来自!safeports的HTTP请求。 
http_access deny denyIP 
http_access allow allowedIP 
http_access allow allowedusers 

---- 这样,除了拒绝及允许的IP,其他的请求都将通过输入用户名 及密码来认证。 
如果用户不希望内部计算机访问某些网站(比如暴力 或色情网站),可以通过如下 
设置屏蔽这些站点。  

---- acl badip dst "/usr/local/squid/etc/somebadip"  

---- http_access deny badip  

---- 此处被拒绝的不是来源src的IP地址,而是目的dst的IP地址。 在文件somebadip 
中存储如下格式的一批IP地址:  

---- 24.244.192.0/255.255.240.0  

---- 61.128.0.0/255.252.0.0  

---- 请大家特别注意http语句的顺序,正是通过不同的次序,使得 我们可以进行灵活 
的配置,得到相应的服务。  

---- 3.其他的一些设置如下所示,其中的大多数可以不做修改,只 使用缺省值即可。  

http port 3128 
#HTTP协议的默认代理端口。 
cache mem 42MB 
#用一块内存作为缓冲。 
cache dir ufs /home/squid/cache 1024 16 256 

---- #硬盘缓冲区的大小,大小为1GB,一级目录16个,二级目录256 个。  

---- cache access log /var/log/squid/access.log  

---- #该log文件是用来描述每次客户请求HTTP内容时高速缓存命中 或未命中的项目,同 
时还描述提出请求的主机身份及它们所需要的内 容,它是用SQMGRLOG等软件分析记费的 
基础。  

---- cache log /var/log/squid/cache.log  

---- #用于描述当Squid守护进程启动时可以看到的内存容量、交换 空间的大小、高速缓 
存目录的位置、所接受的连接类型以及接受连接 的端口。  

---- cache_store_log /var/log/squid/store.log  

---- #用于描述页面从高速缓存中被调入调出的情况。  

pid filename /var/run/squid.pid 
#Squid进程的进程号。 
dns nameservers 192.x.x.1 
#定义域名解析服务器的地址。 
cache_mgr squidadmin@your.domain 
#cache管理员的邮件箱地址。 
reference age 1 week 
#设置缓冲区的更新周期。 
maximum object size 4096 KB 
#设置允许被缓存的一次性最大请求。 
cache_effective_user squidadmin squidadmin 
#以用户squidadmin的身份运行。 

四、用SQMGRLOG实现计费  

$cd /tmp 
$tar -zxvf sqmlog* 
$cd sqm* 
$./configure --enable-config=/usr/local/squid/ 
的选项主要有以下2项。 

---- 1. 语言  

---- 该语言不包含中文。事实上,它的语言部分是由English.h控制 的,可以汉化后 
对其进行编译和安装。  

---- --enable-language=English, Bulgarian_windows1251, Czech, Dutch, French,  
German, Hungarian, Indonesian, talian, apanese, Portuguese, Russian_Koi8,  
Russian_windows1251, Serbian, Spanish, Turkish default: English  

---- 2.安装目录  

---- --enable-config=/usr/local/squid/etc  

---- #笔者将SQMGRLOG的配置文件sqmgrlog.conf 放在与Squid的配 置文件相同的目录下。  

--enable-prefix=/usr/local/squid/bin 
#最终编译生成的运行文件sqmgrlog的放置目录。 
$make 
$make install 
最后,我们还要配置sqmgrlog.conf。 
access log /usr/local/squid/logs/access.log 
#设置Squid的使用记录文件access.log的所在地。 
output dir /home/squidadmin/public_html/squid-reports 
#生成report的输出目录。 
password /usr/local/squid/etc/passwd 
#只生成此passwd文件中指明的用户report。 
$./sqmgrlog

 yanguo66 回复于:2003-07-07 15:53:52
真不错!

 段誉 回复于:2003-07-07 17:49:56
没看完,先加精华,回头研究一下。

主题不错,很有“钱”途!

 workaholic 回复于:2003-07-08 09:28:48
真的很好啊!!顶!!

 flying4378 回复于:2003-07-16 14:18:44
请问客户端怎样使用联众游戏和用outlook收发外部邮件

 firer2000 回复于:2003-07-16 14:44:06
联合iptables做透明代理

 RootZero 回复于:2004-12-11 17:38:16
顶一下先

 ydh976 回复于:2005-01-03 22:19:00
这个方案有缺点吧,有一些不通squid代理上网的应用应该不能正常计费

 ljily000 回复于:2005-01-07 23:43:04
[quote:5d29749d55="ydh976"]这个方案有缺点吧,有一些不通squid代理上网的应用应该不能正常计费[/quote:5d29749d55]

是呀!若是上qq、msn呢?squid如何计费?

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有