Linux 使用Squid部署代理缓存服务
代理缓存服务
Squid是Linux系统中最为流行的一款高性能代理服务软件,通常用作Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存。简单来说,Squid服务程序会按照收到的用户请求向网站源服务器请求页面、图片等所需的数据,并将服务器返回的数据存储在运行Squid服务程序的服务器上。当有用户再请求相同的数据时,则可以直接将存储服务器本地的数据交付给用户,这样不仅减少了用户的等待时间,还缓解了网站服务器的负载压力。
Squid服务程序具有配置简单、效率高、功能丰富等特点,它能支持HTTP、FTP、SSL等多种协议的数据缓存,可以基于访问控制列表(ACL)和访问权限列表(ARL)执行内容过滤与权限管理功能,还可以基于多种条件禁止用户访问存在威胁或不适宜的网站资源,因此可以保护企业内网的安全,提升用户的网络体验,帮助节省网络带宽。
在使用Squid服务程序为用户提供缓存代理服务时,具有正向代理模式和反向代理模式之分。
所谓正向代理模式,是指让用户通过Squid服务程序获取网站页面等资源,以及基于访问控制列表(ACL)功能对用户访问网站行为进行限制,在具体的服务方式上又分为标准代理模式与透明代理模式。
标准正向代理模式是把网站数据缓存到服务器本地,提高数据资源被再次访问时的效率,但是用户在上网时必须在浏览器等软件中填写代理服务器的IP地址与端口号信息,否则默认不使用代理服务。
透明正向代理模式的作用与标准正向代理模式基本相同,区别是用户不需要手动指定代理服务器的IP地址与端口号,所以这种代理服务对于用户来讲是相对透明的。
Squid服务程序提供正向代理服务
反向代理模式是指让多台节点主机反向缓存网站数据,从而加快用户访问速度。可以使用Squid服务程序提供的反向代理模式来进行响应。而且,如果反向代理服务器中恰巧已经有了用户要访问的静态资源,则直接将缓存的这些静态资源发送给用户,这不仅可以加快用户的网站访问速度,还在一定程度上降低了网站服务器的负载压力。
Squid服务程序提供的反向代理模式
正向代理和反向代理
正向代理:一般用于企业局域网之中,让企业用户统一地通过Squid服务访问互联网资源,可以一定程度上减少公网带宽的开销,还能对用户访问的网站进行监管限制。
反向代理:一般是为大中型网站提供缓存服务的,它把网站中的静态保存在国内多个节点机房中,当有用户发起静态资源的访问请求时,可以就近为用户分配节点并传输资源。
配置Squid服务程序
基本设置:
Squid服务端:双网卡,内网(仅主机)IP地址192.168.10.10,外网(桥接)DHCP自动获取IP地址,能上外网;
Squid客户端:一张网卡(仅主机)IP地址192.168.10.20,客户端是Windows、Linux都行;
实验目的:在服务端部署squid程序,让原本只能访问内网的客户端通过Squid服务器进行代理上网。
服务端安装Squid服务程序:yum install -y squid。
Squid服务程序的配置文件:/etc/squid/squid.conf。
常用的Squid服务程序配置参数以及作用
标准正向代理
Squid服务程序软件包在正确安装并启动后,默认就已经可以为用户提供标准正向代理模式服务了,而不再需要单独修改配置文件或者进行其他操作。
如果客户端是Linux系统,服务端还需要清空iptables防火墙
客户端(Linux)要做的:打开浏览器(Firefox)。
Edit -> Preferences,Advanced -> Network -> Settings…,勾选“Manual proxy configuration:”,填写相关参数值HTTP Proxy:192.168.10.10 Port:3128。勾选“Use this proxy server for all protocols”。
Squid服务程序默认使用3128、3401与4827等端口号,可以把默认使用的端口号修改为其他值,以便起到一定的保护作用。注意需要把要更改的新端口加入到squid服务在SELinux域的允许列表中让SELinux放行。
ACL访问控制
Squid服务程序的ACL是由多个策略规则组成的,它可以根据指定的策略规则来允许或限制访问请求,而且策略规则的匹配顺序与防火墙策略规则一样都是由上至下;在一旦形成匹配之后,则立即执行相应操作并结束匹配过程。为了避免ACL将所有流量全部禁止或全部放行,起不到预期的访问控制效果,运维人员通常会在ACL的最下面写上deny all或者allow all语句,以避免安全隐患。
实验1:只允许IP地址为192.168.10.20的客户端使用服务器上的Squid服务程序提供的代理服务,禁止其余所有的主机代理请求。
客户机IP地址改成192.168.10.20以外的值,无法上网。
实验2:禁止所有客户端访问网址中包含linux关键词的网站。
例如http://www.linuxdown.net/网址中包含linux关键字的网站无法访问,仅限于非https网站(squid3.3.8无法限制https的网站)。
实验3:禁止所有客户端访问某个特定的网站。
实验4:禁止员工在企业网内部下载带有某些后缀的文件。
设置后,不管网址的文件是否存在,例如http://www.linuxprobe.com/book.rar,只要匹配到了规定的后缀,均会被拒绝访问(https的依然无法限制)。其次,如果是使用迅雷等P2P下载软件来下载资源的话,就只能使用专业级的应用防火墙来禁止。
透明正向代理
透明正向代理只能设置在网关上。
透明正向代理模式让用户在没有感知的情况下使用代理服务,一方面不需要用户手动配置代理服务器的信息,进而降低了代理服务的使用门槛;另一方面也可以更隐秘地监督员工的上网行为。
如果服务器同时部署了DHCP服务,则squid透明代理配合dhcp服务可以让用户无须在浏览器或其他软件中配置代理服务器地址、端口号等信息,只要打开浏览器就能自动使用代理服务。
在实现透明正向代理前,客户机需要把浏览器的代理信息删除,回归到无法通过代理上网的状态。客户机网卡设置:IP地址:192.168.10.20,子网掩码:24,默认网关:192.168.10.10(squid服务端),DNS:8.8.8.8。
要实现透明正向代理,需要SNAT技术完成数据转发,让让客户端主机将数据交给Squid代理服务器,再由后者转发到外网中。
实现透明正向代理有两种方法:
(简单)执行firewall-config弹出firewall设置窗口,把Runtime和Permanent下的Masquerading下的“Masquerade zone”勾选上。配置好客户机即刻通过浏览器上网;
(困难)采用纯命令行的iptables防火墙管理工具来部署。
采用纯命令行的iptables防火墙管理工具来配置squid透明正向代理方法详解:
要想让内网中的客户端主机能够访问外网,客户端主机首先要能获取到DNS地址解析服务的数据,才能在互联网中找到对应网站的IP地址。完成这一步配置后,客户机ping某外网网址,虽然ping不通,但应该能解获取DNS域名解析数据了(这一步的验证结果很重要);
编辑squid服务的主配置文件,开启透明正向代理模式。
完成SNAT数据转发功能。使用iptables防火墙管理命令把所有客户端主机对网站80端口的请求转发至Squid服务器本地的3128端口上。
反向代理
反向代理是Squid服务程序的一种重要模式,其原理是把一部分原本向网站源服务器发起的用户请求交给Squid服务器缓存节点来处理。但是这种技术的弊端也很明显,如果有心怀不轨之徒将自己的域名和服务器反向代理到某个知名的网站上面,从理论上来讲,当用户访问到这个域名时,也会看到与那个知名网站一样的内容(有些诈骗网站就是这样骗取用户信任的)。因此,当前许多网站都默认禁止了反向代理功能。开启了CDN(内容分发网络)服务的网站也可以避免这种窃取行为。如果访问开启了防护功能的网站,一般会看到如图所示的报错信息。
已知一网站wwww.ywbb.com无开启CDN,其IP地址:60.191.254.29。可进行反向代理实验。
服务端:还原,重新安装squid。把端口号3128修改为网站源服务器的地址和端口号,此时正向解析服务会被暂停(正向代理服务不能与反向代理服务同时使用)。
在服务端访问自己ip地址,会出现与网站wwww.ywbb.com一样内容。
Linux 使用Squid部署代理缓存服务的更多相关文章
- Linux基础学习-使用Squid部署代理缓存服务
使用Squid部署代理缓存服务 Squid是Linux系统中最为流行的一款高性能代理服务软件,通常作为Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存.Squid服务配置简单. ...
- 《Linux就该这么学》培训笔记_ch16_使用Squid部署代理缓存服务
<Linux就该这么学>培训笔记_ch16_使用Squid部署代理缓存服务 文章最后会post上书本的笔记照片. 文章主要内容: 代理缓存服务 配置Squid服务程序 正向代理 标准正向代 ...
- 虚拟机中Linux环境下使用Squid部署代理缓存服务(及透明传输)
小知识: 正确的使用Squid服务程序部署代理缓存服务可以有效提升访问静态资源的效率,降低原服务器的负载. 不仅如此,还为读者们添加了对指定IP地址.网页关键词.网址与文件后缀的ACL访问限制功能的实 ...
- 第16章 使用Squid部署代理缓存服务
章节概述: 本章节从代理缓存服务的工作原理开始讲起,让读者能够清晰理解正向代理(普通模式.透明模式)与反向代理的作用. 正确的使用Squid服务程序部署代理缓存服务可以有效提升访问静态资源的效率,降低 ...
- 使用Squid部署代理缓存服务(标准正向、透明正反向代理)
正向代理让用户可以通过Squid服务程序获取网站页面等数据,具体工作形式又分为标准代理模式与透明代理模式.标准正向代理模式: 将网站的数据缓存在服务器本地,提高数据资源被再次访问时的效率,但用户必需在 ...
- squid代理缓存服务
man.linuxde.net 1.squid是Linux系统中的代理缓存服务,通常用作WEB网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存. 2.squid服务特点:配置简单.效 ...
- 代理缓存服务之Squid
代理缓存服务 Squid是linux系统中最为流行的一款高性能代理服务软件,通常用作Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存. 简单来说,Squid服务程序会按照收到的 ...
- Linux下squid代理缓存服务环境部署
代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载 ...
- 12、Nginx代理缓存服务
通常情况下缓存是用来减少后端压力, 将压力尽可能的往前推, 减少后端压力,提高网站并发延时 1.缓存常见类型 服务端缓存 代理缓存, 获取服务端内容进行缓存 客户端浏览器缓存 Nginx代理缓存原理 ...
- openstack (3)---------部署memcached缓存服务,keystone服务
一.memcached概念 Memcached 是一个开源的.高性能的分布式内存对象缓存系统.通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高网站访问速度,加速动态WEB应用.减轻数据库负载 ...
随机推荐
- 最新go语言学习教程
go语言学习教程 集合了连接go routine.go连接redis.go连接kafka等示例,所有代码均经过实践,可以直接使用 https://github.com/fastbpmn/go-stud ...
- 关于DVWA踩坑
部署好DVWA开始欢天喜地用起来,结果有个问题,不管怎么设置这个安全等级,都显示为Impossible 原因也很显然 其实我并不太理解为什么这里要放在cookie里面,而且还放了两条. 处理方式也很明 ...
- debian11下载软件包及依赖(本地使用)
记录下实践情况,原文: https://blog.csdn.net/zgp210317/article/details/120586189?spm=1001.2101.3001.6650.2& ...
- uniapp打包app出现HTML5+ Runtime
在manifest.json->源码视图的 "app-plus"下面添加: "app-plus" : { "compatible" : ...
- appium+python测试Android真机功能报错处理
用Appium1.4.16.1测试Android8.1.0出现以下报错: C:\ProgramData\Anaconda3\python.exe D:/python/appium_learn/calc ...
- mysql报错:MySQL server has gone away
一.报错提示: 二.报错原因: 原因一: 一种可能是发送的 SQL 语句太长,以致超过了 max_allowed_packet 的大小,如果是这种原因,你只要修改 my.cnf,加大 max_allo ...
- CDO学习1 CDO简介
参考自如下网站 http://www.ceda.ac.uk/static/media/uploads/ncas-reading-2015/cdo.pdf 介绍 一个有几百种操作符的单独命令 CDO受N ...
- VS Code:4个中文乱码问题及解决方法-转载
https://www.jianshu.com/p/6a2c21cc07bb 1. 背景 凡是编程软件,特别是国外的软件,都有或多或少的中文乱码问题(毕竟程序都是用英文写的).现提出VS Co ...
- [USACO12FEB]Overplanting S
洛咕 题意:在一个笛卡尔平面坐标系里(X轴向右是正方向,Y轴向上是正方向),有\(N(1<=N<=1000)\)个矩形,第\(i\)个矩形的左上角坐标是\((x1, y1)\),右下角坐标 ...
- vue element-ui form验证中自定义验证方式通过不返回true问题
项目中使用了element-ui的form验证,自定义了手机号的验证规则,验证不通过的时候定义了callback()扔出错误.但是忘了写通过的callback().导致form验证通过拿不到返回的va ...