RHEL4下 squid-2.7.STABLE9安装配置

来源:互联网 发布:大数据实验室浪潮 编辑:程序博客网 时间:2024/06/12 01:12

1, 不要用rpm包

2, 从Squid站点www.squid-cache.org获取该软件的源代码安装包

3, 安装的configure命令

 

 ./configure --sysconfdir=/etc/squid --enable-arp-acl --enable-linux-netfilter --with-pthreads --enable-storeio=ufs,null --enable-auth="basic" --enable-basic-auth-helpers="LDAP,NCSA"

 

一些选项说明:

--prefix=/usr/share/squid 
#指定Squid的安装位置,默认在/usr/local/squid/ 如果只指定这一选项,那么该目录下会有bin、sbin、man、conf等目录,而主要的配置文件此时在conf子目录中。为便于管理,最好用参数--sysconfdir=/etc把这个文件位置配置为/etc。 
--enable-storeio=ufs,null 
#使用的文件系统通常是默认的ufs,不过如果想要做一个不缓存任何文件的代理服务器,就需要加上null文件系统。 
--enable-arp-acl 
#这样可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗。 
--enable-err-languages="Simplify_Chinese" 
--enable-default-err-languages="Simplify_Chinese" 
#上面两个选项告诉Squid编入并使用简体中文错误信息。 
--enable-linux-netfilter 
#允许使用Linux的透明代理功能。

--enable-auth="basic" --enable-basic-auth-helpers="LDAP,NCSA"

#允许用户名/口令认证

 

4, 配置/etc/squid.conf

 

1)  设置运行squid的用户(未设置可能出现权限的问题)

cache_effective_user squid


2)  添加ncsa用户名/口令认证:

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

必须确保/usr/local/squid/etc/passwd文件存在(用htpasswd -c /usr/local/squid/etc/passwd 用户名创建)

 

3) 设置cache目录, 该目录squid用户必须有权限

cache_dir ufs /var/spool/squid 100 16 256

 

4) 设置acl列表

acl passwd proxy_auth REQUIRED

 

5) 设置访问权限

http_access allow passwd
http_access deny all

 

5, 运行squid

 

# /usr/local/squid2.7/sbin/squid -z
# /usr/local/squid2.7/sbin/squid -NCd1 -------->可以直接观察服务。
# /usr/local/squid2.7/sbin/squid -sD -------->启动服务
/usr/local/squid2.7/bin/squidclient -p 80 mgr:mem
/usr/local/squid2.7/bin/squidclient -p 80 mgr:info 

 

6, 把squid添加到系统启动项
  编辑 /etc/rc.d/rc.local 添加如行: /usr/local/squid/sbin/squid -s

 

 

 

 

以下转自:http://yzj2658.blog.163.com/blog/static/861567612010794540653/

//////////////////////////////////////////////////////////////////////////////////////////////////////

1.安装SQUID
http://www1.hk.squid-cache.org/下载SQUID.
在SQUID安装文件夹下,输入以下命令.
# tar xvfz squid-2.5.STABLE.tar.gz
进入解压后的目录输入以下命令.
# ./configure --prefix=/usr/local/squid --disable-internal-dns
# make
#make install
安装完成后,更改SQUID目录及以下子目录权限为755,用户名及组为ROOT,VAR及其子目录权限为770,用户名及组

为SQUID(如无SQUID组及用户请建立或使用ROOT)


2.配置SQUID
2.1 http_port
      指定端口
2.2 cache_mem
      指定squid可以使用的内存理想值,建议设为内存的1/3.
2.3 dns_nameservers(可设可不设)
2.4 acl
      建立访问控制列表
2.5 http_access
      应用访问控制列表
(关于访问控制列表这一块暂就不写了,后续将专门介绍这一块,有兴趣的朋友请关注)
2.6 emulate_httpd_log on
      可以使日志中的日期象 [08/Jun/2003:22:45:10 +0800] 比较直观
2.7 visible_hostname no1.proxy
      这行配置是在较新版本中出现的参数,告诉squid在错误页面中显示的服务器名称

3.初始化及调试/运行
3.1 初始化你在 squid.conf 里配置的 cache 目录
  #squid/sbin/squid -z //第一次启动squid服务时必须输入此命令
  如果有错误提示,请检查你的 cache目录的权限。
3.2 在前台启动squid,并输出启动过程。
  #squid/sbin/squid -N -d1
  如果有到 ready to server reques,恭喜,启动成功。
  然后 ctrl + c,停止squid,并以后台运行的方式启动它。
