概述:作为应用层的代理服务软件,squid主要提供缓存加速和应用层过滤控制的功能。


代理的工作机制:当客户机通过代理来请求WEB页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面内容反馈给客户机;如果缓存中没有客户机需要访问的页面,则由代理服务器向lnternet发送访问请求,当获得WEB页面以后,将网页数据保存到缓存中并发给客户机。

           HTTP代理的缓存加速对象主要是文字,图像等静态WEB元素。使用缓存机制后,当客户机在不同的时候访问同一WEB元素,或者不同的客户机访问相同的WEB元素时,可以直接从代理服务器的缓存中获得结果。这样就大大减少了向Internet重复提交WEB请求的过程,提高了客户机的WEB访问响应速度

          由于客户机的WEB访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实IP地址,起到一定的保护作用 。另一方面,代理服务器担任着类似“经纪人”的角色,所以有机会针对要访问的目标,客户机的地址,访问的时间段等进行过滤控制。


代理的基本类型:

         传统代理:也就是普通的代理服务,首先必须在客户机的浏览器,QQ聊天工具,下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理服务来访问网络。对于网页浏览器,访问网站时的域名解析请求也会发送给指定的代理服务器。

         透明代理:提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由,防火墙策略将WEB访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对客户机来说是“透明”的,用户甚至并不知道自己在使用代理服务,所以称为“透明代理”。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给DNS服务器。


在实际应用中,传统代理多见于Internet环境,如为QQ程序使用代理可以隐藏本机的真实IP,为下载工具使用多个代理可以规避服务器的并发连接数限制。而透明代理多见于局域网环境,如在Linux网关中启用透明代理后,局域网主机无需进行额外的设置就可以获得更好的上网速度。


一 传统代理

构建squid传统代理和透明代理_Linux     

实验环境:

角色名称系统环境IP地址
Squid代理CentOS7 (网卡为NAT模式)192.168.199.129
web服务器CentOS7(网卡为NAT模式)192.168.199.128
客户机Windows7(网卡为NAT模式)192.168.199.133
1 使用yum下载squid服务

构建squid传统代理和透明代理_代理_02


修改squid.conf配置文件

构建squid传统代理和透明代理_squid_03

构建squid传统代理和透明代理_代理_04


3 先清空防火墙规则,接着在防火墙添加允许策略,最后开启squid服务,通过查看3128端口可以看到该服务已经被开启

构建squid传统代理和透明代理_Linux_05


4 在WEB服务器上安装Apache服务,并且进行开启,同时为了便于访问需要关闭防火墙和selinux

构建squid传统代理和透明代理_squid_06

构建squid传统代理和透明代理_代理_07


5 在客户机上设置代理服务器,在浏览器中选择“工具”--“Internet选项”--,弹出“Internet选项”对话框,在“连接”选项卡中的“局域网(LAN)设置”选项组中单击“局域网设置”按钮,弹出“局域网(LAN)设置”对话框,在该对话框中填写定义好的squid服务器地址和端口

构建squid传统代理和透明代理_代理_08

构建squid传统代理和透明代理_squid_09


6 用客户机访问WEB服务器

构建squid传统代理和透明代理_Linux_10


7 查看WEB服务器访问日志的新增记录,可以发现显示的访问地址是squid服务器地址

构建squid传统代理和透明代理_代理_11



二 透明代理

构建squid传统代理和透明代理_代理_12

实验环境:

角色名称系统环境IP地址
squid代理服务器CentOS7(网卡为仅主机模式)

内网接口:192.168.100.1

外网接口:12.0.0.1

WEB服务器CentOS7(网卡为仅主机模式)12.0.0.12
客户机Windows7(网卡为仅主机模式)192.168.100.10

1 在squid服务器上设置双网卡

构建squid传统代理和透明代理_squid_13


2 配置Squid支持透明代理,squid服务的默认配置中并不支持透明代理,因此需要调整相关设置。对于2.6以上的版本的squid服务,只要在http_port配置行加上一个transparent(透明)选项,就可以支持透明代理了。

构建squid传统代理和透明代理_代理_14


3 设置iptables的重定向策略,透明代理中的squid服务实际上是构建在Linux网关主机上的,因此只需要正确设置防火墙策略,就可以将局域网主机访问Internet的数据包撞交给squid进行处理。这需要用到iptables的REDIRECT(重定向)策略

构建squid传统代理和透明代理_代理_15


4 如果之前在浏览器中手动指定过代理服务器,就需要将该代理服务器取消

构建squid传统代理和透明代理_squid_16


 5 在客户机上访问WEB服务器

构建squid传统代理和透明代理_代理_17


6 查看WEB服务器的访问日志,可以看到显示的访问地址为12.0.0.1,即外网的网关地址

构建squid传统代理和透明代理_Linux_18