Web代理缓存服务---Squid

来源:互联网 发布:a星寻路算法c 编辑:程序博客网 时间:2024/05/22 07:43

                            Squid

1.   squidweb代理缓存。

 三个目标:a.加速代理

           b.追踪访问站点

           c.限制访问站点

支持的协议:FTPHTTP和其他数据流。

作用:a.通过缓存的方式为用户提供web访问加速

      b.对用户的web访问进行过滤控制。

2.正向代理A.普通代理:a.标准,传统的代理

                                            b.需要客户机在浏览器中指定代理服务器

                         的地址,端口          

 B.透明代理:a.适用于企业的网关主机(共享接入Internet)中

                        b.客户机不需要指定服务器的地址,端口等。

                                              c.需要设置防火墙等策略将客户机的web访问数据转交给代理服务程序处理。          

反向代理ngix(反向代理加速服务器)

反向代理监听外网端口的地址,反向代理和透明代理不嫩同时使用。

http_port IP:PORT(指定默认代理的代理端口)

cache_peer 192.168.0.254服务器地址 parent 80  0 0icp端口】originserver weight=5 max_conn=30 服务器类型

3.squid软件包:squid2.6.STABLE6

 服务名:squid

 主程序:/usr/sbin/squid

 配置目录:/etc/squid

 主配置文件:/etc/squid/etc/squid.conf

默认监听端口:3128/TCP

默认访问日志:/var/log/squid/access.log

4.常用配置:

http_port 3128 (监听端口)

cache_mem 64MB (内存)

maximun_object_size 4069KB ()

reply_body_max_size 10240000 allow all (单个文件最大值)

access_log  /var/log/squid/access.log  squid (日志存储)

#visible_hostname proxy.test.com (可见主机)

dns_testnames www.goole.com DNS的域名,可根据 自己的DNS域名重新定义)

cache_dir ufs /var/spool/squid 100 16 256 (缓存目录)

ufs:缓存数据的存储格式       

100:为缓存目录分配的磁盘空间

16:缓存空间的一级子目录的个数

256:缓存空间的二级子目录的个数

cache_mgr squid@test.com (管理员邮箱)

cache_effective_group squid

