一、正向代理
正向代理就是通常所说的代理,是某台电脑通过一台服务器来上Internet网的这种方式,其中这台电脑就叫客户机,这台服务器就叫正向代理服务器也就是通常所说的代理服务器。在这种方式中,你是主动的,网站是被动的,网站那里不能得到你的真实ip地址。(通俗讲法)
正向代理服务器。它只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器(一般在IE-Internet选项-连接-局域网设置),并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。

 

  常见的代理服务器有Squid、Varnish(只做反向代理)、ATS、Nginx(既是可以做web服务器又可以做反向代理,但通常做反向代理)

1、先在正向代理服务器安装squid组件【服务器需要2块网卡,1块是(图中eth1)桥接用来连接外网,一块是(图中eth0)host-only链接方式,用于和内网主机链接】
命令:通过yum库安装squid的rpm包
#yum -y install squid  
 接下来了解一下安装后主要文件存放位置:
 /usr/sbin/squid         安装位置
 /etc/init.d/squid        启动脚本
 /etc/squid/squid.conf    主配置文件
 Squid的监听端口是tcp/3128    udp/3130
 安装完成后squid默认配置是作为正向代理,向内网用户提供链接外网服务,可以配置squid.conf来限制内网用户上网时间,访问网址限制,访问外网文件格式限制等

vim配置squid.conf文件 (别忘记配置前先复制备份)
   在末行模式下查找http_port             大约在910行附近
   修改http_port 192.168.140.131:3128    让squid监听eth0对应ip的的3128端口
   同理查找cache_mem                  大约在1576行附近
   添加一行cache_mem 128 MB           squid可以使用的内存大小
   同理查找visible_hostname              大约在3004行附近
   添加一行visible_hostname squid.a.org    服务器名随便设一个,自行解析容易出错
   查找cache_dir                         1783行附近
   添加一行cache_dir ufs /var/spool/squid 100 16 256  此是设置缓存目录,100表示100M       
做缓存,16个一级子目录,256个2级子目录
查找http_access                    大约在637行
修改http_access deny all为http_access allow all  允许用户访问
上述操作仅仅是设置完内网可以通过squid访问外网,并没有对访问进行限制

squid初始化
 命令:
#squid -z       生成缓存目录等
 容易出现的问题解析:
2011/05/29 14:24:47| WARNING cache_mem is larger than total disk cache space!
2011/05/29 14:24:47| Creating Swap Directories
上述意思缓存128M比缓存目录100M大,需要调整
Vim编辑配置文件将cache_mem 80M在执行#squid -z


4、启动服务service squid start
[root@bogon ~]# service squid start
Starting squid: .                                          [  OK  ]
[root@bogon ~]#

通过windows的ie代理设置,检查squid工作
   (也可以用另外一台虚拟机进行验证,此虚拟机用host-only连接,并指明代理服务器
    命令#export HTTP_PROXY=http://192.168.140.131:3128)
 
通过编辑主配置文件的acl实现正向代理的访问控制:
  acl   列表名称   列表类型  列表内容
  例acl MYNETWORKS src 192.168.0.0/24
     http_access allow MYNETWORKS   允许上面的时间段通过squid正向代理访问网络
     http_access deny all               除了上面允许的访问控制之外全部拒绝访问
   
    dst方法,禁止访问某网络
    dstdomain方法 ,以主机名称或者域名的方式禁止访问
例 acl NOYAHOO dstdomain .yahoo.com
   acl NOYAHOO dst .yahoo.com   此方法先解析ip再对ip禁止访问(一般用dstdomain)
 
    url_regex -i     跟完整路径   -i忽略大小写
 urlpath_regex   部分路径
    port端口访问控制
    proto定义协议哪些不能用
    browser 浏览器访问控制
    max-conn最大链接数 256
    time根据时间指定访问控制
 time [day-abbrevs] h1:m1-h2:m2
 
 例 acl worktime time 08:00-12:00 14:00-18:00
    http_access allow MYNETWORKS worktime  (这两个访问列表取其交集,要同时满足条件)