代理缓存服务

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一样内容。

最新文章

  1. ubutu安装搜狗
  2. GSON解析
  3. 【性能测试】性能测试总结<二>
  4. IOS中实现图片点击全屏预览
  5. zoj 3329 One Person Game 概率DP
  6. deque用法 和与vector的区别
  7. RFC 2616
  8. ASP.NET Core:使用EntityFrameworkCore操作MySql来丰富仓储模块
  9. 关键字voltale
  10. jacascript CSS样式的脚本化操作
  11. 我们为什么要搞长沙.NET技术社区(4)
  12. jmeter csv 参数化
  13. codeforces710B
  14. sed命令使用介绍(转载)
  15. 【maven】之打包不带版本号的问题
  16. python 使用else代替状态变量
  17. Window 命令行神器:cmder
  18. java @option之args4j
  19. Linux 之 利用Google Authenticator实现用户双因素认证
  20. CMakeFile命令之file

热门文章

  1. IEEE 802.66( WiMax)的衰亡
  2. Content Provider详解(太懒不想抄)
  3. [转载]OpenCV中的channel是什么意思?
  4. delphi get post
  5. (python)正则表达式
  6. Beaver解析代码反向生成语法文件
  7. 路由器、集线器、交换机分别工作在OSI七层协议模型的哪一层
  8. python读取文本中的字典
  9. Python游戏开发常用库
  10. Physics Informed Deep Learning for Flow and Transport in Porous Media