Squid代理服务配置

发表于 2023-05-10  540 次阅读


作者:Scanz

更新版本:V1(20170131初版,待更新格式)

----------------------------------------------

基本概念

Proxy,代理人、经纪人、中介

代替用户处理事物

能提供正常情况下不便或无法访问的资源

应用场景:

Web访问加速(正/反向)

IP伪装、“翻墙”

代理服务器工作机制

Cache池的复用

线路转移

   Cache

    ↑丨

         2 丨丨3

  1        丨丨        5

----->     丨↓      ----->

客户机        代理服务器          www.zyxzh.top

<-----               <-----

   4                   6

代理服务器分类

正向代理

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

反向代理

负载均衡

Squid正向代理

Squid服务器

Squid服务端

软件包:squid-3.1.10-19.el6_4.x86_64

系统服务:squid

主程序:/usr/sbin/squid

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

默认监听端口:TCP 3128

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

配置文件解析

常用配置项

Visible_hostname proxy.tarena.com

http_port 3128

Access_log /var/log/squid/access.log squid

Cache_mem 64MB

Cache_dir ufs /var/spool/squid 100 16 256

储存格式      目录空间MB 一级子目录数 二级子目录数

正向代理服务器

案例环境

主机B为代理服务器

主机C通过代理访问主机A的网站

     「一一一一一一一一一Internet一一一一一一一一一一一

     丨                    丨                        丨

     丨                    丨                        丨

主机C(客户机)       主机B(代理服务器)          主机A(网站服务器)

192.168.1.10           192.168.1.20               wwww.zyxzh.top

基本实现过程

1.配置并启用squid服务(主机B)

2.配置代理客户端(主机C)

3.测试代理Web访问(主机C)

配置并启用squid服务

       [root@zyxzh ~]# vim /etc/squid/squid.conf

http_access allow all                   

http_port 3128                          

cache_dir ufs /var/spool/squid 100 16 256

visible_hostname localhost.localdomain  

[root@zyxzh ~]# systemctl start squid.service

[root@zyxzh ~]# netstat -anptu | grep squid

tcp6       0      0 :::3128                 :::*                    LISTEN      12533/(squid-1)    

udp        0      0 0.0.0.0:60370           0.0.0.0:*                           12533/(squid-1)    

udp6       0      0 :::38440                :::*                                12533/(squid-1)    

客户端设置及测试

客户端设置代理服务器

测试代理Web访问

在客户端中访问http://www.zyxzh.top

查看服务器B的代理访问日志,验证来访地址

查看服务器A的Web访问日志,验证来访地址

传统正向代理

构建代理服务器192.168.4.5

1)代理192.168.4.0/24网段访问Web服务

2)客户端可以通过192.168.4.5访问Web服务器

    交换机

      丨

   一一一一一一一一 丨一一一一一一一一一

  丨                丨                 丨

移动端          代理服务器         Web服务器

   192.168.4.100       192.168.4.5      192.168.4.205

Squid反向代理

反向代理工作机制

与传统代理的方向相反

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

部署基于地区的CDN服务器

     Internet

 丨

     192.168.2.254 Squid代理 172.16.0.254

  一一一丨一一一

 丨           丨

Web1          Web2

   192.168.2.1   192.168.2.2

反向代理服务器

准备Web服务器

实际应用时,多个源站的网页应相同

为方便测试效果,实验中可提供不同页面

Web1:显示www.zyxzh.top

Web2:显示bbs.zyxzh.top

配置反向代理服务器

注意关闭自带的httpd服务,避免冲突

将代理监听的端口修改为80

[root@zyxzh ~]# systemctl stop httpd.service

http_port 80 vhost                             

cache_peer 192.168.2.1 parent 80 0 originserver

cache_peer 192.168.2.2 parent 80 0 originserver

[root@zyxzh ~]# systemctl start squid.service

客户端访问测试

通过HTTP访问代理服务器的80端口

比如:elinks --dump http://172.16.0.254

实现反向代理虚拟Web主机

客户端访问www.zyxzh.top时,squid对应的源为Web1

客户端访问bbs.zyxzh.top时,squid对应的源为Web1

    Internet

192.168.4.5 Squid代理 176.16.0.254

 丨

交换机

  一一一丨一一一

 丨           丨

Web1          Web2

  192.168.4.205 192.168.4.200

       用户

       设置代理IP以及端口 访问目标的IP通过代理(代理进行访问)结果返回到用户(要有代理IP和目标IP)

反向代理

       网站

       访问代理的IP可以接入代理设置的IP(web)(代理IP) 缓存没有 miss(有 hit) 去服务器拿

ACL访问控制列表

基本概念

ACL(访问控制列表)

定义acl

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

调用acl

http-access allow 列表名称 ...

http-access deny 列表名称 ...

ACL规则匹配顺序

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

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

常用的ACL列表类型

src                  源地址

dst                  目标地址      (www.qq.com)(一行一个IP 拒绝这个文件(域名也可以))

port                 目标端口

dstdomain            目标域        (qq.com(整个域))

time                 访问时间

maxconn              最大并发数

