您的位置:首页 > 运维架构 > 反向代理

重量级代理缓存服务器squid

2013-10-30 14:57 483 查看
重量级代理缓存服务器squidSquid简介:Squidcache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Linux一类系统运行。正向代理:局域网访问外网1、snat模式网络层次:网络层如果局域网的用户访问外网走snat模式,同一个数据包,改变数据包头部的来源地址,再把数据包发到internet。安全控制:基于网络层传输层网络层安全:来源地址目标地址传输层安全:协议:tcp、udp端口号:来源端口、目标端口标志位:syn、ack、finrst2、代理服务器模式不改变数据包头信息,把数据包代理给internet的服务器网络层次:应用层基于应用层的过滤:微软开发的软件防火墙ISAinternetsecurityaccelerateLinux系统的squid服务器安全控制:网络层传输层应用层网络层安全:来源地址目标地址传输层安全:协议:tcp、udp端口号:来源端口、目标端口标志位:syn、ack、finrst应用层安全:协议:http、ftp、pop、smtp、p2p内容过滤url过滤、域名过滤代理服务器的缺陷:基于少量的应用协议,支持的应用少。反向代理:internet用户访问局域网服务器Squid做反向代理服务器,把用户的请求转发到后方的真实的服务器,可以做到负载均衡的效果。squid正向代理拓扑图:

Squid的应用
一:实现正向代理二:安全控制三:透明代理四:反向代理一:实现正向代理准备工作:1、设置内网接口eth0接口,和外网接口eth1的ip地址



安装squid服务器的rpm包rpm-ivhsquid-2.6.STABLE21-3.el5.i386.rpm打开squid的配置文件919http_port31282994visible_hostname192.168.2.100#当访问出错时,squid将会返回一个出错页面,这个出错页面是由192,。168.2.100(这里可以是任意名称)提示产生的。启动squid服务

切换到/var/spool/squid目录将会看到16个一级子目录

每一个子目录下面将会形成256个二级子目录,切换到00目录下

做简单的测试:内网访问外网设置局域网中的一台主机的浏览器属性--连接--局域网设置--代理服务器,添加代理服务器的ip地址和端口

访问失败得到一个出错页面是由192.168.2.100产生的





因为squid的默认策略是除了他自己可以访问外网外,其他拒绝所有打开squid的配置文件,定义允许内网用户上网的元素,添加策略

重启squid服务打开浏览器再次测试上网成功

第一次访问页面返回类型是TCP_MISS,说明还没有被缓存

再次访问将是:TCP_IMS_HIT说明数据已经被缓存,是从squid的缓存目录中得到的数据

二:安全控制1,拒绝192.168.2.200这台主机上网,定义策略,创建访问控制列表。aclbadpcsrc192.168.2.200/255.255.255.255http_accessallowlocalhosthttp_accessdenybadpchttp_accessallowall测试访问http://www.sina.com,将不能访问到出现错误。

2,控制一个地址段,拒绝192.168.2.200-192.168.2.210这台主机上网,定义策略,创建访问控制列表。

测试访问http://www.sina.com,将不能访问到出现错误

换一个地址比如说192.168.2.220,测试一下,就可以上网了

3,定义基于时间控制的策略,初试时间要小于结束时间,被拒绝的主机上班时间不能上网,下班可以aclworktimetime06:00-20:00http_accessdenybadpcworktimeIp地址改为192.168.2.200,现在的时间为root@localhost~]#date102509252013FriOct2509:25:00PDT2013上班时间测试访问http://www.sina.com,将是拒绝的

修改时间为下班时间再次访问[root@localhost~]#date102521252013FriOct2521:25:00PDT2013

用!取反也可以http_accessallowlocalhosthttp_accessallowbadpc!worktimehttp_accessdenyall下班时间允许访问

4,基于URL的安全控制,定义访问策略元素,基于url的控制元素是url_regex。aclbadsiteurl_regex-ihttp://www.sina.com.cnhttp_accessdenybadsitehttp_accessallowallhttp_accessdenyall访问新浪网测试,被拒绝

结合通配符*号使用,在url中任何以.sina.com.cn为结尾的网站都是被拒绝的aclbadsiteurl_regex-ihttp://.*.sina.com.cnhttp_accessdenybadsitehttp_accessallowallhttp_accessdenyall

5,基于url的控制,任何中间出现.sina,两边是任意字符的网站都是被拒绝的aclbadsiteurl_regex-ihttp://.*.sina.*http_accessdenybadsitehttp_accessallowallhttp_accessdenyall





6,基于网页内容图片的过滤,策略元素类型是urlpath_regex,aclbadcontenturlpath_regex-i\.jpg$aclbadcontenturlpath_regex-i\.png$aclbadcontenturlpath_regex-i\.gif$http_accessdenybadcontent

7、基于域名的控制,策略元素类型是dstdomian,禁止发往sina.com.cn与baidu.com这两个域的任何主机的任何请求。
aclsinadstdomain.sina.com.cnaclbaidudstdomain.baidu.comhttp_accessdenysinahttp_accessdenybaiduhttp_accessallowallhttp_accessdenyall





三:squid做透明代理透明代理的原理:当内网的用户,不知道代理服务器的代理端口和ip地址时,要想上网就不能走正向代理。用户的网管指向代理服务器的内卡地址192.168.2.100,当发送一个数据包到达代理服务器的内卡地址时,在系统内部,代理服务器会把原数据包端口80替换为代理服务器的端口3128端口,然后数据包到达代理服务器,代理服务器有缓存就直接发给用户,如果没有,把数据包发往外网,端口的替换需要靠iptables的nat表的PREROTING链路由判断之前来实现的。但是,代理服务器的代理功能有限仅限于httpftp等协议,而数据包头部的目标ip地址的解析需要靠dns协议,dns是不能被代理服务器代理的,所以nds的解析需要靠SNAT技术,而snat的实现,需要linux的软件防火墙netfilter的iptables架构。要做nat转换,打开linux的数据包转发功能/etc/sysctl.confnet.ipv4.ip_forward=1Sant的实现是靠iptables框架中的nat表中的POSTROUTING链iptables-tnat-APOSTROUTING-s192.168.2.0/24-pudp--dport53-oeth1-jSNAT--to192.168.1.4端口实现是重定向靠iptables的nat表的路由判断之前PREROUTING链[root@localhost~]#iptables-tnat-APREROUTING-s192.168.2.0/24-ptcp--dport80-jREDIRECT--to-port3128告诉squid要实现透明代理打开配置文件931http_port3128transparent打开内网用户在浏览器取消代理功能,测试dns请求,以及上网





四:squid做反向代理服务器反向代理服务器的原理:反向代理服务器的工作原理是DNAT技术,外网用户访问内网中的服务器时,用户访问的代理服务器的外卡接口地址,代理服务器把请求转发给后方内网真是的服务器。Squid做反向代理服务器的拓扑图:

Squid做反向代理服务器实现后方web服务器的访问1,定义虚拟主机代理地址和端口http_port192.168.1.4:80vhost2,设置反向代理功能1196行cache_peer192.168.2.210parent800originserver注释:cache_peer指的是后方真是web服务器Parent指的是代理服务器的类型,代理服务器与后方真是服务器之间的关系80指的是代理端口0指的是后方服务器的任意端口Originserver指的是原始服务器,也就是代理服务器测试一下访问http://192.168.1.4/index.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息