3.3 启动squid在后台运行。
  #squid/sbin/squid -s
    可以通过ps命令查看Squid服务是否已经正常启动:
    ps -A |grep squid
3.4 把squid添加到系统启动项
  编辑 /etc/rc.d/rc.local  (不会使用VI的可以参考博客中的VI命令介绍)
  添加如下行: /usr/local/squid/sbin/squid -s
  当然,并不是每个人都喜欢这种启动方式,你可以用你最习惯的方式;或者把它安装为服务。


4.SQUID日志轮换/打包
  4.1  日志轮换(方式一)
        squid -k rotate 轮换squid的日志文件/var/log/squid,Squid代理服务器日志文件的增长速度是惊人的,

很容易点球满磁盘空间导致系统不能正常工作,甚至是死机。为了解决日志文件增长太快的问题,squid采用了

"轮换"的方法。在squid.conf中可以通过logfile_rotate来设置文件轮换的个数,如:

  logfile_rotate 10 ,轮换的工作一般用crontab定时器完在周期性的日志轮换,例如每周六凌晨2:00进

行日志轮换,则执行如下命令: crontab -e  ,输入以下内容

  0 2 * * 6 squid -k rotate


  4.2  日志打包轮换(方式二)
          以下是做好的一个日志打包并轮换的脚本文件,大家可以参考一下.此操作完成后,每周一04:00时执行,将在/VAR/SQUID/LOGS目录生成LOG文件,文件名跟着日期,原LOG将清空,实现轮换.

compress.sh(这是脚本文件名,===之间是内容)
==================================
#!/bin/sh

HOME1=/usr/local/squid/var/logs
HOME2=/var/squid/logs
DATE=`date '+%Y-%m-%d'`

cp $HOME1/access.log  $HOME2/access_$DATE.log

cp $HOME1/cache.log $HOME2/cache_$DATE.log

cp $HOME1/store.log $HOME2/store_$DATE.log

COMPRESSaccess=`ls $HOME2/access_*.log`
COMPRESScache=`ls $HOME2/cache_*.log`
COMPRESSstore=`ls $HOME2/store_*.log`

gzip $COMPRESSaccess
gzip $COMPRESScache
gzip $COMPRESSstore

cp /dev/null $HOME1/access.log
cp /dev/null $HOME1/cache.log
cp /dev/null $HOME1/store.log


cp $COMPRESSaccess.gz $HOME2/access_1.log.gz
==================================

文件建立好后,保存在/export/home/script/文件夹下,执行以下命令,
#crontab -e  (执行此命令后输入以下内容)
0 4 * * 1 /export/home/script/compress.sh > /dev/null 2>&1

 

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

以下转自:http://www.chinaunix.net/jh/38/115326.html

 

基本配置 

  安装完成后,接下来要对Squid的运行进行配置(不是前面安装时的配置)。所有项目都在squid.conf中完成。Squid自带的squid.conf包括非常详尽的说明,相当于一篇用户手册,对配置有任何疑问都可以参照解决。 

  在这个例子中,代理服务器同时也是网关,内部网络接口eth0的IP地址为192.168.0.1,外部网络接口eth1的IP地址为202.103.x.x。下面是一个基本的代理所需要配置选项: 

  http_port 192.168.0.1:3128 


  默认端口是3128,当然也可以是任何其它端口,只要不与其它服务发生冲突即可。为了安全起见,在前面加上IP地址,Squid就不会监听外部的网络接口。 

  下面的配置选项是服务器管理者的电子邮件,当错误发生时,该地址会显示在错误页面上,便于用户联系: 

cache_mgr start@soocol.com 


  以下这些参数告诉Squid缓存的文件系统、位置和缓存策略: 

cache_dir ufs /var/squid 
cache_mem 32MB 
cache_swap_low 90 
cache_swap_high 95 


  在这里,Squid会将/var/squid目录作为保存缓存数据的目录,每次处理的缓存大小是32兆字节,当缓存空间使用达到95%时,新的内容将取代旧的而不直接添加到目录中,直到空间又下降到90%才停止这一活动。如果不想Squid缓存任何文件,如某些存储空间有限的专有系统,可以使用null文件系统(这样不需要那些缓存策略): 

cache_dir null /tmp 


  下面的几个关于缓存的策略配置中,较主要的是第一行,即用户的访问记录,可以通过分析它来了解所有用户访问的详尽地址: 

