CentOS 6.4下Squid代理服务器的安装与配置

前端之家收集整理的这篇文章主要介绍了CentOS 6.4下Squid代理服务器的安装与配置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、简介

代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。

Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向Squid 发出一个申请,要Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速度相当快。Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议并且Squid 可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。

1.1 工作流程

当代理服务器中客户端需要的数据时:

a. 客户端向代理服务器发送数据请求;

b. 代理服务器检查自己的数据缓存;

c. 代理服务器在缓存中找到了用户想要的数据,取出数据;

d. 代理服务器将从缓存中取得的数据返回给客户端。

当代理服务器中没有客户端需要的数据时:

1. 客户端向代理服务器发送数据请求;

2. 代理服务器检查自己的数据缓存;

3. 代理服务器在缓存中没有找到用户想要的数据;

4. 代理服务器向Internet 上的远端服务器发送数据请求;

5. 远端服务器响应,返回相应的数据;

6. 代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。

wKioL1f8WB6C5BO-AAB5DYqA92s184.jpg-wh_50


Squid代理服务器工作在TCP/IP的应用层。

wKiom1f8WKbzd_u-AADV3g297vY555.jpg-wh_50


1.2 Squid 分类

按照代理类型的不同,可以将Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。

@H_404_66@
  • 普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;

  • 透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理;

  • 反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

  • 官方地址:http://www.squid-cache.org/

    参考文档:http://www.squid-cache.org/Doc/config/

    二、系统环境

    操作系统:CentOS release 6.4 (Final)

    Squid版本:squid-3.1.10-20.el6_5.3.x86_64

    SELINUX=disabled

    HTTP Service: stoped

    三、安装Squid服务

    3.1 检查squid软件是否安装

    # rpm -qa|grep squid

    3.2 如果未安装,则使用yum 方式安装

    # yum -y install squid

    3.3 设置开机自启动

    # chkconfig --level 35 squid on //在3、5级别上自动运行squid服务

    四、squid服务器的配置文件说明

    squid 的主配置文件是 /etc/squid/squid.conf,所有squid的设定都是在这个文件里配置,下面我们来讲解一下该文件的配置选项。

    http_port 3128      //设置监听的IP与端口号
    MB      
    maximum_object_size4MB  //设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘
    minimum_object_size0KB  //设置squid磁盘缓存最小文件
    maximum_object_size_in_memory4096KB  //设置squid内存缓存最大文件,超过4M的文件不保存到内存
    cache_dirufs/var/spool/squid10016256  //定义squid的cache存放路径、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
    logformatcombined%&gt;a%ui%un[%tl]"%rm%ruHTTP/%rv"%Hs%<st"%{Referer}>h""%{User-Agent}&gt;h"%Ss:%Sh//log文件日志格式
    /var/log/squid/access.logcombined  
    cache_log/var/log/squid/cache.log  //设置缓存日志
    logfile_rotate60  //log轮循60天
    cache_swap_high95  //cache目录使用量大于95%时,开始清理旧的cache
    cache_swap_low90  //cache目录清理到90%时停止。
    acllocalnetsrc192.168.1.0/24  //定义本地网段
    http_accessallowlocalnet  //允许本地网段使用
    http_accessdenyall  //拒绝所有
    visible_hostnamesquid.david.dev  //主机名
    cache_mgrmchina_tang@qq.com  //管理员邮箱

    关于ACL的知识,大家可以自行百度查阅,其他更多高级选项,请参考官方文档:http://www.squid-cache.org/Doc/config/

    注意:squid2.0 和squid3.0的差别还是很大的,如果配置完,启动squid不正确,请大家多多参考官方文档的相应版本说明。

    五、普通代理服务

    即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口。

    实验拓扑图如下:

    wKiom1f8Wq-ziGJAAAB-3PgnON4855.jpg-wh_50


    5.1 配置Squid 代理服务器IP地址

    将eth1的IP地址修改为200.168.10.1

    # ifconfig eth1 200.168.10.1

    wKiom1f8WsuSYfuGAAGdhnrxBwI982.jpg-wh_50

    5.2 编辑squid 主配置文件/etc/squid/squid.conf

    http_port3128
    cache_mem64MB
    maximum_object_size4MB
    cache_dirufs/var/spool/squid10016256
    access_log/var/log/squid/access.log
    acllocalnetsrc192.168.1.0/24
    http_accessallowlocalnet
    http_accessdenyall
    visible_hostnamesquid.david.dev
    cache_mgrmchina_tang@qq.com

    5.3 初始化

    # squid �z

    wKioL1f8XU6xY2wBAAKJjVB589U083.jpg-wh_50


    5.4 启动Squid

    # /etc/init.d/squid start

    wKioL1f8XWWxYFrJAAAj1o1p_VQ997.jpg-wh_50


    5.5 配置Web 服务器

    A. 安装Apache

    # rpm -qa|grep httpd

    # yum -y install httpd

    B. 启动Apache并加入开机启动

    # /etc/init.d/httpd start

    # chkconfig httpd on

    C. 创建index.html

    # echo "<h1>Squid-Web1/200.168.10.2</h1>" > /var/www/html/index.html

    D. 修改Web服务器IP地址

    将web服务器的IP地址修改为200.168.10.2

    # ifconfig eth0 200.168.10.2

    wKioL1f8Xc-COylZAAFNUkzwdv8235.jpg-wh_50


    5.6 配置客户端IP地址

    wKiom1f8Xeuh1TClAADU2I9K_WQ227.jpg-wh_50


    5.7 配置浏览器代理

    打开浏览器(以IE为例,其他类似),菜单栏 -> 工具 -> Internet 选项 -> 连接 -> 局域网设置 -> 代理服务器,按照以下格式设置。

    wKiom1f8XrzC1AUYAACbvqhVBnc032.jpg-wh_50

    5.8 测试

    wKioL1f8XvDArzC1AADo-QochYk460.jpg-wh_50

    测试成功。

    5.9 测试错误页面

    在Oracle VM VirtualBox里,因为上面手动设置了ip地址,导致外网不能访问,刚好可以测试访问出错的页面

    wKiom1f8XxLSFf04AAHueLSD1xs428.jpg-wh_50

    可以看到在squid 配置文件里设置的参数在错误页面里的显示

    六、透明代理服务

    适用于企业的网关主机,客户机不需要指定代理服务器地址、端口等信息,通过iptables将客户机的Web访问数据转交给代理服务程序处理。

    实验拓扑图如下:

    wKioL1f8XzeSoOLWAACCafktkNM894.jpg-wh_50


    http_port3128transparentcache_mem64MB
    maximum_object_size4MB
    cache_dirufs/var/spool/squid10016256
    access_log/var/log/squid/access.log
    acllocalnetsrc192.168.1.0/24
    http_accessallowlocalnet
    http_accessdenyall
    visible_hostnamesquid.david.dev
    cache_mgrmchina_tang@qq.com

    在http_port 3128 后添加transparent 关键字。

    6.2 reload

    reload 让上面的配置生效。

    # /etc/init.d/squid reload

    6.3 添加iptables规则,把内部的http请求重定向到3128端口

    A. 启动iptables 服务

    # /etc/init.d/iptables start

    wKioL1f8X9rjBn0wAABUUGZLfFs687.jpg-wh_50


    B. 清除现有iptables filter 表规则

    # iptables -F

    wKiom1f8X9vAUKVIAAE_Q5ye2gQ975.jpg-wh_50


    C. 保存iptables 设置

    # /etc/init.d/iptables save

    wKiom1f8YWORl5CHAADb1n4oTjI472.jpg-wh_50

    wKiom1f8YXHxN6mwAADb1n4oTjI751.jpg-wh_50

    D. 查看nat 表设置

    # iptables -t nat -L -n

    wKioL1f8X9zy57MXAABhzbk2TVY397.jpg-wh_50


    E. 在nat表中新增一条规则

    # iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

    wKioL1f8YFvT_f42AACFkzG-2jU325.jpg-wh_50

    F. 保存

    wKiom1f8YTnB8SzDAAD4PrBSOuk053.jpg-wh_50

    G. 设置iptables 开机启动

    # chkconfig iptables on

    6.4 修改客户端IP地址

    将默认网关设置为squid 服务器的内网ip地址。

    wKioL1f8Ydvj1rSSAADcCyau7YM112.jpg-wh_50


    6.5 在浏览器中,取消代理设置

    wKioL1f8YdziE-S6AACUMkYiiI0217.jpg-wh_50


    6.6 测试

    wKioL1f8YhzyiL0jAAFn5oAUBzo288.jpg-wh_50

    透明代理测试成功。

    七、反向代理服务

    为Internet用户访问企业Web站点提供缓存加速

    实验拓扑图如下:

    wKiom1f8Yd3hnq3AAABx0XNSu0s295.jpg-wh_50


    7.1 关闭防火墙

    # /etc/init.d/iptables stop

    7.2 修改Web Server 主页

    Web1:

    # echo "<h1>Squid-Web1/192.168.1.18</h1>" > /var/www/html/index.html

    Web2:

    # echo "<h1>Squid-Web1/192.168.1.19</h1>" > /var/www/html/index.html

    7.3 配置squid

    http_port80accelvhost
    http_accessallowall
    cache_peer192.168.1.18parent800originserverround-robinweight=1cache_peer192.168.1.19parent800originserverround-robinweight=1visible_hostnamesquid.david.dev
    cache_mgrmchina_tang@qq.com

    7.4 启动Squid服务

    wKioL1f8Yd3BWgQfAAFh4gW8JEI698.jpg-wh_50

    squid启动失败,因为上面设定了squid的监听端口是80,和系统的http服务冲突,所以要将http服务停掉。

    7.5 squid 启动失败,将系统开机自启动的apache服务关闭

    wKiom1f8c__CoLunAABFk23fIKY272.jpg-wh_50

    7.6测试

    squid 采用了round-robin,所以客户端的访问将轮询两台web服务器,采用 "Ctrl + F5" 来深度刷新测试。

    Web1:

    wKiom1f8dDWTIWlAAAEDd3q2VJc919.jpg-wh_50


    Web2:

    wKioL1f8dDaQE2pmAAEDVp9JVQ0507.jpg-wh_50


    查看squid 的访问日志。

    wKioL1f8dDbCSoL_AAEswqsHwEM215.jpg-wh_50


    八、实际应用

    下面实验将模拟通过不同的域名访问不同的机器,简单实现企业应用中的负载均衡。客户端在浏览器地址栏中输入www.squid.dev,将访问192.168.1.18这台机器,访问bbs.squid.dev,将访问192.168.1.19这台机器。

    实验拓扑图如下



    wKiom1f8dDaTBwh4AAB7l91ZiZk919.jpg-wh_50

    8.1 修改Web Server 主页

    Web1:

    # echo "<h1>www.squid.dev/192.168.1.18</h1>" > /var/www/html/index.html

    Web2:

    # echo "<h1>bbs.squid.dev/192.168.1.19</h1>" > /var/www/html/index.html

    8.2 配置Squid

    http_port80accelvhost
    http_accessallowall
    cache_peer192.168.1.18parent800originservername=www
    cache_peer192.168.1.19parent800originservername=bbs
    cache_peer_domainwwwwww.squid.dev
    cache_peer_domainbbsbbs.squid.dev
    visible_hostnamesquid.david.dev
    cache_mgrmchina_tang@qq.com

    8.3配置客户端

    这里可以使用DNS服务来解析,这里我们为了方便,就在hosts 文件里直接指定。

    修改C:\Windows\System32\drivers\etc\hosts 文件

    wKioL1f8dN2w5hEPAACpLFTAv2U963.jpg-wh_50


    8.4 测试网络情况

    wKiom1f8dN6jWwe_AAJuUMLp09s643.jpg-wh_50


    8.5 测试www.squid.dev

    wKioL1f8dN_TWagVAAEDu-oAGxA245.jpg-wh_50


    8.6 测试bbs.squid.dev

    wKiom1f8dN_gUkMAAAECPtWtCko734.jpg-wh_50


    8.7 查看squid 访问日志

    wKioL1f8dN_SdDfbAAEePeb3YXs248.jpg-wh_50


    8.8 查看两台服务器的apache 访问日志

    # tailf /var/log/httpd/access.log

    wKiom1f8dOGCEMVsAANEEuEMcg0831.jpg-wh_50

    猜你在找的CentOS相关文章