error_directory /usr/share/squid/errors/语言(默认为English

5 .a.修改主配置文件:vim /etc/squid/squid.conf

 对于以上项需要修改的做一些修改,然后保存退出。

  b.初始化缓存目录:squid -z

  c.启动squid服务:squid –D测试启动

                   squid –d N(调试启动级别)

或者使用命令:service squid start

             chkconfig squid on(将其加入开机自动启动列表中)

d.tail -t /var/log/squid/access.log(查看日志)

       trace,跟踪服务,默认不退出   

****************************************************************************

案例:(以虚拟机为实验环境假设有一台服务器(IP地址:192.168.0.254/32),内网客户机为192.168.10.112/24,现在要求使用squid透明代理来实现内网对外网的访问,squid的【内网接口地址:eth0192.168.10.110】,【外网接口地址:eth1192.168.0.112

要求:访问时间:18:30--8:30

      只允许192.168.10.0/24访问

      不能下载以.rmvb.mp3为后缀的文件

      实现透明代理

      单个文件最大不能超过100M

      代理端口为8080

      错误提示为中文

      管理员邮箱 root@test.com

      内存大小为64M

      缓存目录为1024M

      必须设置可见主机名

 

准备工作:1.将代理服务器内网网卡的网关指向内网接口地址,并编辑文件/etc/squid/squid.conf

打开http_access allow all项(目的是为了过一会测试)

将默认项改为:http_port 192.168.10.110:8080

2.   在客户端打开浏览器,在浏览器中找到edit—>preferencesàAdvanced—>Network—>settingà

HTTP Proxy—>填入代理服务器的地址:192.168.10.110squid的内网接口地址),端口号:8080

或者export HTTP_PROXY=192.168.10.1108080

3.   这时,基本设置已经完成,我们不妨测试一下,看是否内网地址能访问外网服务器。

squid上我们需要重启服务,因为修改了主配置文件。

 Service squid restart 

此时,已经可以访问外网了,接着我们就需要根据上面的要求进行配置。

4.   编辑squid的主配置文件:

Vim /etc/squid/squid.conf

1. acl worktime time 18:30-23:59

acl worktime time 00:00-08:30

访问时间限制:18:30--8:30

 

   2. acl mynetwork src 192.168.10.0/24

acl myserver dst 192.168.0.254/32

     http_access allow mynetwork

(允许访问的网段)

3. acl notmp3 url_regex -i .*/.mp3

acl normvb url_regex -i .*/.rmvb

http_access allow mynetwork !notmp3

http_access allow mynetwork !notrmvb

(不允许下载以.rmvb.mp3为后缀的文件)

4.squid服务器上添加iptables规则:

iptables –t nat –A PREROUTING -i eth1 –s 192.168.10.0/24 –p tcp --dport 80 –j REDIRECT  --to-ports  8080

透明代理:客户端浏览时,不需在browser中指定代理服务器的地址和端口。

5.   reply_body_max_size 102400000 allow all

单个文件最大不能超过100M

6.   http_port 192.168.10.110:8080(代理服务器监听内网网卡的8080端口)

7.   error_directory /usr/share/squid/errors/Simplify_Chinese

(默认为English,此项是当出现错误时,用中文提示)

8.   cache_mgr root@test.com(管理员邮箱)

9.   cache_mem 64 MB(内存大小,默认为8M

10.             cache_dir ufs /var/spool/squid 1024 16 256(各个数字表示什么意思,可参考前面的介绍)

11. visible_hostname  mail.test.com(默认没有设置,需要自己添加)

12.分别对上面的设置进行配置

                   ACL访问控制

常用列表类型:src(基于客户端地址做控制)

              dst portsrcdomaindstdomain

              timemaxconnurl_regexurlpath_regex          

1.基于源地址

acl mynetwork src 192.168.10.0/24

http_access allow mynetwork

地址可为:IP/SubMask 或者IP1~IP2/SubMask

2.基于目标地址:

acl mynetwork src 192.168.10.0/24

acl myserver dst 192.168.0.254/32

http_access mynetwork !myserver(所有mynetwork网段的都不允许访问myserver)

a1http_access deny myserver  (不允许访问

a2. http_access allow mynetwork  192.168.0.254 )

b1. http_access deny myserver允许访问

  b2. http_access deny myserver  192.168.0.254

3.正则表达式:(url_regex

acl alname url_regex [-i] pattern-i的作用:忽略大小写

eg:acl mynetwork src 192.168.10.0/24

   acl notpdf url_regex -i ^http.*/.pdf (全路径,包括协议)

   http_access mynetwork !notpdf(不允许mynetwork网段的地址访问pdf格式的文件)  

4.正则表达式(urlpath_regex

acl mynetwork src 192.168.10.0/24

acl notchm urlpath_regex –i .*/.chm$ (以某种格式结尾)

http_access mynetwork !notchm

5.基于协议:FTPHTTPICP

acl myproto proto HTTP

6.基于browser

acl mynetwork src 192.168.10.0/24

acl notfire browser MOZILLA

http_access allow mynetwork !notfire

7.maxconn (并发可连接数)

 acl mynetwork src 192.168.10.0/24

acl twoconn maxconn 2(最多允许两个)

http_access deny mynetwork twoconn

或者:http_access allow mynetwork twoconn

8.srcdomain

基于域名做源地址控制,不常用,需反解。

acl mydomain srcdomain mail.test.com

http_access deny mydomain

9.dstdomain基于域名做目标地址控制

acl domainserver dstdomain origin@example.com

http_access allow domainserver

11.             基于时间(time

 SàSunday        MàMonday        TàTuesday

 WàWednesday    HàThursday       FàFriday

 AàStaurday (星期)

acl worktime time 10:00—23:59

acl worktiime time 00:00-05:59

aclaclname相同时,取并集。

 

 

 

注意:客户机网关必须配置成squid服务器的内网IP地址

 

 

 

原创粉丝点击