cache_access_log /var/squid/access.log 
cache_log /var/squid/cache.log 
cache_store_log /var/squid/store.log 


  下面这行配置是在较新版本中出现的参数,告诉Squid在错误页面中显示的服务器名称: 

visible_hostname No1.proxy 


  以下配置告诉Squid如何处理用户,对每个请求的IP地址作为单独地址处理: 

client_mask 255.255.255.255 


  如果是普通代理服务器,以上的配置已经足够。但是很多Squid都被用来做透明代理。所谓透明代理,就是客户端不知道有代理服务器的存在,当然也不需要进行任何与代理有关的设置,从而大大方便了系统管理员。相关的选项有以下几个: 

httpd_accel_host virtual 
httpd_accel_port 80 
httpd_accel_with_proxy on 
httpd_accel_user_host_header on 


  在Linux上,可以用iptables/ipchains直接将对Web端口80的请求直接转发到Squid端口3128,由Squid接手,而用户浏览器仍然认为它访问的是对方的80端口。例如以下这条命令: 

iptables -t nat -A PREROUTING -s 192.168.0.200/32 -p tcp --dport 80 -j REDIRECT 3128 


  就是将192.168.0.200的所有针对80端口的访问重定向到3128端口。 

  所有设置完成后,关键且重要的任务是访问控制。Squid支持的管理方式很多,使用起来也非常简单(这也是有人宁愿使用不做任何缓存的Squid,也不愿意单独使用iptables的原因)。Squid可以通过IP地址、主机名、MAC地址、用户/密码认证等识别用户,也可以通过域名、域后缀、文件类型、IP地址、端口、URL匹配等控制用户的访问,还可以使用时间区间对用户进行管理,所以访问控制是Squid配置中的重点。Squid用ACL(Access Control List,访问控制列表)对访问类型进行划分,用http_access deny 或allow进行控制。根据需求首先定义两组用户advance和normal,还有代表所有未指明的用户组all及不允许上网的baduser,配置代码如下: 

acl advance 192.168.0.2-192.168.0.10/32 
acl normal src 192.168.0.11-192.168.0.200/32 
acl baduser src 192.168.0.100/32 
acl baddst dst www.soocol.com 
acl all src 0.0.0.0/0 

http_access deny baduser 
http_access allow advance 
http_access allow normal 


  可以看出,ACL的基本格式如下: 

  acl 列表名称 控制方式 控制目标 


  比如acl all src 0.0.0.0/0,其名称是all,控制方式是src源IP地址,控制目标是0.0.0.0/0的IP地址,即所有未定义的用户。出于安全考虑,总是在最后禁止这个列表。 

  下面这个列表代表高级用户,包括IP地址从192.168.0.2到192.168.0.10的所有计算机: 

acl advance 192.168.0.2-192.168.0.20/32 


  下面这个baduser列表只包含一台计算机,其IP地址是192.168.0.100: 

acl baduser 192.168.0.100/32 


  ACL写完后,接下来要对它们分别进行管理,代码如下: 

http_access deny baduser 
http_access allow advance 
http_access allow normal 


  上面几行代码告诉Squid不允许baduser组访问Internet,但advance、normal组允许(此时还没有指定详细的权限)。由于Squid是按照顺序读取规则,会首先禁止baduser,然后允许normal。如果将两条规则顺序颠倒,由于baduser在normal范围中,Squid先允许了所有的normal,那么再禁止baduser就不会起作用。 

  特别要注意的是,Squid将使用allow-deny-allow-deny……这样的顺序套用规则。例如,当一个用户访问代理服务器时,Squid会顺序测试Squid中定义的所有规则列表,当所有规则都不匹配时,Squid会使用与最后一条相反的规则。就像上面这个例子,假设有一个用户的IP地址是192.168.0.201,他试图通过这台代理服务器访问Internet,会发生什么情况呢?我们会发现,他能够正常访问,因为Squid找遍所有访问列表也没有和192.168.0.201有关的定义,便开始应用规则,而最后一条是deny,那么Squid默认的下一条处理规则是allow,所以192.168.0.201反而能够访问Internet了,这显然不是我们希望的。所以在所有squid.conf中,最后一条规则永远是http_access deny all,而all就是前面定义的“src 0.0.0.0”。 

  高级控制 

  前面说过,Squid的控制功能非常强大,只要理解Squid的行为方式,基本上就能够满足所有的控制要求。下面就一步一步来了解Squid是如何进行控制管理的。 

  通过IP地址来识别用户很不可靠,比IP地址更好的是网卡的MAC物理地址。要在Squid中使用MAC地址识别,必须在编译时加上“--enable-arp-acl”选项,然后可以通过以下的语句来识别用户: 

acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b ... 


  它直接使用用户的MAC地址,而MAC地址一般是不易修改的,即使有普通用户将自己的IP地址改为高级用户也无法通过,所以这种方式比IP地址可靠得多。 

  假如不想让用户访问某个网站应该怎么做呢?可以分为两种情况:一种是不允许访问某个站点的某个主机,比如ok的主机是ok.sina.com.cn,而其它的新浪资源却是允许访问的,那么ACL可以这样写: 

acl sinapage dstdomain ok.sina.com.cn 
... ... 
http_access deny ok 
... ... 


  由此可以看到,除了ok,其它如www.sina.com.cn、news.sina.com.cn都可以正常访问。 

  另一种情况是整个网站都不许访问,那么只需要写出这个网站共有的域名即可,配置如下: 

acl qq dstdomain .tcccent.com.cn 


  注意tcccent前面的“.”,正是它指出以此域名结尾的所有主机都不可访问,否则就只有tcccent.com.cn这一台主机不能访问。 

  如果想禁止对某个IP地址的访问,如202.118.2.182,可以用dst来控制,代码如下: 


acl badaddr dst 202.118.2.182 


  当然,这个dst也可以是域名,由Squid查询DNS服务器将其转换为IP。 

  还有一种比较广泛的控制是文件类型。如果不希望普通用户通过代理服务器下载MP3、AVI等文件,完全可以对他们进行限制,代码如下: 

acl mmxfile urlpath_regex /.mp3$ /.avi$ /.exe$ 
http_access deny mmxfile 


  看到regex,很多读者应该心领神会,因为这条语句使用了标准的规则表达式(又叫正则表达式)。它将匹配所有以.mp3、.avi等结尾的URL请求,还可以用-i参数忽略大小写,例如以下代码: 

acl mmxfile urlpath_regex -i /.mp3$ 


  这样,无论是.mp3还是.MP3都会被拒绝。当然,-i参数适用于任何可能需要区分大小写的地方,如前面的域名控制。 

  如果想让普通用户只在上班时间可以上网,而且是每周的工作日,用Squid应当如何处理呢?看看下面的ACL定义: 

acl worktime time MTWHF 8:30-12:00 14:00-18:00 
http_access deny !worktime 


  首先定义允许上网的时间是每周工作日(星期一至星期五)的上午和下午的固定时段,然后用http_access 定义所有不在这个时间段内的请求都是不允许的。 

  或者为了保证高级用户的带宽,希望每个用户的并发连接不能太多,以免影响他人,也可以通过Squid控制,代码如下: 

acl conncount maxconn 3 
http_access deny conncount normal 
http_access allow normal 


  这样,普通用户在某个固定时刻只能同时发起三个连接,从第四个开始,连接将被拒绝。 

  总之,Squid的ACL配置非常灵活、强大,更多的控制方式可以参考squid.conf.default。 

  认证 

  用户/密码认证为Squid管理提供了更多便利,最常用的认证方式是NCSA。从Squid 2.5版本开始,NCSA认证包含在了basic中,而非以前单独的认证模块。下面来看看实现认证的具体操作。 

  首先在编译时配置选项应包括以下配置: 

--enable-auth="basic" --enable-basic-auth-helpers="NCSA" 


  “make install”以后,需要将“helpers/basic_auth/NCSA/ncsa_auth”拷贝到用户可执行目录中,如/usr/bin(如果在该目录中找不到这个执行文件,在编译时请使用make all而不是make,或者直接在该目录中执行make),然后需要借助Apache的密码管理程序htpasswd来生成用户名/密码对应的文件,就像下面这行代码: 

htpasswd -c /var/squid/etc/password guest 


  在输入两遍guest用户的密码后,一个guest用户就生成了。如果以后需要添加用户,把上面的命令去掉-c参数再运行即可。 

  Squid 2.5在认证处理上有了较大的改变,这里就只讨论2.5版本的处理方法,2.4及以下版本请参考squid.conf.default。在2.5版的squid.conf中,包括以下几个相关选项: 

