网上有不少在linux中使用squid和squidGuard配置代理服务器的文章,这几天一直在搞这么个东东网上的资料也看了不少总是觉的和自己设置的不一样。就把我自己写的发上来。大家可以参考也给自己留个备份。
1.设置网络参数什么IP。
主机名什么的这个就不废话了。
2.建立squid的用户和组
groupadd squid 编辑\etc\passwd suuid:x:500:501::/usr/local/squid:/bin/bash 用户目录设为/usr/local/squid |
www.squid-cache.org ;下载squid-2.4.STABLE2-src.tar.gz存在本地/usr/local/squid/src。
$cd /usr/local/squid/src $tar xvzf squid-2.4.STABLE2-src.tar.gz $ cd squid-2.4.STABLE2 $./configure $make $make install http://www.sleepycat.com $su 从http://ftp.ost.eltele.no/pub/www/proxy/squidGuard/squidGuard-1.1.4.tar.gz下载软件包并存于本地/usr/local/squidGuard/src/ #cd /usr/local/squidGuard/src/ |
#make #make test 测试ok,即可进行下一步安装 测试的时候可能也会报一个错误好像是什么什么权限问题。可以到squidGuard-1.1.4目录下的test下在执行一下#make test 要是这里没有问题就可以继续。 #make install |
#p#
4.配置squid:
修改squid的配置文件/usr/local/squid/etc/squid.conf: http_port 8080 #squid的代理端口,使用1024以下的端口,squid必须以root身份运行 #允许所有的用户通过代理进行http访问 #squid启用squidGuard进行过滤和转发 |
cache_mem:设置代理服务使用的内存大小,一般推荐为物理内存的三分之一 cache_dir:指定cache目录的路径,默认为/usr/local/squid/cache。 maximum_object_size: 指定Squid可以接收的***对象的大小。Squid缺省值为4M,可以根据自己的需要进行设定。 |
cache_dir /usr/local/squid/cache 100 16 256 /usr/local/squid/cache代表缓存的位置;100代表缓存***为100M;16和256代表一级和二级目录数。 |
cache_effective_group:设定使用缓存的有效用户组。缺省组为nogroup,如果系统中没有组nogroup,***建一个组。这里是squid组
5.配置squidGuard:
修改squidGuard的配置文件/usr/local/squidGuard/squidGuard.conf文件:
logdir /usr/local/squidGuard/logs #日志目录定义 dbhome /usr/local/squidGuard/db #db目录定义 time testtime { #时间规则定义 weekly mtwhf 05:00 - 10:30 src admin { #源组定义 ip 192.168.100.18 src client{ dest porn { #目标组定义 domainlist porn/domains acl { #访问规则定义 admin within testtime { (#也可以重定向到一个含有一些信息的cgi页面,如下: } |
#p#
# vi db/porn/domains |
co.za sex.com |
# vi db/porn/urls |
qihui.com/sex valen.sohu.com/album |
# vi db/porn/expressions |
(^|[?+=/])(.*)(girl)(.*)([?+=/]|$) |
注意:squidGuard对配置文件的语法要求很严,如果配置文件语法有误,squidGuard仍能运行,但是squidGuard已进入应急模式,此时代理服务不具有任何阻塞作用,所有通过该代理的访问都可通过,可以查看logs/squidGuard的日志文件,即可发现错误,例如:
2001-12-20 17:08:44 [2430] parse error in configfile /usr/local/squidGuard/squidGuard.conf line 8 2001-12-20 17:08:44 [2430] going into emergency mode ……. |
6. 运行:
$ chmod 777 /var/log/squid $ chmod 777 /var/spool/squid $ chmod 777 /usr/local/squid/var $ chmod 777 /usr/local/squid/var/logs $ chmod 777 /usr/local/squidGuard/log $ chmod 777 /var/log/squid |
记得的好像就是这几个文件开777权限。要是疏漏了可以看日志修改
$ /usr/local/squid/bin/squid -z |
#/usr/local/squid/bin/squid 后台执行squid。如果想前台执行squid:如果你想前台执行Squid执行命令:
|
查看squidGuard日志文件:
init domainlist /usr/local/squidGuard/db/porn/domains 2001-12-20 16:14:43 [2270] init domainlist /usr/local/squidGuard/db/porn/domains 2001-12-20 16:14:43 [2270] init urllist /usr/local/squidGuard/db/porn/urls 2001-12-20 16:14:43 [2270] init expressionlist /usr/local/squidGuard/db/porn/expressions 2001-12-20 16:14:43 [2270] squidGuard 1.1.4 started (1008836083.022) 2001-12-20 16:14:43 [2270] recalculating alarm in 917 seconds 2001-12-20 16:14:43 [2270] squidGuard ready for requests (1008836083.044) |
7.开机自动启动
最容易的机制之一是/etc/rc.local脚本。这是个简单的shell脚本,在每次系统启动时以root运行。使用该脚本来启动squid非常容易,增加一行如下:
/usr/local/squid/sbin/squid -D touch /var/lock/subsys/local |
8.一些小经验和大家分享一下
在开启squid之前,你应该谨慎的验证配置文件。这点容易做到,运行如下命令即可:%squid -k parse假如你看不到输出,配置文件有效,你能继续后面的步骤。
然而,如果配置文件包含错误,squid会告诉你:squid.conf line 62: http_access allow okay2 aclParseAccessLine: ACL name 'okay2' not found.这里你可以看到,62行的http_access指令指向的ACL不存在。有时候错误信息很少:FATAL: Bungled squid.conf line 76: memory_pools在这个情形里,我们忘记了在76行的memory_pools指令后放置on或off.
建议你养成习惯:在每次修改配置文件后,使用squid -k parse。假如你不愿麻烦,并且你的配置文件有错误,squid会告诉你关于它们而且拒绝启动。假如你管理着大量的cache,也许你会编辑脚本来自动启动,停止和重配置squid。你能在脚本里使用该功能,来确认配置文件是有效的。
保存日志vi /etc/logrotate.d/squid/var/log/squid/access.log
{ weekly } |
原文来自:http://netdl.blog.51cto.com/184762/33118
【编辑推荐】