url_regex            目标url             url:(http://192.168.4.254/a.mp4)

urlpath_regex        整个目标URL路径     (只找路径信息)

ACL应用案例

快速入门案例

禁止任何客户机使用此代理服务

[root@zyxzh ~]# vim /etc/squid/squid.conf

acl all src 0.0.0.0/0.0.0.0

http_access deny all      

[root@zyxzh ~]# systemctl reload squid.service

允许多个局域网段在工作时间上网

[root@zyxzh ~]# vim /etc/squid/squid.conf

acl all src 0.0.0.0/0.0.0.0                    

acl MYNET src 192.168.2.0/24 192.168.3.0/24    

acl WORK time MTWHF 09:30-18:30                

http_access allow MYNET WORK                   

http_access deny all                           

[root@zyxzh ~]# systemctl reload squid.service

通过黑名单限制目标网站

[root@zyxzh ~]# vim /etc/squid/ipblock.list

61.135.16.36 

60.28.16.0/24

[root@zyxzh ~]# vim /etc/squid/dmblock.list

.qq.com      

.msn.com     

[root@zyxzh ~]# vim /etc/squid/squid.conf

acl IPaddress dst "/etc/squid/ipblock.list"    

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

http_access deny IPaddress                     

http_access deny DMname                        

[root@zyxzh ~]# systemctl reload squid.service

综合案例

定义控制列表

acl LAN1             src 192.168.1.0/24

acl PC1              src 192.168.1.66/32

acl Blk_Domain       dstdomain .qq.com .kaixin001.com

acl Work_Hours       time MTWHF 08:30-17:30

acl Max20_Conn       maxconn 20

acl Blk_URL          url_rege -i ^rtsp://^mms://       (-i 忽略大小写)acl mp4 url_regex .*.(mp4|avi|flv)

acl Blk_Words        urlpath_regex -i sex adult

启用列表控制

http_access deny LAN1 Blk_URL

http_access deny LAN1 Blk_Words

http_access deny PC1 RealFile

http_access deny PC1 Max20_Conn

http_access allow LAN1 Work_Hours

常见问题

       故障错误信息

[root@zyxzh ~]# curl --proxy 192.168.0.5:3128 http://192.168.0.5

访问被拒绝

Access control configuration prevents your request from being allowed at this time

       分析故障原因

              访问被squid拒绝

              查看squid配置文件,检查ACL权限

Varnish 服务器

部署Varnish

概述

Varnish是一款高性能且开源的反向代理服务器和http加速器

与传统的Squid相比,Varnish具有性能更高、速度更快、管理更方便等诸多优点

挪威最大的在线报纸Verdens Gang使用3台Varnish代替了原来的12台squid,性能居然比以前更好

安装

[root@zyxzh varnish]# yum -y install epel-release

[root@zyxzh varnish]# yum -y install varnish

              服务器

                     /usr/local/varnish/bin/varnishadm        #客户端程序

/usr/local/varnish/bin/varnishstat       #状态监控

              配置文件解析

RELOAD_VCL=1

VARNISH_VCL_CONF=/etc/varnish/default.vcl       #默认的vcl存放位置

VARNISH_LISTEN_PORT=6081                        #默认端口

VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1          #管理IP

VARNISH_ADMIN_LISTEN_PORT=6082                  #管理端口

VARNISH_SECRET_FILE=/etc/varnish/secret         #密钥文件

VARNISH_STORAGE="malloc,256M"                   #基于内存方式256M缓存大小

VARNISH_MIN_THREADS=50                          #最小线程数

VARNISH_MAX_THREADS=1000                        #最大线程数

VARNISH_THREAD_TIMEOUT=120                      #线程超时时间

VARNISH_STORAGE_FILE=/var/lib/varnish/varnishi_storage.bin #缓存文件的位置

VARNISH_STORAGE_SIZE=1G                         #设置存储的大小

VARNISH_USER=varnish

VARNISH_GROUP=varnish

缓存管理

              清除缓存内容的命令格式:

                     varnishadm –S securefile –T IP:Port

                     varnish> Ban.url

                     v arnihadm –s /etc/varnish/secret ban.url

              查看缓存清理列表:

                     Varnishadm ban.list

 [root@zyxzh ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 #连接管理端口

       Varnish日志

              Varnishlog [-w file]       #共享内存的日志(不管有没有人访问都有东西)

              Varnishcsa [-w file]       #类Apache日志 实时访问日志 (在内存里)

       Varnish状态

              Varnishstat

                     Client connections accepted:

                           表示客户端成功发送连接总数量

                     Client requests received:

                           客户端发送HTTP请求的总数

                     Cache hits:

                           !重要:命中缓存的次数

                     Cache misses

                           !重要:缓存非命中的个数。

                     N struct objects     表示当前被缓存的数量

                     N expired objects    表示过期的缓存内容数量

                     N LRU moved objects  表示被淘汰的缓存内容个数

常见问题

       故障错误信息

[root@zyxzh ~]# varnishd

bind(): Address already in use

       分析故障原因

              端口已经被其他服务所占用

              找到占用80端口的应用并关闭即可

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

scanz个人博客