欢迎光临
我们一直在努力

用Squid实现代理上网及计费-网管专栏,代理服务

建站超值云服务器,限时71元/月

—- 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

—- 生成的report如图1和图2所示(只保留了前5个用户的数据),可以用浏览器进行浏览。
(作者:陈征 周春琦)

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用Squid实现代理上网及计费-网管专栏,代理服务
分享到: 更多 (0)