Squid简介:
Squid是一种代理服务器软件,又称为Squid cache。它是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系统运行。
Squid的访问原理:
当一个用户想要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。这其中也用到了内容分发网络机制。
Squid的分类:
1. 正向代理,能够显现内部网络安全访问外网
2. 反向代理,实现内网中的server发布。
CDN(内容分发网络):
内容分发网络(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理(Traffic Management)是CDN的核心所在。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。
Squid的控制功能:
squid还能够基于不同的方面对访问进行控制,通过编辑/etc/squid/squid.conf实现控制功能。
常用的squid 中acl的使用方法小结:(有需求Q:395061796:)
1》 控制单个ip不能访问
acl aclname(名称) 类型
acl badip src(基于来源) 192.168.145.10/32(掩码长度)
http_access(策略) deny badip
http_access allow all
2》 控制连续子网不能访问
acl badip src(基于来源) 192.168.145.10-192.168.145.19/32(掩码长度)
3》只允许145.10可以访问192.168.101.254
acl webip dst 192.168.101.254/32
acl managerip src 192.168.145.10/32
http_access deny !managerip webip
4》基于目标域名进行控制(基于来源域名进行控制srcdomain)
(原理:基于应用层进行控制)
acl badweb dstdomain .sina.com.cn
http_access deny badweb
5》时间参数的控制(应用层)
例子:周一到周三 不准上网
acl aclname time [星期几] [时间段]
acl worktime time MTWHF(周一到周五) 08:00-18:00
http_access deny worktime
修改系统时间
date 月日小时分年
082918092012 2012年8月29日18点09分
6》基于内容进行控制
基于url网址进行过滤,域名中带有sina的全部不允许访问
-i表示忽略大小写
acl badurl url_regex -i sina
http_access deny badurl
基于uri进行过滤,不允许浏览图片jpg和gif格式
acl worktime time MTWHF(周一到周五)
acl badcontent urlpath_regex -i \.jpg$ \.gif$
http_access deny worktime badcontent
http_access allow all
好吧~我们已经初步对squid有所了解。下面通过两个案例来更加详细的了解squid的使用方法。
案例一:透明代理
透明代理的实现原理:
内部网络通过squid代理服务器来访问外网,其中DNS访问通过nat转换能够访问外部DNSserver,如果访问的web没有命中,则squid通过将端口指向到squid server的3128端口进行访问。
案例拓扑图
clip_p_w_picpath002
透明代理的是实现步骤:
1. 客户端dns指向和网关参数
clip_p_w_picpath004
2. 安装squid服务,并设置网卡参数:
Yum install –y squid
clip_p_w_picpath006
Eth0为内网网卡:192.168.100.123
Eth1为外网网卡:192.168.101.115
3.在squid所在的机器上,设置关于dns的nat转换 ,并设置端口重定向
iptables -t nat -A POSTROUTING -s 192.168.145.0/24 -p udp --dport 53 -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j REDIRECT --to-ports 3128
clip_p_w_picpath008
4.编辑/etc/sysctl.conf打开数据包转发功能
clip_p_w_picpath010
clip_p_w_picpath012
5.在/etc/squid/squid.conf中加入参数transparent,并且修改默认规则允许所有通过
clip_p_w_picpath014
clip_p_w_picpath016
6.测试连通性:
clip_p_w_picpath018
案例二:反向代理:
反向代理的原理:
使用squid访问内部网络中的父级web服务器,为squid指明squid的源服务器的IP。外部合法ip的用户能通过访问squid的80端口来访问到内部server中的web信息。
案例拓扑图:
clip_p_w_picpath020
试验步骤:
1.为squid服务器配置相应的ip地址
Eth 0 连接web server ip为 192.168.100.123
Eth1 连接internet ip为192.168.101.2
2.安装squid服务
Yum install –y squid
clip_p_w_picpath006[1]
3.配置脚本/etc/squid/squid.conf文件,修改完成以后重新启动squid服务。
需要指明监听squid服务器的192.168.101.2的80端口,来接受外部的请求,并且将192.168.100.100指明为squid的源头服务器。
clip_p_w_picpath022
clip_p_w_picpath024
4.然后我们临时搭建一个web server进行测试;
在该server中安装httpd服务器,然后在/var/www/html/中编辑一个测试页面index.html。
5.测试连通性
clip_p_w_picpath026
这次试验结束了~