Chinaunix首页 | 论坛 | 博客
  • 博客访问: 164689
  • 博文数量: 37
  • 博客积分: 2218
  • 博客等级: 大尉
  • 技术积分: 315
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-04 23:35
文章分类

全部博文(37)

文章存档

2012年(1)

2011年(5)

2010年(31)

分类: LINUX

2010-04-10 14:36:49

         Squid代理服务器的作用:
 
》通过缓存的方式为用户提供web访问加速
》对用户的web访问进行过滤控制
如图所示:
 
 
 
普通代理服务:
》即标准的,传统的代理服务
》需要客户机在浏览器中指定代理服务器的地址.端口
透明代理服务:
》使用于企业网关主机(共享接入Internet)中
》客户机不需要指定代理服务器的地址,端口信息等
》需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理
反向代理服务:
》为Internet用户访问企业Web站点提供缓存加速
 
 
 
关于Squid的一些基本知识:
软件包名:squid-2.6.STABLE6
服务名:squid
主程序:/usr/sbin/squid
配置目录:/etc/squid
主配置文件:/erc/squid/squid.conf
默认监听端口:TCP  3128
默认访问日志文件:/var/log/suqid/access.log
关于Squid的命令
#squid   -z   (初始化squid缓存目录)
#squid   -D   (启动squid服务)
#squid   -k    parse  测试
#squid   -d   后跟一个数字跟调试的级别
#netstat  -tnlp 查看端口3128端口是否开了
#tail  -f  /var/log/squid/access_log  -f   表示跟踪显示,不退,出,滚动显示,一直在监控。
也可以在浏览器中设置代理服务
#export   HTTP_PROXY=  指向网关和代理端口
#echo  $HTTP_PROXY
在浏览器中取消代理
#unset  HTTP_PROXY
#echo  $HTTP_PROXY
Squid可以基于内容来进行过滤
#grep  -v   “^#”   squid.conf  | cat  -s
#cat –s 压缩空白行
 
 
主配置文件squid.conf的常用配置选项
http_port: 3128                     (定义端口
access_log  /var/log/squid/access.log   squid  (定义日志位置
visible_hostname  proxy.test.com  定义squid服务器名字
cache_mem   64M             (定义内存大小)
maximum_object_size  4096 KB (定义最大缓存的文件大小
replay_body_max_size  10240000  allow  all (定义最大的可以访问的文件大小
cache_dir  ufs   /var/spool/squid  100 16 256
(其中ufs定义缓存数据的存储格式,100定义了为缓存目录分配的磁盘空间(MB),16 (定义缓存空间的以及子目录个数)256(定义了缓存空间的二级子目录个数)
cache_mgr用来定义你的服务器管理员的邮箱
如果想将错误提示信息更改为中文提示,需要添加一下一行                                               
error_directory   /usr/share/squid/errors/Simplify_Chinese
 
 
replay_body_max_size  10240000  allow  all 定义最大的可以访问的文件大小
http_access allow  all 表示允许所用用户访问。
acl是自上而下逐行匹配,跟iptables一样
(要先定义ACL选项,然后再写规则。)
 
 
 
ACL访问控制
 
ACLaclname acltype sting/file 组成
aclname 定义了cal的名字
acltype定义了acl的类型
string 定义了匹配的字符串
file  用一个文教来包含字符串
例子:acl   mynetwork   src   192.168.0.0/24
acltype基于什么样的类型
常见的acl列表类型:最常用的就是src
src
dst
port
srcdomain
dstdomain
time
maxconn
url_regex
urlpath_regex
 
如果跟多个ACL,要取它们的交集
如:acl  mynetwork src 192.168.10.0/24
    acl  myserver dst 192.168.0.254/32
    http_access allow mynetwork  !myserver  (!取反)
(表示允许来源mynetwork的访问,但是不允许他访问myserver)
 
url_regex  针对完整的URL做正则表达式匹配
如:定义以pdf结尾的都不允许访问
acl  notpdf   url_regex  -i  ^http.*\.pdf$
http_access  allow mynetwork !noetpdf
 
urlpath_regex不是针对完整的URL做匹配
如:定义只要是以chm结尾的不允许访问
acl  notchm   urlpath_regex    .*\.chm$ 
http_access allow mynetwork !notchm
 
 
可以做基于协议的匹配
定义proto
 
可以基于浏览器的匹配
定义browser
 
可以基于http连接数控制
定义maxconn
 
可以基于域名做控制
定义srcdomain
定义 dstdomain
 
可以基于时间来控制
定义time
 
可以让两个acl列表名字相同,只要它们的类型相同,这时候会取它们的并集:
acl worktime time 10:00-23.59
acl worktime time 00:00-5.59
http_access allow mynetwork !worktime
(这个意思就是晚上10点到早上6点不许上网)
 
关于ACL一些定义示例:
acl LAN1 src 192.168.10.0/24
acl PC1 src 192.168.10.12/32
acl Blk_Domain dstdomain .qq.com
acl Work_Hours time MTWHF 08:30-17:30
acl Max20_Conn maxconn 20
acl Blk_URL url_regex -i ^rtsp:// ^mms://
acl Blk_Words urlpath_regex -i sex adult
acl RealFile urlpath_regex -i \.rmvb$ \.rm$
根据已经定义的部分ACL列表进行访问控制
http_access deny LAN1 Blk_URL
http_access deny LAN1 Blk_Words
http_access deny PC1 RealFile
http_access deny PC1 Max20_Conn
http_access allow LAN1 Work_Hours
访问控制规则的匹配顺序
没有设置任何规则时
  —— 将拒绝所有客户端的访问请求
 
有规则但找不到相匹配的项时
  —— 将采用与最后一条规则相反的权限,即如果最后一条规则是allow,那么就拒绝客户端的请求,否则允许该请求
 
阅读(1353) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~