#该选项指出了认证方式(basic)、需要的程序(ncsa_auth)和 
对应的密码文件(password) 
auth_param basic program /usr/bin/ncsa_auth /var/squid/etc/password 
# 指定认证程序的进程数 
auth_param basic children 5 
# 浏览器显示输入用户/密码对话框时的领域内容 
auth_param basic realm My Proxy Caching Domain 
# 基本的认证有效时间 
auth_param basic credentialsttl 2 hours 
# 普通用户需要通过认证才能访问Internet 
acl normal proxy_auth REQUIRED 
http_access allow normal 


  通过以上的配置即可完成认证工作。有的读者可能要问:认证只针对普通用户,而高级用户是直接上网的,该怎么处理呢?其实,这两种用户是可以共存的。如前所述,Squid是顺序处理http_access的,所以在http_access处理过程中,如果先处理normal用户,那么当前用户无论是否属于高级用户,都会被要求进行认证;相反如果先处理高级用户,剩下的就只有需要认证的普通用户了。例如以下配置代码: 

... 
http_access allow normal (需要认证) 
http_access allow advance (不需要认证) 
... 


  不管是否为noauth用户,都要求进行用户名/密码验证。正确的方法是将二者位置交换,代码如下: 

... 
http_access allow advance 
http_access allow normal 
... 


  这时,高级用户不会受到任何影响。 

  总结 

  下面把整个squid.conf总结一下: 

# 服务器配置 
http_port 192.168.0.1:3128 
cache_mgr start@soocol.com 
cache_dir null /tmp 
cache_access_log /var/squid/access.log 
cache_log /var/squid/cache.log 
cache_store_log /var/squid/store.log 
visible_hostname No1.proxy 
client_mask 255.255.255.255 
httpd_accel_host virtual 
httpd_accel_port 80 
httpd_accel_with_proxy on 
httpd_accel_user_host_header on 

# 用户分类 
acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b ... 
acl normal proxy_auth REQUIED 
acl all src 0.0.0.0 

# 行为分类 
acl mmxfile urlpath_regex /.mp3$ /.avi$ /.exe$ 
acl conncount maxconn 3 
acl worktime time MTWHF 8:30-12:00 14:00-18:00 
acl sinapage dstdomain ok.sina.com.cn 
acl qq dstdomain .tcccent.com.cn 

# 处理 
http_access allow advance 
http_access deny conncount normal 
http_access deny !worktime 
http_access deny mmxfile 
http_access deny sinapage 
http_access deny qq 
http_access allow normal 


  配置后的状况是,advance组可以不受任何限制地访问Internet,而normal组则只能在工作时间上网,而且不能下载多媒体文件,不能访问某些特定的站点,而且发送请求不能超过3个。 

  通过本文的介绍,它可以了解Squid的基本能力。当然,它的能力远不止此,可以建立强大的代理服务器阵列,可以帮助本地的Web服务器提高性能,可以提高本地网络的安全性等。要想发挥它的功效,还需要进一步控制。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝贝破损买家退回运费很高怎么办 信而富额度变0了怎么办 申请淘京猫代理时资料填错了怎么办 苹果手机能上网但微信不能用怎么办 卧室壁纸贴的太花了怎么办 贴完墙纸接头处看着是黑色的怎么办 把所有内容放在一张纸上怎么办 孩子脸上被蚊香烧了留下了疤怎么办 微信怎么修改支付密码忘了怎么办 去网鱼网咖上网没带身份证怎么办 淘宝买家号忘了账号和密码怎么办 80多岁的老人前列腺疼怎么办啊 新浪微博发二维码让我入群我怎么办 队友送的太崩了打野应该怎么办 该商品不支持在当前地区销售怎么办 此商品不支持在当前地区销售怎么办 村淘商品在淘宝没展现怎么办 qq音乐不小心充了会员怎么办 古奇的包五金磨掉色了怎么办 淘宝购物津贴买的东西退款怎么办 淘宝买的东西质量太差怎么办 咸鱼上买的东西有问题怎么办 咸鱼买到的东西有问题怎么办 天猫超市买的东西有问题怎么办 满白天的宝宝睡觉总哭怎么办 京东退货显示在售后检测要怎么办 装修公司定金交了公司关门怎么办 背冷、腰泠、屁股冷、大腿冷怎么办 买家退款把卖家地址写错了怎么办 退款编号写错了提交了怎么办 京东购物收到货第二天搞活动怎么办 玩王者荣耀来电话断网怎么办 苹果7p玩王者荣耀卡怎么办 手机丢了隐私空间里面的照片怎么办 微信内存满了打不开了怎么办 u盘内存满了打不开了怎么办 清算组出的报告书无法清算怎么办 手机停机了收不到快递取件码怎么办 买东西货到了不小心确认收货怎么办 不小心用了蚂蚁花呗怎么办 q微店忘记密码怎么办微忘记密