squid代理服务器

  1. 云栖社区>
  2. 博客>
  3. 正文

squid代理服务器

技术小牛人 2017-11-22 19:16:00 浏览1137
展开阅读全文

安装及运行squid控制

配置squid的编译选项时,将安装目录设为/usr/local/squid,其他具体选项可以根据公司实际需求来安装

tar zxf squid-3.4.6.tar.gz

cd squid-3.4.6

./configure --prefix=/usr/local/squid -sysconfdir=/etc --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify-Chinese" --enable-underscore --enable-poll --enable-gnuregex

make

make install

--preifx=/usr/local/squid    安装目录

--sysconfdir=/etc            单独将配置文件修改到其他目录

--enable-arp-acl                可以在规则中设置直接通过客户端MAC进行管理,防止客户端使用ip欺骗

--enable-linux-netfilter        使用内核过滤

--enable-linux-tproxy            支持透明模式

--enable-async-io                异步1/0,提升存储性能,相当于--enable-pthreads  --enable-storeio=ufs,aufs --with 

--enable-err-language="Simplify_Chinese"

--enable-underscore            允许URL中有下划线

--enable-poll                使用Poll模式,提升性能

--enable-gnuregex            使用GNU正则表达式

配置安装完成后,创建链接文件,创建用户和组

        ln -s /usr/local/squid/sbin/* /usr/local/sbin

        useradd -M -s /sbin/nologin squid

        chown -R squid:squid /usr/local/squid/var

squid配置文件(/etc/squid.conf).更详细的配置选项参考/etc/squid.conf.documented文件

squid运行控制

    squid -k parse 检查配置文件是否正确

    启动,停止squid,第一次启动squid服务时,会自动初始化缓存目录,在没有可用的squid服务脚本的情况下,可以直接调用squid程序来启动服务,需要先进行初始化

        squid -z        -z选择用来初始化缓存目录

        squid            启动squid服务

        netstat -anpt | grep "squid"

    也可使用squid服务脚本,方便chkconfig和service工具进行管理。

        chkconfig --add squid 添加系统服务

        chkconfig squid on

    构建代理服务器

        三个方面的代理服务,分别有传统代理,透明代理和acl访问控制,传统代理的实现最简单,透明代理需要结合默认路由,防火墙等。acl列表主要针对客户机的web访问过程进行过滤控制。

        传统代理

            客户机的相关程序(如ie浏览器,qq聊天软件)必须指定代理服务器的地址,端口等基本信息。

            配置squid实现传统代理服务时,需要注意添加http_access allow all访问策略,以便允许任意客户机使用代理服务,为了限制下载文件大小,还需要设置reply_body_max_size项,其他的参数保持默认即可

squid.con配置文件

            http_prot 3128 

            reply_body_max_size 10 MB    允许下载的最大文件大小

            http_access allow all        放在http_access deny all之前

        防火墙添加允许3128端口的策略

    iptable -I --INPUT -p tcp --dport 3128 -j ACCEPT

    重载squid服务

客户机的代理配置浏览器“工具”--“internet选项”,弹出internet选项对话框,在“连接”选项卡中的“局域网(LAN)设置”选择主中单击“局域网设置”按钮,单出“局域网(LAN)设置”对话框。

    在linux客户机的命令行界面中使用代理服务器,必须通过环境变量来指定代理服务器的地址,端口等信息。

    HTTP_PROXY=http://10.0.0.1:3128        为使用http协议指定代理

    HTTPS_PROXY=http://10.0.0.1:3128        为使用HTTPS协议指定代理

    FTP_PROXY=http://10.0.0.1:3128        为使用ftp协议指定代理

    NO_PROXY=192.168.1.,192.168.4.        对两个局域网段不使用代理

    代理服务器的验证方法

            在squid代理服务器上查看squid访问日志的新增记录

                tail /usr/local/squid/var/logs/access.log

            查看web访问日志的新增记录

                tail /var/log/httpd/access_log    

        当从客户机再次访问同一web页面时,squid访问日志中会增加新的纪录,但web访问日志中的记录不会有变化。这说明客户机重复访问同一静态页面是,实际上是由代理服务器通过缓存提供的

      透明代理

            透明代理提供的服务功能于传统代理是一致的,但是其透明的实现依赖于默认路由和防火墙的重定向策略,因此更适用于局域网主机服务,而不适合为internet中的客户机提供服务。

        在linux网关上,构建squid为客户机访问internet提供代理服务

        在所有的局域网客户机上,只需正确设置ip地址,默认网关,不需要手动指定代理服务器的地址,端口等信息。

        透明代理的关键在于linux网关服务器,而对于客户机仅需正确网络地址,默认网关,而并不需要指定代理服务器

        关于客户机的DNS解析工作,最好还是通过正常的NDS服务器提供,不建议抛给代理服务器来处理。

        配置squid支持透明代理

            squid服务的默认配置并不支持透明代理,因此需要调整相关设置。只要在http_prot配置行加上一个“transparent”选项,就可以支持透明代理

        设置iptables的重定向策略

        透明代理中的squid服务实际上是构建在linux网关主机上的,因此需要正确折设置防火墙策略,就可以将局域网主机访问internet的数据包转交给squid进行处理。这需要用到iptables的REDIRECT策略,作用是实现本机端口的重新定向,将访问网站协议http,https的外发数据包转交给本机的squid服务(3128)

        防火墙做重定向操作,将访问本机80,443端口的请求重定向到3128端口

        由于ftp协议涉及多个端口,多个连接,虽然也可以通过http代理进行访问,但是使用透明代理不便实现,因此最佳做法仍然是采用传统代理的方式---手动指定代理服务器地址,端口号。

        验证透明代理的使用,如果存在手动指定的代理服务器设置应在客户机中将其去除,在linux客户机的命令行界面中,可以通过unset命令清除HTTP_PROXY,HTTPS_PROXY等变量

            unset HTTP_PROXY HTTPS_PROXY

        ACL访问控制

            squid提供啦强大的代理控制机制,通过合理的设置ACL并进行限制,可以针对源地址,目标地址,访问的URL路径,访问的时间等各种条件进行过滤。在配置文件/etc/squid.conf中,ACL访问控制通两个步骤来实现:其一,使用acl配置项定义需要控制的条件,其二,通过http_access配置项对已定义的列表做允许或拒绝访问控制。

            定义访问控制列表

                    acl  列表名称  列表类型  列表内容

                列表内容有管理员自行指定,用来识别控制条件:列表类型使用squid预定义的值,对应不同类别的控制条件;列表内容是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值

        定义访问控制列表时,应结合当前网络环境正确分析用户的访问需求,准确定义使用代理服务器的控制条件。支队不同的客户机地址,需要限制访问的目标网站,特定的时间段,分别定义列表

        vim /etc/squid.conf

        acl    localhost src 127.0.0.1/255.255.255.255    源地址为127.0.0.1

        acl    MYLAN src  192.168.1.0/24  192.168.4.0/24    客户机网段

        acl   to_localhost dst 127.0.0.0/8    目标地址为127.0.0.1

        acl    MC20 maxconn 20                最大并发连接20

        acl    BlackURL    rul_regex -i ^rtsp:// ^emule://    以rtsp://等开头的URL

        acl    MEDIAFILE    urlpath_regex -i \.mp3$  \.mp4$ \.mpvb$    以.mp3,.mp4,.rmvb结尾的RUL路径

        acl    WORKTIME    time MTWHF  08:30-17:30        时间为周一至周五8:30-17:30

        当需要限制的同一类对象较多时,可以使用独立的文件来存放,在acl配置行的列表内容处指定对应文件位置即可。

        mkdir /etc/squid    

        cd /etc/squid

        vim    ipblock.list        建立目标ip地址名单

        69.29.43.2

        10.22.34.0/16

        vim dmblock.list        建立目标域地址名单

        .qq.com

        .msn.com

        .live.com

        .verycd.com

        vim /etc/squid.conf

        acl IPBLOCK dst "/etc/suiqd/ipblock.list"

        acl DMBLOCK dstdomain "/etc/squid/dmblock.list"

        设置访问权限

            定义好各种访问控制列表以后,需要使用httpd_access配置项来进行控制,必须注意的是http_access配置行必须放在对应的acl配置行之后。每一行http_access配置确定一条访问控制规则。格式:

        http_access allow或deny 列表名......

        在每一条http_access规则中,可以同时包含多个访问控制列表名,各个列表之间以空格分隔,为“与”关系,表示满足所有控制列表对应的条件才会进行限制,需要使用取反条件时,可以在访问控制列表前添加“!”符号

        vim /etc/squid.conf

        http_access deny MYLAN KEDIAFILE

        http_access deny MYLAN IPBLOCK

        http_access deny MYLAN DMBLOCK

        http_access deny MYLAN MC20

        http_access allow MYLAN WORKTIME

        http_access deny all        默认禁止所有客户机使用代理

执行访问控制时,squid按照各条规则的顺序依次进行检查,如果找到一条相匹配的规则就不再向后搜索,因此,规则的顺序安排是非常重要的。

        没有设置任何规则时:squid服务将拒绝客户端的请求

        有规则但找不到相匹配的项:squid将采用与最后一条规则相反的权限,即如果最后一条规则是allow,就拒绝客户端的请求,否则允许该请求。

        通常情况下,把最常用的控制规则放在最前面,以减少squid的负载,在访问控制的总体策略上,建议采用“先拒绝后允许”或“先允许后拒绝”的方式,最后一条规则设为默认策略。设为“http_access allow all”或者“http_access deny all”

    squid日志分析

        sarg全名squid analysis report generator,是一款squid日志分析工具,采用HTML格式,详细列出每一位用户访问internet的站点信息,时间占用信息,排名,连接次数,访问量等。

    安装GD库

            yum -y install gd gd-devel

    安装sarg

            mkdir /usr/local/sarg

            tar zxf sarg-2.3.7

            ./configure --preifx=/usr/local/sarg -sysconfdir=/etc/sarg --enable-extraprotectoin && make && make install

            sysconfdir=/etc/sarg    配置文件目录,默认是/usr/loca/etc

            --enable-extraprotection        添加额外的安全保护

    配置

        vim /etc/sarg/sarg.conf

        access_log /usr/local/squid/var/logs/access.log    指定squid的访问日志文件

        title "Squid User Access Reports"        网页标题

        output_dir /var/www/html/sarg        sarg报告的输出目录

        user_ip no            使用用户名显示

        exclude_hosts /usr/local/sarg/noreport        指定不计入排列的站点列表文件

        topuser_sort_field connect BYTES reverse   在top排序中,指定连接次数,访问字节数,采用降序排列,升序将reverse换成normal

        user_sort_field connect reverse    对于用户访问记录,连接次数按降序排列

        overwrite_report no     当那个日期报告已经存在,是否覆盖报告

        mail_utility mailq.postfix    发送邮件报告的命令

        charset UTF-8        使用字符集

        weekdays 0-6        指定top排序时的星期周期,0为周日

        hours 9-12,14-16,18-20        指定top排序时的时间周期

        www_document_root /var/www/html        网页根目录

    运行

        上述配置中,添加啦不计排序的站点,需要存在下面这文件

        touch /usr/local/sarg/noreport

        直接执行sarg即可启动一次记录,建议设置符号链接,然后执行rarg,会看到提示信息

        ln -s /usr/local/sarg/bin/sarg /usr/local/bin

        sarg

本文转自   宏强   51CTO博客,原文链接:http://blog.51cto.com/tanhong/1898974

网友评论

登录后评论
0/500
评论
技术小牛人
+ 关注