分享
 
 
 

用Squid实现代理上网及计费

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

作者:percent100

一、 获取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个用户的数据),可以用浏览器进行浏览。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有