使用Squid部署代理缓存服务(CentOS 7.4)

使用Squid部署代理缓存服务

正向代理不仅可以让用户使用squid代理服务器上网,还可以基于IP地址、网站关键字、下载文件后缀等实现类似行为管控的功能。

反向代理可以大幅提升网站的访问速度,减轻网站服务器的负载压力。

  • 虚拟机配置

  • 服务端IP
[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.16.10  netmask 255.255.255.0  broadcast 192.168.16.255
        inet6 fe80::6bea:7e4d:fd17:8225  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:08:3e:47  txqueuelen 1000  (Ethernet)
        RX packets 6  bytes 726 (726.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 266  bytes 25392 (24.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.157  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::119b:77df:e22:7194  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:08:3e:51  txqueuelen 1000  (Ethernet)
        RX packets 38296  bytes 2498587 (2.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1261  bytes 125135 (122.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 服务端安装squid
[[email protected] ~]# yum install -y squid
[[email protected] ~]# systemctl restart squid
[[email protected] ~]# systemctl enable squid
Created symlink from /etc/systemd/system/multi-user.target.wants/squid.service to /usr/lib/systemd/system/squid.service.
  • 标准正向代理——客户端设置,IE选项设置
C:\Users\Administrator>ping www.baidu.com
Ping 请求找不到主机 www.baidu.com。请检查该名称,然后重试。  #外网不通


3128端口号是squid标准正向解析的默认监听端口,设置完成之后依然是无法ping通外网的,但是可以打开网页了

  • 服务端修改squid配置文件
[[email protected] ~]# vim /etc/squid/squid.conf
http_port 10000  #大约第59行,将默认的3128端口修改为10000
[[email protected] ~]# systemctl restart squid
  • 配置selinux
[[email protected] ~]# semanage port -l | grep squid
squid_port_t                   tcp      3128, 3401, 4827
squid_port_t                   udp      3401, 4827
[[email protected] ~]# semanage port -a -t squid_port_t -p tcp 10000
[[email protected] ~]# systemctl restart squid
  • 客户端修改默认端口号

修改IE选项中的端口号为10000

重新打开网页,成功

  • 透明正向代理——客户端还原IE选项
[[email protected] ~]# iptables -t nat -A POSTROUTING -p udp --dport 53 -o ens37 -j MASQUERADE  #DNS流量转发,端口默认53
[[email protected] ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1  #新增此行,允许Squid服务器转发IPv4数据包
[[email protected] ~]# sysctl -p  #让转发参数立即生效
net.ipv4.ip_forward = 1

客户端网关和DNS设置

网关为192.168.16.10
DNS位114.114.114.114
此时ping www.baidu.com进行测试,仍无法ping通,但是可以返回其公网IP了

C:\Users\Administrator>ping www.baidu.com

正在 Ping www.a.shifen.com [111.13.100.92] 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。

111.13.100.92 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),
  • 服务端进行修改squid配置文件
[[email protected] ~]# vim /etc/squid/squid.conf
http_port 3128 transparent  #大约第59行,设置为透明转发
cache_dir ufs /var/spool/squid 100 16 256  #大约第62行,去掉前面的#设置缓存的保存路径
[[email protected] ~]# systemctl stop squid  #先停止squid服务
[[email protected] ~]# squid -k parse  #检查主配置文件是否有错误
2018/08/03 21:49:23| Startup: Initializing Authentication Schemes ...
2018/08/03 21:49:23| Startup: Initialized Authentication Scheme ‘basic‘
2018/08/03 21:49:23| Startup: Initialized Authentication Scheme ‘digest‘
2018/08/03 21:49:23| Startup: Initialized Authentication Scheme ‘negotiate‘
2018/08/03 21:49:23| Startup: Initialized Authentication Scheme ‘ntlm‘
2018/08/03 21:49:23| Startup: Initialized Authentication.
2018/08/03 21:49:23| Processing Configuration File: /etc/squid/squid.conf (depth 0)
2018/08/03 21:49:23| Processing: acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
2018/08/03 21:49:23| Processing: acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
2018/08/03 21:49:23| Processing: acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
2018/08/03 21:49:23| Processing: acl localnet src fc00::/7       # RFC 4193 local private network range
2018/08/03 21:49:23| Processing: acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
2018/08/03 21:49:23| Processing: acl SSL_ports port 443
2018/08/03 21:49:23| Processing: acl Safe_ports port 80         # http
2018/08/03 21:49:23| Processing: acl Safe_ports port 21         # ftp
2018/08/03 21:49:23| Processing: acl Safe_ports port 443                # https
2018/08/03 21:49:23| Processing: acl Safe_ports port 70         # gopher
2018/08/03 21:49:23| Processing: acl Safe_ports port 210                # wais
2018/08/03 21:49:23| Processing: acl Safe_ports port 1025-65535 # unregistered ports
2018/08/03 21:49:23| Processing: acl Safe_ports port 280                # http-mgmt
2018/08/03 21:49:23| Processing: acl Safe_ports port 488                # gss-http
2018/08/03 21:49:23| Processing: acl Safe_ports port 591                # filemaker
2018/08/03 21:49:23| Processing: acl Safe_ports port 777                # multiling http
2018/08/03 21:49:23| Processing: acl CONNECT method CONNECT
2018/08/03 21:49:23| Processing: http_access deny !Safe_ports
2018/08/03 21:49:23| Processing: http_access deny CONNECT !SSL_ports
2018/08/03 21:49:23| Processing: http_access allow localhost manager
2018/08/03 21:49:23| Processing: http_access deny manager
2018/08/03 21:49:23| Processing: http_access allow localnet
2018/08/03 21:49:23| Processing: http_access allow localhost
2018/08/03 21:49:23| Processing: http_access deny all
2018/08/03 21:49:23| Processing: http_port 3128 transparent
2018/08/03 21:49:23| Starting Authentication on port [::]:3128
2018/08/03 21:49:23| Disabling Authentication on port [::]:3128 (interception enabled)
2018/08/03 21:49:23| Processing: cache_dir ufs /var/spool/squid 100 16 256
2018/08/03 21:49:23| Processing: coredump_dir /var/spool/squid
2018/08/03 21:49:23| Processing: refresh_pattern ^ftp:          1440    20%     10080
2018/08/03 21:49:23| Processing: refresh_pattern ^gopher:       1440    0%      1440
2018/08/03 21:49:23| Processing: refresh_pattern -i (/cgi-bin/|\?) 0    0%      0
2018/08/03 21:49:23| Processing: refresh_pattern .              0       20%     4320
2018/08/03 21:49:23| Initializing https proxy context
[[email protected] ~]# squid -z  #对Squid服务程序的透明代理技术进行初始化,生成缓存目录
[[email protected] ~]# 2018/08/03 21:50:01 kid1| Set Current Directory to /var/spool/squid
2018/08/03 21:50:01 kid1| Creating missing swap directories
2018/08/03 21:50:01 kid1| /var/spool/squid exists
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/00
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/01
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/02
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/03
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/04
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/05
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/06
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/07
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/08
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/09
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/0A
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/0B
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/0C
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/0D
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/0E
2018/08/03 21:50:01 kid1| Making directories in /var/spool/squid/0F
[[email protected] ~]# iptables -t nat -A PREROUTING  -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128  #把所有客户端主机对网站80端口的请求转发至Squid服务器本地的3128端口上
[[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.16.0/24 -o ens33 -j SNAT --to 192.168.10.157  #SNAT数据转发。16.0网段为仅主机模式网段,ens33位仅主机网络端口,10.157为桥接网络端口
[[email protected] ~]# systemctl restart squid

此时客户端可以直接ping通了

C:\Users\Administrator>ping www.wuxier.cn

正在 Ping www.wuxier.cn [182.61.34.191] 具有 32 字节的数据:
来自 182.61.34.191 的回复: 字节=32 时间=34ms TTL=50
来自 182.61.34.191 的回复: 字节=32 时间=34ms TTL=50
来自 182.61.34.191 的回复: 字节=32 时间=35ms TTL=50
来自 182.61.34.191 的回复: 字节=32 时间=35ms TTL=50

182.61.34.191 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 34ms,最长 = 35ms,平均 = 34ms
  • 验证确实是通过代理转发,而不是通过服务器来直接上网

①基于客户端的IP地址
服务端配置squid配置文件

[[email protected] ~]# vim /etc/squid/squid.conf
acl client src 192.168.16.21  #新增此行,允许来源是192.168.16.21的客户端上网
http_access allow client  #大约第31行,新增此行,允许刚才设置的客户端192.168.16.21上网
http_access deny all  #大约第32行,新增此行,拒绝其他客户端上网
[[email protected] ~]# systemctl restart squid  #配置完成后重启服务

从客户端(IP为192.168.16.20)重新打开刚才的网页,提示如下图

将IP修改为192.168.16.21后,网页恢复正常访问,如下图

说明我们的网络服务是受到了代理服务的限制

②基于网址关键词
修改squid配置文件

[[email protected] ~]# vim /etc/squid/squid.conf
acl deny_keyword url_regex -i wuxi  #新增此行,acl后的相当于是别名,可以自定义。url_regex代表匹配网址,接参数-i代表拒绝网址中包含此关键词的。或者不用参数-i,直接接特定的网址全名,如http://www.wuxier.cn
 http_access deny deny_keyword  #新增此行
[[email protected] ~]# systemctl restart squid  #配置完成后重启服务

当打开www.wuxier.cn的时候无法访问,因为包含了wuxi;而打开www.51cto.com等不包含wuxi的网址时都可以正常访问。

注意:如果网址时https的是经过加密的则是不受限制的

③禁止下载带有某些后缀的文件
修改squid配置文件

[[email protected] ~]# vim /etc/squid/squid.conf
acl badfile url_regex -i \.mp3$ \.rar$  #新增此行,\代表转义,$代表以某后缀结尾
http_access deny badfile  #新增此行
[[email protected] ~]# systemctl restart squid  #配置完成后重启服务

当下载.rar压缩包的时候无法下载,如下图(如果是使用迅雷等工具会无法进行限制)

  • 反向代理

首先找到一个网站源服务器的IP地址,通过ping网站域名得到其公网IP,如果通过公网IP能打开其网站,则符合我们的条件。然后编辑Squid服务程序的主配置文件,把端口号3128修改为网站源服务器的地址和端口号,此时正向解析服务会被暂停(它不能与反向代理服务同时使用)。

修改squid配置文件

[[email protected] ~]# vim /etc/squid/squid.conf
http_port 192.168.10.157:80 vhost  #大约第58行,将原来的http_port 3128修改为此配置。192.168.10.157为本机IP。
cache_peer 58.250.26.38 parent 80 0 originserver  #新增此行。缓存节点的IP地址,58.250.26.38即获取的公网IP,定义为我们的一个父节点,端口号为80,它是一台原始的服务器
[[email protected] ~]# systemctl restart squid  #配置完成后重启服务

当我们访问192.168.10.157的时候就能直接访问刚才公网可以访问的网站了,如下图

原文地址:http://blog.51cto.com/jschinamobile/2154800

时间: 2024-07-30 15:49:08

使用Squid部署代理缓存服务(CentOS 7.4)的相关文章

16 使用Squid部署代理缓存服务

16 使用Squid部署代理缓存服务 正向代理模式不仅可以让用户使用Squid代理服务器上网,还可以基于指定的IP地址.域名关键词.网站地址或下载文件后缀等信息,实现类似于访问控制列表的功能.反向代理模式可以大幅提升网站的访问速度,还可以帮助网站服务器减轻负载压力. 标准正向代理--分为标准代理模式和透明代理模式 透明正向代理 访问控制列表 反向代理 [[email protected] ~]# ping www.linuxprobe.com [[email protected] ~]# yum

liunx学习16章-使用Squid部署代理缓存服务

2019年12月15日 Squid是Linux系统中最为流行的一款高性能代理服务软件,通常用作Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存.简单来说,Squid服务程序会按照收到的用户请求向网站源服务器请求页面.图片等所需的数据,并将服务器返回的数据存储在运行Squid服务程序的服务器上.当有用户再请求相同的数据时,则可以直接将存储服务器本地的数据交付给用户,这样不仅减少了用户的等待时间,还缓解了网站服务器的负载压力. Squid服务程序具有配置简单.效率高.功能丰富

第16章 使用Squid部署代理缓存服务

Squid是Linux系统中最为流行的一款高性能代理服务软件,通常用作Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存,Squid服务程序支持HTTP.FTP.SSL等多种协议的数据缓存,可以基于访问控制列表(ACL)和访问权限列表(ARL)执行内容过滤与权限管理功能,还可以基于多种条件禁止用户访问存在威胁或不适宜的网站资源.Squid服务程序提供缓存代理服务时,具有正向代理模式和反向代理模式,正向代理模式又分为标准正向代理模式.透明正向代理模式2种.正向代理模式,是指让

Linux下squid代理缓存服务环境部署

代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载一个主页时,可以向Squid 发出一个申请,要Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速度相当快.Squid 可以代理HTTP.FTP.GOPHER.SS

nginx的web缓存服务环境部署记录

web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输出内容给客户端,而不是向源服务器再次发送请求.Web缓存降低了内容源Web服务器,数据库的负载,减少了网络延迟,提高了用户访问的响应速度,增强了用户体验. web缓存服务器中,最著名的要数Squid Cache(简称为Squid),Squid是一个流浪的自由软件的代理服务器和Web缓存服务器.---

squid正向代理和反向代理服务器搭建

squid是比较知名的代理软件,它不仅可以跑在Linux上还可以跑在Windows和UNIX上,它的技术已经非常成熟.目前使用squid的用户也十分广泛.squid与Linux下其他的代理软件如Apache.socks.TIS FWTK等相比,下载安装简单,配置简单灵活,支持缓存和多种协议. squid之所以用的很多,是因为它的的缓存功能,squid的缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O.从经济角度考虑,它是很多网站架构中不可或缺的角色. squid可以做正向代理,也可以

缓存服务之varnish的简单应用

Varnish: varnish是一款轻量级的http cache和反向代理软件,类似于nginx,缓存功能非常强大,相比squid重量级的缓存服务,varnish 具有性能更高.速度更快.管理更加方便等诸多优点,很多大型的网站都开始尝试使用 varnish 来替换 squid,这些都促进 varnish 迅速发展起来. 挪威的最大的在线报纸 Verdens Gang(vg.no) 使用 3 台 Varnish 代替了原来的 12 台 Squid,性能比以前更好,这是 Varnish 最成功的应

红帽7 Squid部署代理服务

代理缓存服务 Squid 是 Linux 系统中最为流行的一款高性能代理服务软件,通常用作 Web 网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存.Squid 服务程序具有配置简单.效率高.功能丰富等特点,它能支持 HTTP.FTP.SSL等多种协议的数据缓存,可以基于访问控制列表(ACL)和访问权限列表(ARL)执行内容过滤与权限管理功能. 在使用 Squid 服务程序为用户提供缓存代理服务时,具有正向代理模式和反向代理模式,正向代理模式,是指让用户通过 Squid 服务程

Squid缓存服务器之ACL访问控制与反向代理

Squid缓存服务器之ACL访问控制与反向代理 1.ACL访问控制 Squid提供了强大的代理控制机制和,通过合理设置ACL并进行限制.可以针对原地址.目标地址.访问的URL路径.访问的时间等各种条件进行过滤. 在配置文件squid.conf中ACL访问控制通过以下两个步骤来实现:其一,使用acl配置项定义需要控制的条件:其二,通过http_access配置项对已定义的列表做"允许"或者"拒绝"访问的控制. 1).定义访问控制列表 每一行acl配置可以定义一条访问控