squid
Squidcache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。(70年代出现)
nginx
Nginx("enginex")是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx是由IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx1.0.4发布。Nginx作为负载均衡服务器:Nginx既可以在内部直接支持Rails和PHP程序对外进行服务,也可以支持作为HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好很多。
varnish
Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸VerdensGang使用3台Varnish代替了原来的12台Squid,性能比以前更好(反向代理加速连接数目多的多缓存可以放在磁盘,也可以放在内存中)
Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程
Squid代理服务器(正向代理,反向代理安全控制)
正向
Lan-----------interner
1.nat改变头部信息同一个数据包改变来源地址
层次网络层
安全控制网络传输层
网络层信息地址(来源目标)
传输层协议(tcpudp)端口(源端口目标端口)标志位(tcpsynackfinrst)
只能对网络进行控制,
支持应用多nat好用
2.代理服务器不改变数据包的头部信息
Squid3128端口
代理服务器是有缓存
安全控制层次-------------》应用层isa(internetsecurityaccelerate)
Squid是一款软件
安全控制网络传输层应用层
网络层信息地址来源目标
传输层协议(tcpudp)端口号码(源端口目标端口)标志位(tcpsynackfinrst)
应用层协议(httpftppopsmtp…..p2p)内容(url域名)
---------------》应用层网关代理服务器防火墙
----支持应用少----------》缺陷httpftpmail
代理服务器安全
结合nat+代理服务器
安装squid
环境:squid-2.6.STABLE21-3.el5.i386.rpm
步骤:
1.rpm–ivhsquid-2.6.STABLE21-3.el5.i386.rpm
2.vim/etc/squid/squid.confsquid的配置文件
图1
<a href="http://blog.51cto.com/attachment/201309/151410898.png" target="_blank"></a>
服务器端口是3128
Cache_dirufs(缓存数据的存储格式)/var/spool/squid100(为缓存目录分配的磁盘空间)16(缓存空间的一级目录个数)256(缓存目录的二级子目录个数)通过二叉树来查找
Cache_mem64MB来存放描述符
Maximum_object_size4096KB最大的缓存对象是4096KB
Reply_body_max_size10240000allowall应答给客户不能超出1G
Access_log/var/log/squid/access.logsquid日志存放位置
Visible_hostnameproxy.test.com返回给用户出错信息的页面
squid–kparse测试squid的语法
tail–f/var/log/squid/access.logsquid的日志文件
TCP_MISS缓存没有成为丢失
TCP_DENIED拒绝
TCP_HIT缓存存在的命中
安全控制:
在这里可以应用正则表达式
元素acl元素名称类型参数
aclaclnamearpmac-address...(xx:xx:xx:xx:xx:xxnotation)可以基于mac来控制
在源码安装的时候需要加上--enable-arp-acl,想用得需要源码安装才可以使用.
aclaclnamesrcip-address/netmask...(clientsIPaddress)
aclaclnamesrcaddr1-addr2/netmask...(rangeofaddresses)
aclaclnamedstip-address/netmask...(URLhost'sIPaddress)
aclaclnamemyipip-address/netmask...(localsocketIPaddress)
时间限制:
aclaclnametime[day-abbrevs][h1:m1-h2:m2]
h1:m1mustbelessthanh2:m2其实时间必须小于结束时间
aclworktimetime8:00-18:00
aclofftimetime18:01-23.5900:00-07:59或者!8:00-18:00限制用户时间上网
aclbadpcsrc192.168.2.200/255.255.255.255限制192.168.2.200用户不能上网
aclbadpcsrc192.168.2.200-192.168.2.210/255.255.255.255限制这个这个网段不能上网
地址控制
aclbadsiturl_regex–Ihttp://www.sina.com.cn拒绝这个网站地址
aclbadsiturl_regex–Ihttp://*.sina.com.cn
内容过滤
aclbadcontenturlpath_regex–I\.jpg$
aclsinadstdomain.sina.com.cn基于域名来进行过滤
aclsinadstdom_regex–I.*sina.*表达式引用
aclaclnamebrowser[-i]regexp...限制客户端的浏览器器
策略:http_access动作策略元素
http_accessdenybadpc
http_accessdenybadpcwortime
http_accessdenybadsit
http_accessdenybadcontent
http_accessdenysina
透明代理
公司的内部网络,在连接internet的时候可以自动配置代理服务器的地址及NAT转换出去,称为透明代理.
1.端口重定向-------》代理端口3128
3.DNS解析--------》snat
Prerouting地址前的转换dnat
Postrouting地址后的转换snat
首先做nat转换
1.vim/etc/sysctl.conf
2.图2
3.iptables-tnat-RPOSTROUTING1-s192.168.2.0/24-pudp--dport53-oeht1-jSNAT--to192.168.1.4当用户通过192.168.2.0网络到了服务器之后,准备把包发出去,需要把源地址更换成192.168.1.4
4.iptables-tnat-L-v--line-number查看数据包是否有匹配的信息
5.iptables-tnat-APREROUTING-s192.168.2.0/24-ptcp--dport80-jREDIRECT--to-port3128重定向到3128端口
6.vim/etc/squid/squid.conf
7.图3
8.squid–kparse
9.servicesquidrestart
反向代理
1.客户端无法去访问你的3128,因此需要改变成80端口,你也可以加入那个端口的地址也可以
2.vhost
<a href="http://blog.51cto.com/attachment/201309/160946203.png" target="_blank"></a>
3.假如后方有许多服务器,在这里我们只需要把这几行重新复制一下就可以,在这里也可以使用weight来设置它的权重
4.serversquidstart
本文转自 only223wym 51CTO博客,原文链接:http://blog.51cto.com/ymchaofeng/1297813,如需转载请自行联系原作者