• day11-squid


    运行&维护    operation&maintance

    squid代理服务器

    功能:代理、缓存、ACL(访问控制)

    角色:正向代理、透明代理(网关)、反向代理)

    传统代理(正向代理)

    客户程序(如浏览器)需指定代理服务器的地址、端口

    透明代理

    客户端需要设置特定的网关

    反向代理

    负载均衡

    优势

    通过缓存增加访问速度

    提高网络的安全性

    Squid历史悠久,技术积淀深厚,开源

    缺点

    性能不足,借助于windows、linux等通用性操作系统才能实现上网加速等功能

    #yum install squid –y

    主程序:/usr/sbin/squid

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

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

    默认监听端口:TCP 3128

    配置文件选项:

    http_port 3128        //端口

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

    squidcache_mem 64 MB    //内存缓存大小

    cache_diir ufs /var/spool/squid 100 16 256    //本地硬盘缓存

    ufs代表文件类型,(若其他需要插件)

    /var/spool/squid:实际存放缓存文件的路径

    100:代表100M(缓存容量)

    16:缓存目录下一级目录个数

    256:二级子目录

    常用配置

    visible_hostname a    //设置主机名

    maximum_object_size    4096 KB    //最大缓存文件的容量

    reply_body_max_size 10240000 allow all //可以给用户返回的资源最好大容量

    实验1:传统代理    客户端配置代理IP及端口访问WEB服务

    A为squid服务器、B为HTTP服务器、C为客户端

    A主机设置

    [root@a squid]# /etc/init.d/squid start

    [root@a squid]# netstat -anpt |grep "squid"

    tcp 0 0 :::3128 :::* LISTEN 9833/(squid)

    B主机设置

    echo "this is test b"> /var/www/html/index.html

    [root@b html]# /etc/init.d/httpd start

    C主机访问WEB服务的IP或域名

    验证结果

    A主机查看

    [root@a squid]# cat /var/log/squid/access.log

    1474094876.954 5 192.168.100.1 TCP_MISS/304 236 GET http://192.168.100.101/ - DIRECT/192.168.100.101

    B主机查看

    [root@b ~]# tail -f /var/log/httpd/access_log

    192.168.100.100 - - [17/Sep/2016:14:47:57 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"

    C主机

    当文件大于10MB时就报错

    注意

    # And finally deny all other access to this proxy

    http_access deny all    这条规则是只允许除本机或机网段,若需所有网络访问修改为http_access allow all

    透明代理

    工作机制

    linux网关提供透明代理服务,客户端无需配置

    局域网通过代理访问公网中的网站

    需要设置防火墙策略,将客户机的WEB访问数据转发给代理服务程序处理

    实验2:透明代理    客户端配置网关,代理服务器完成转发功能

    CàAàB

    A主机代理服务器

    修改配置文件

    http_access allow all

    http_port 3128 transparent

    开启路由转发

    vim /etc/sysctl.conf

    net.ipv4.ip_forward = 1

    sysctl -p

    网关设置转发

    iptables 语法格式    

    iptables –t 表名 –I 链 条件 –J 结果

    [root@a ~]# iptables -tnat -I PREROUTING -ieth0 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128

    [root@a ~]# iptables -tnat -I PREROUTING -ieth0 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to-ports 3128

    防火墙3个表,5个链

    filter(过滤表)

        INPUT(入站),OUTPUT(出站),FORWARD(转发)

    nat(地址转换表)

    mangle(管理表)

    PREROUTING    路由前

    POSTROUTING     路由后

    源地址转换路由后

    目标地址转换路由前

    -A    插入一条规则

    -I eth0 指定数据包从哪个网卡进来(input)

    -s 指定源地址

    -p 指定协议

    --dport 指定目标端口

    B主机为WEB——IP为192.168.101.101

    C主机客户端配置

    网关指向代理服务器主机

    验证

    A主机

    1474113478.315 9 192.168.100.102 TCP_MISS/200 429 GET http://192.168.101.101/ - DIRECT/192.168.101.101 text/html

    B主机

    192.168.101.100 - - [17/Sep/2016:19:57:58 +0800] "GET / HTTP/1.1" 200 15 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.13.6.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"

    反向代理——与传统代理的方向相扳

    代替公网用户访问组织内部的web服务器

    部署基于地区的CND服务器

    实验3:反向代理    代理服务器相当于WEB服务器,但不是真的

    parent    父级    真实的服务器上取数据

    sibling    兄弟级    代理服务器上取数据

    A

    http_port 80 vhost

    cache_peer 192.168.101.101 parent 80 0 originserver

    若是1台服务器多个虚拟主机

    http_port 80 vhost

    cache_peer 192.168.101.101 parent 80 0 originserver name=www

    cache_peer 192.168.101.101 parent 80 0 originserver name=bbs

    cache_peer_domain www www.b.com

    cache_peer_domain bbs bbs.b.com

    B主机

    NameVirtualHost *:80

    <VirtualHost *:80>

    DocumentRoot /var/www/html/web1

    ServerName www.a.com

    </VirtualHost>

    <VirtualHost *:80>

    DocumentRoot /var/www/html/web2

    ServerName bbs.a.com

    </VirtualHost>

    C主机

    [root@c ~]# curl http://192.168.100.100

    this is test b

    C客户机验证

    192.168.100.100 b www.b.com bbs.b.com

    [root@c ~]# curl www.b.com
    this is test web1
    [root@c ~]# curl bbs.b.com
    this is test web2

    Squid缓存

    缓存管理机制

    refresh_pattern语法格式

    refresh_pattern [-i] regexp min percent max [options]

    -i  忽略大小写

    regexp  正则表达式

    min 是过时响应的最低时间限制  最小缓存时间

    max参数是存活响应的最高时间限制  最大缓存时间

      中间的百分比为最好后修改系数

      最后修改系数=响应时间/资源时间

      如果定义为20%的话,则:

      20%=响应时间/资源时间

    percent根据最好后为何会那天系数LM-factor计算过期时间

    LM-factor=(response age)/(ressource age)

    resource age =对象进入cache的时间-对象的last_modified

    response age =当前时间-对象进入cache的时间

    清理缓存

    方法一:

    grep -r 资源 缓存路径

    grep -r a.html /var/spool/squid/

    rf -rf xxx

    grep -r $1 /var/spool/squid/for i in `cat a.txt`
    
    do
    
      grep -r $i /var/spool/squid/|awk '{print $2}'
    
    done

    方法二:

    vim /etc/squid/squid.conf

    acl purge method PURGE
    http_access allow purge locathost

    squidclient -h 代理IP -p 端口 -m PURGE http://www.b.com

    squidclient -h 127.0.0.1 -p 80 -m PURGE 

    可以HTTPD服务配置文件里加

    cachedisable /var/www/html/web1/index.html

    禁止缓存这个页面

    Squid  访问控制

    注意:先定义ACL,给ACL取个名字,在允许或拒绝该ACL

    定义ACL格式:

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

    调用ACL

    http_access allow acl名称

    http_access deny acl名称

    常用的acl列表类型

    src  源地址

    dst  目标地址

    port  目标端口

    dstdomain  目标域

    time  访问时间

    maxconn  最大并发连接

    url_regex  目标URL地址  url=http://www.b.com/a.html

    uurlpath_regex  整个目标URL路径  urlpath=/a.html

    ACL规则顺序:

    未设置任何规则时,拒绝所有访问请求

    已设置规则时,集资进行检查,找到匹配即停止,否则采用与最好后一条规则相反的权限

    ACL WORK time MTWHF 09:00-18:00  定义一个WORK的ACL时间为早上9点到下午18点

    http_access allow MYNET WORK      启用WORK规则

    http_access deny all  拒绝所有

    定义多个的IP和域名

    acl ipaddress dst "/etc/squid/ip.list"

    acl domainname dstdomain "/etc/squid/domainname.list"

    拒绝规则

    http_access ipaddress deny all

    htt_domainname deny all

    限制源——网段

    acl lan1 src 192.168.1.0/24

    限制源——单IP

    acl pc1 src 192.168.1.100/24

    限制目标区域——域名

    acl blk_domain dstdoamin .qq.com .baidu.com

    限制并发——10个人同时连接代理

    acl max10_conn maxconn 10

    限制URL——地址栏开始是XXX

    acl blk_url url_regex -i ^rtsp:// ^mms://

    限制URL路径

    acl blk_words urlpath_regex -i sex adult

    acl fiile urlpath_regex -i .rmvb$ .mp4$ .mp3$

    限制MAC地址

    acl aclname arp mac-address

    限制端口 

    acl aclname port 80 0-1024...

    定义从百度链接转到XXX.COM  

    acl aclname referer_regex -i baidu.com

    拒绝百度链接转换

    http_access deny aclname

  • 相关阅读:
    元旦晚会
    CF906D Power Tower
    基于51单片机的多功能秒表(校赛作品)
    集训队第二次排位赛
    《史记》——五帝本纪第一,黄帝部分
    原创,让你的 "Ajax"请求华丽转身,给 "body" 或是 "Div" 加上Loading遮罩!
    Excel导出通用操作方式
    图片(img标签)的onerror事件,你有用过嘛?
    @Url.ActionLink 和 @Url.Action
    原创,自己做的一个简单实用的提示小插件,兼容性很好,基本上都兼容!
  • 原文地址:https://www.cnblogs.com/fina/p/5879772.html
Copyright © 2020-2023  润新知