概述:作为应用层的代理服务软件,squid主要提供缓存加速和应用层过滤控制的功能。
代理的工作机制:当客户机通过代理来请求WEB页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面内容反馈给客户机;如果缓存中没有客户机需要访问的页面,则由代理服务器向lnternet发送访问请求,当获得WEB页面以后,将网页数据保存到缓存中并发给客户机。
HTTP代理的缓存加速对象主要是文字,图像等静态WEB元素。使用缓存机制后,当客户机在不同的时候访问同一WEB元素,或者不同的客户机访问相同的WEB元素时,可以直接从代理服务器的缓存中获得结果。这样就大大减少了向Internet重复提交WEB请求的过程,提高了客户机的WEB访问响应速度
由于客户机的WEB访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实IP地址,起到一定的保护作用 。另一方面,代理服务器担任着类似“经纪人”的角色,所以有机会针对要访问的目标,客户机的地址,访问的时间段等进行过滤控制。
代理的基本类型:
传统代理:也就是普通的代理服务,首先必须在客户机的浏览器,QQ聊天工具,下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理服务来访问网络。对于网页浏览器,访问网站时的域名解析请求也会发送给指定的代理服务器。
透明代理:提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由,防火墙策略将WEB访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对客户机来说是“透明”的,用户甚至并不知道自己在使用代理服务,所以称为“透明代理”。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给DNS服务器。
在实际应用中,传统代理多见于Internet环境,如为QQ程序使用代理可以隐藏本机的真实IP,为下载工具使用多个代理可以规避服务器的并发连接数限制。而透明代理多见于局域网环境,如在Linux网关中启用透明代理后,局域网主机无需进行额外的设置就可以获得更好的上网速度。
一 传统代理
实验环境:
角色名称 | 系统环境 | IP地址 |
Squid代理 | CentOS7 (网卡为NAT模式) | 192.168.199.129 |
web服务器 | CentOS7(网卡为NAT模式) | 192.168.199.128 |
客户机 | Windows7(网卡为NAT模式) | 192.168.199.133 |
2 修改squid.conf配置文件
3 先清空防火墙规则,接着在防火墙添加允许策略,最后开启squid服务,通过查看3128端口可以看到该服务已经被开启
4 在WEB服务器上安装Apache服务,并且进行开启,同时为了便于访问需要关闭防火墙和selinux
5 在客户机上设置代理服务器,在浏览器中选择“工具”--“Internet选项”--,弹出“Internet选项”对话框,在“连接”选项卡中的“局域网(LAN)设置”选项组中单击“局域网设置”按钮,弹出“局域网(LAN)设置”对话框,在该对话框中填写定义好的squid服务器地址和端口
6 用客户机访问WEB服务器
7 查看WEB服务器访问日志的新增记录,可以发现显示的访问地址是squid服务器地址
二 透明代理
实验环境:
角色名称 | 系统环境 | IP地址 |
squid代理服务器 | CentOS7(网卡为仅主机模式) | 内网接口:192.168.100.1 外网接口:12.0.0.1 |
WEB服务器 | CentOS7(网卡为仅主机模式) | 12.0.0.12 |
客户机 | Windows7(网卡为仅主机模式) | 192.168.100.10 |
1 在squid服务器上设置双网卡
2 配置Squid支持透明代理,squid服务的默认配置中并不支持透明代理,因此需要调整相关设置。对于2.6以上的版本的squid服务,只要在http_port配置行加上一个transparent(透明)选项,就可以支持透明代理了。
3 设置iptables的重定向策略,透明代理中的squid服务实际上是构建在Linux网关主机上的,因此只需要正确设置防火墙策略,就可以将局域网主机访问Internet的数据包撞交给squid进行处理。这需要用到iptables的REDIRECT(重定向)策略
4 如果之前在浏览器中手动指定过代理服务器,就需要将该代理服务器取消
5 在客户机上访问WEB服务器
6 查看WEB服务器的访问日志,可以看到显示的访问地址为12.0.0.1,即外网的网关地址