Squid 代理服务器配置实例

1. 代理服务器工作原理

(1) 客户端发出资源的请求,发送到代理服务器

(2) 代理服务器查看缓存

(3) 若代理服务器中存在则网页的缓存,则发送给客户庙

(4) 若代理服务器没有存在则网页的缓存,则代理服务器将请求发送给远程的主机

(5) 远程主机发送资源,并且代理服务器会保存此资源的缓存

(6) 代理服务器将此资源发送给客户端

.代理服务器优点

(1) 通过缓存增加访问速度

(2) 可以充当防火墙,提高网络的安全性

(3) 对用户进行访问控制,方便对用户的管理

(4) 节省IP开销

.代理服务器的分类

(1) 标准代理服务器

   标准代理服务器是常被用于缓存静态的网页,它的使用要在客户端的浏览器中进行代理设置,而且客户端要知道代理的存在.   

(2) 透明代理服务器

   透明代理服务器一般为内网的计算机提供外网的访问服务不需要客户端做任何测试,当客户端的数据包到达出口路由器时,可以被路由器重定向到本地代理服务器的代理商端口,然后由本地代理服务器对数据进行处理

(3) 反向代理服务器

   反向代理服务器是能够代理外部网络上的主机访问内部网络,它主机为一个或几个本地网站做缓存,以加快web的访问速度.

.linux下代理服务器软件:squid

   squid是一种快速的代理缓存程序,它扮演着一种中介的角色,从浏览器等客户端进程接受请求,并把它传递给请求的URL所指向 的Internet服务器,然后把返回的数据传给客户端,同时存储一份副本在磁盘缓存中。

      1>> squid的安装

      [root@localhost Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm 

      Preparing...            ########################################### [100%]

   1:squid                  ########################################### [100%]

  2>>squid的配置文件分类

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

     缓存目录   : /var/spool/squid

     主应用文件 : /usr/sbin/squid

     日志文件   : /var/log/squid/access.log

  3>>squid的开启与关闭

     [root@localhost squid]# service squid start|stop|restart

     

            Squid配置实例

实例一:正向代理服务器的配置

  1.设备

虚拟机 : virtualbox

     代理服务器主机: redhat5.4

       桥接             eth0 : 192.168.1.188

                       eth1 : 192.168.1.189

     测试客户端    :  windows2003

                     eth0 : 192.168.1.190

  2。要求

      可以上外网的时间: 9:00-17:00

      防止访问网站: 

      凡是包含"qq"字符的网页都不能访问

      阻止网段192.168.1.200/32访问外网

      

      

  3.拓扑图

 

  4. 配置主配置文件

[root@localhost ~]# cd /etc/squid

[root@localhost squid]# vim squid.conf

http_port 3128 

cache_dir ufs /var/spool/squid 100 16 256

cache_mem 8 MB 

cache_mgr root@root

http_access allow all

acl badclientip src 192.168.1.200/32

acl worktime time MTWFH 9:00-17:00

acl badurl1   url_regex -i www.sina.com.cn

acl badurl2   url_regex -i qq

http_access deny  worktime

http_access deny  badclientip

http_access deny   badurl1

http_access deny   badurl2

注:

http_port 3128            //配置代理端口为3128

  cache_dir ufs /var/spool/squid 100 16 256  //使用硬盘当作缓冲区,ufs指缓存区的存储类型,/var/spool/squid是硬盘上的存放目录 100代表缓存空间是100M,16与256分别代表第一级子目录及第二级子目录.

cache_mem 8 MB            //定义高速缓存,即使用多少内存作为代理服务器的缓存,一般为物理内存的1/3

  cache_mgr root@root   //设置管理员的e-mail地址

  http_access allow all  //在http_access deny all前面加上这一句,要不然的话,所有的用户都是被拒绝的

acl badclientip src 192.168.1.200/32   //拒绝此网段登陆

acl worktime time MTWFH 9:00-17:00    //拒绝此时间登陆

acl badurl1   url_regex -i   //拒绝登陆此网站

acl badurl2   url_regex -i qq               //拒绝登陆域名含有此字符的网站

http_access deny  worktime                //下面的都是对定义ACL进行拒绝操作

http_access deny  badclientip

http_access deny   badurl1

http_access deny   badurl2

测试

测试部分就不再详细说明,只要符合以上各拒绝类型的网站或来源IP都会出现以下情况

实例透明代理服务器的配置

拓扑图

 

  1.设备

虚拟机 : virtualbox

     代理服务器主机并且作为web服务器: redhat5.4

       桥接             eth0 : 192.168.1.188

        vnet1           eth1 : 192.168.2.10 (内网)

     测试客户端    :  windows2003

        vnet1           eth0 : 192.168.2.11  (内网)

  2.配置

对于透明代理服务器的配置与正向代理服务器的配置非常相似,我们只需要声明此服务器为透明代理服务器即可

1.修改http_port 3128  为

           http_port 3128 transparent

      其余的可以按照正向代理服务器来配置

2.对防火墙进行配置,把从网络接口收到的TCP协议目的端口是80的数据包重定向到本机的3128端口,命令如下:

[root@www squid]# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

3.配置透明服务器具备转发功能

     [root@www squid]# echo 1 > /proc/sys/net/ipv4/ip_forward

4.测试

      配置测试机的IP地址,将客户端的网关设置为透明服务器的对内网的ip地址,并且将浏览器中的代理配置去掉

开始测试

实例反向代理服务器的配置

拓扑图

 1.设备

虚拟机 : virtualbox

     代理服务器主机: redhat5.4

       桥接             eth0 : 192.168.1.188 (内网)

        vnet1           eth1 : 192.168.2.12   (外网)

      web服务器       centos6.2

                        eth0 : 192.168.1.27(内网)

     测试客户端    :  windows2003

        vnet1           eth0 : 192.168.2.11  (外网)

2.配置

  测试还是建立在正向代理服务器之上,我们只需要修改一定的属性即可

  修改如下

  将 http_port 3128

修改为如下

  http_port 80 vhost vport

  cache_peer 192.168.1.27 parent 80 0  originserver

添加如下acl

  acl webserver dst 192.168.2.12

  http_access allow webserver

将http_access allow all

 修改为

  http_access deny all

3.测试

注意:如果前面做过透明代理的话,并且透明代理与web服务器在同一台机器上,在测试反向代理时会出现出现的信息的不正确,最好是更换一下连接内网的ip地址。如我的从2.10更换到2.12。