原创-在Debian 5.0下的使用源代码安装Squid笔记

来源:互联网 发布:手机照片拼图软件 编辑:程序博客网 时间:2024/05/06 15:55

作者:何祖彬[RobinHe] Mail:zubin.he@gmail.com
Skype ID : pto_robin QQ : 57623579

始于2009年3月31日 PM
版本号:Debian-Squid-V1.0-20090331, 2009年3月31日首版

转载请注明出处,谢谢!
本文中难免有不足、遗漏、错别字和句子不通之处,如发现、或者有更新改变之处,请与我联系以及时修正和完善!

系统环境 : Debian GNU/Linux 5.0
使用Squid做成透时代理,让局域网内的用户只能浏览白名单里面的网站。

参考资料:

Squid中文权威指南 : http://blog.s135.com/book/squid/index.html

一,下载并安装squid:
squid的官方网站:www.squid-cache.org
我下载的是3.0的stable13版:

xx:~#cd /usr/local/src
xx:/usr/local/src# wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE13.tar.gz

解压缩:
xx:/usr/local/src# tar -zxvf squid-3.0.STABLE13.tar.gz
xx:/usr/local/src# cd squid-3.0.STABLE13
xx:/usr/local/src/squid-3.0.STABLE13# ./configure –enable-icmp –localstatedir=/mnt/hdb1/squid-cache –prefix=/usr/local/squid

–enable-icmp : icmp支持,暂时没用,以后用时就不要再重新编译安装。
–localstatedir=/mnt/hdb1/squid-cache : 把cache和log文件夹,即数据目录放到空间比较大的硬盘上,因为做为proxy,需要足够的空间存入这些数据以及log。
–prefix=/usr/local/squid : 把squid安装到/usr/local/squid这个目录下。

xx:/usr/local/src/squid-3.0.STABLE13#make
xx:/usr/local/src/squid-3.0.STABLE13#make install

二,配置Squid
a,增加一个squid的用户,以便让squid来运行squid服务,以方便标识:
xx:/usr/local/src/squid-3.0.STABLE13#adduser squid
xx:/mnt/hdb1/squid-cache# cd /usr/local/squid/
#更改cache和log的权限,以便让squid用户对这些目录有扫行权限。
xx:/mnt/hdb1/squid-cache# chown squid:squid /mnt/hdb1/squid-cache -Rf

#初始化squid的cache
xx:/mnt/hdb1# /usr/local/squid/sbin/squid -z
2009/03/31 16:56:09| Creating Swap Directories
2009/03/31 16:56:09| Making directories in /mnt/hdb1/squid-cache/cache/00
2009/03/31 16:56:09| Making directories in /mnt/hdb1/squid-cache/cache/01
2009/03/31 16:56:09| Making directories in /mnt/hdb1/squid-cache/cache/02
2009/03/31 16:56:09| Making directories in /mnt/hdb1/squid-cache/cache/03
2009/03/31 16:56:09| Making directories in /mnt/hdb1/squid-cache/cache/04
2009/03/31 16:56:09| Making directories in /mnt/hdb1/squid-cache/cache/05
2009/03/31 16:56:09| Making directories in /mnt/hdb1/squid-cache/cache/06
2009/03/31 16:56:09| Making directories in /mnt/hdb1/squid-cache/cache/07
2009/03/31 16:56:09| Making directories in /mnt/hdb1/squid-cache/cache/08
2009/03/31 16:56:10| Making directories in /mnt/hdb1/squid-cache/cache/09
2009/03/31 16:56:10| Making directories in /mnt/hdb1/squid-cache/cache/0A
2009/03/31 16:56:10| Making directories in /mnt/hdb1/squid-cache/cache/0B
2009/03/31 16:56:10| Making directories in /mnt/hdb1/squid-cache/cache/0C
2009/03/31 16:56:10| Making directories in /mnt/hdb1/squid-cache/cache/0D
2009/03/31 16:56:10| Making directories in /mnt/hdb1/squid-cache/cache/0E
2009/03/31 16:56:10| Making directories in /mnt/hdb1/squid-cache/cache/0F

b,更改相关参数:
xx:pt:/usr/local/squid# vi etc/squid.conf
找到:
# cache_effective_user nobody
改成:
cache_effective_user squid
即设置运行squid的用户名。以便对上面的cache和log有完全的权限。
保存退出。

c,在配置文件中配置自已需要的内容:
找到这一行 :
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
我们可以在这一行下面,在:
http_access deny all
这一行上面编写规则。

要求:只开放内网用户可以使用这个proxy服务,并且只允许访问公司规定访问的网站:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet

acl sitelist dstdomain .nba.com .baidu.com  #只将sitelist表定义为nba.com和baidu.com域名
http_access deny !sitelist #禁提除sitelist里面以外的域名,请注意"!”

acl ptolan src 192.168.0.0/24
http_access allow ptolan

# And finally deny all other access to this proxy
http_access deny all

注意:根据squid指南中的:
域名ACL有点深奥,因为相对于匹配域名和子域有点微妙的差别。当ACL域名以"."开头,squid将它作为通配符,它匹配在该域的任何主机名,甚至域名自身。相反的,如果ACL域名不以"."开头,squid使用精确的字符串比较,主机名同样必须被严格检查。

我少了域名前面的".",让我伤了好久的脑筋和时间。幸亏回头认真看了手册。

d,启动和停止squid服务:
启动:xx:~# /usr/local/squid/sbin/squid
停止:xx:~# /usr/local/squid/sbin/squid -k shutdown

三,研究透明代理的做法,结合路由器,最好在客户端不做改变就可以实现屏蔽。

http_port 60128 transparent

iptables

 

iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp -j REDIRECT --to-port 60128

…未完待续…

原创粉丝点击