安装配置Squid

发表于:2007-07-04来源:作者:点击数: 标签:
安装配置Squid 软件环境:Redhat Linux 9 在Squid主页www.squid-cache.org下载最新的Squid 2.5-STABLE5进行编译。 步骤: 1.下载最新版本的源文件 Squid-2.5.STABLE5.src.tar.gz 放置于/usr/local目录下 2.登录作为root,执行下面的命令: cd /usr/local tar

安装配置Squid

软件环境:Redhat Linux 9

在Squid主页www.squid-cache.org下载最新的Squid 2.5-STABLE5进行编译。

步骤:

1.下载最新版本的源文件 Squid-2.5.STABLE5.src.tar.gz 放置于/usr/local目录下

2.登录作为root,执行下面的命令:

cd /usr/local

tar -zxvf Squid-2.5.STABLE5.src.tar.gz

生成解压缩文件Squid-2.5.STABLE5

进入Squid-2.5.STABLE5目录进行编译

#cd /usr/local/squid*

#./configure --prefix=/usr/local/squid 

#make

#make install

3.上面二步执行完毕,Squid整个程序应该被安装在/usr/local/squid目录下了,但仍需要做其余的动作。

4.进入目录/usr/local ,以root身份执行下面的命令,改变整个Squid目录的所有者为school:school

#cd /usr/local

#chown -R school:school squid

5.修改squid.conf的配置信息

#su school

$cd /usr/local/squid

$vi etc/squid.conf

http_port 8080

cache_peer 10.10.2.53 parent 6666 7 login=username:password default no-query

cache_mem 60 MB

cache_mgr zdysgs@zju.edu.cn

dns_nameservers 10.10.0.21

visible_hostname zdysgs.zju.edu.cn

cache_dir ufs /usr/local/squid/var/cache 500 16 256

http_aclearcase/" target="_blank" >ccess allow all

never_direct allow all

error_directory /usr/local/squid/share/errors/Simplify_Chinese

6.su作为school,进入/usr/local/squid/bin目录,执行#squid -z 创建cache交换目录

#su school

$cd /usr/local/squid/sbin

$./squid -z

$./squid

检查squid是否正常运行的命令

$.netstat -ntl

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN

以上信息表示squid已经正常启动

停止squid运行的命令:

$usr/local/squid/sbin -k shutdown

到现在为止,该代理服务器已经可以正常使用,但是不具有用户认证的功能,以下介绍了使用ncsa用户认证功能的实现

7.ncsa用户认证的实现

ncsa是squid源代码包自带的认证程序之一,下面我们以squid-2.5.STABLE5版本为例讲述ncsa的安装和配置。

1) 以school身份进入/usr/local/squid-2.5.STABLE5/helpers/basic_auth/NCSA目录。

% make

% make install

编译成功后,会生成ncsa_auth的可执行文件。//因为是以school用户编译的,所以生成的ncsa-auth属性为school

2) 拷贝生成的执行文件ncsa_auth到/usr/local/squid/bin目录

cp ncsa_auth /usr/local/squid/bin

3) 修改squid.conf中的相关选项如下所示:

auth_param basic program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd

4) 定义相关的用户类

acl auth_user proxy_auth username1 username2或者acl auth_user proxy_auth REQUIRED

注意,REQUIRED关键字指明了接收所有合法用户的访问。

5) 设置http_access

http_access allow auth_user

http_access deny all

6) 利用apache携带的工具软件htpasswd在/usr/local/squid/etc下生成密码文件并添加相应的用户信息。一般说来,该密码文件每行包含

一个用户的用户信息,即用户名和密码。

用htpasswd生成密码文件passwd并添加用户bye。

htpasswd -c /usr/local/squid/etc/passwd bye

然后重新启动squid,密码认证已经生效

8.客户端设置:ie->工具->internet选项->连接-> 局域网设置-> 代理服务器地址:10.71.65.110 端口:8080

9.备注

·http_port:设定Squid监听的端口,你最好设一个比较好记的端口号,以便在进行客户机配置

时容易记住。我的机器上端口号设的是8080。缺省为3128。

  ·cache_mem:设定Squid占用的物理内存,根据我的经验,cache_mem的大小不应超过你的服务

器物理内存的三分之一,否则将会影响机器的总体性能

  ·maximum_object_size:设定Squid可以接收的最大对象的大小。Squid缺省值为4M,我自己入

认为太大,你可以根据自己的需要进行设定。

  ·cache_dir:设定缓存的位置、大小。一般看起来形式如下

cache_dir /usr/local/squid/cache 100 16 256

/usr/local/squid/cache代表缓存的位置;

100代表缓存最大为100M;16和256代表一级和二级目录数。

  ·cache_effective_user:设定使用缓存的有效用户。缺省为用户nobody,如果你的系统中没

有用户nobody,最好建一个或以非root用户运行Squid。

·error_directory:设定显示错误信息网页目录信息。缺省为英文/usr/local/squid/share/errors/English

如果想显示中文的话,修改为/usr/local/squid/share/errors/Simplify_Chinese。

·限制同一用户同时只在同一IP上使用

acl FOO max_user_ip 1

http_access deny FOO

authenticate_ip_ttl 2 hours //限制保持连接时间,超过该时间才能用其他ip上网

·显示的是你client的内网IP

forwarded_for   on|off

关闭此项将在访问某些论坛时显示的IP是unknown

如果打开则显示的是你client的内网IP

forwarded_for off

·如何限制使用squid 的同一个ip 的连接数

Q:如何限制使用squid 的同一个ip 的连接数?
A:修改squid.conf,以下两句限制每ip不得超过10连接:
acl BadUser maxconn 10
http_access deny BadUser

client_db=on

//The maxconn ACL feature relies on Squid's client database. This database keeps a small data structure in memory for each client IP address. If you have a lot of clients, this database may consume a significant amount of memory. You can disable the client database in the configuration file with the client_db directive. However, if you disable the client database, the maxconn ACL will no longer work.

原文转自:http://www.ltesting.net