一:squid简介:
Squid是一种在Linux系统下使用的优秀的代理服务器软件。Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户想要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。
二:CDN简介:
CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网站的响应速度。为更好地理解CDN,让我们看一下CDN的工作流程。当用户访问已经加入CDN服务的网站时,首先通过DNS重定向技术确定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。
CDN 网络加速器的四大优势 :
高速:提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度,并大大提 高以上性质站点的稳定性
实用:当企业站点所存放的服务器短时宕机时,用户仍可以在很长一段时间访问 cache 服务器,获得该企业站点的信息;
简易:CDN 网络加速器对用户完全透明,购买、使用方便,不需对其空间作任何更 改,不影响原来空间维护操作和运行内容;
超值:本公司为 CDN 提供可再扩展的所有缓存服务器以及专用 DNS 硬件以及带宽,一次购买,可在各地电信机房自动为您"克隆"出多个站点副本,让站点遍布 internet 各处。
三:正向代理与反向代理
正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的名字空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
案例一:透明代理(正向):透明代理的意思是客户端根本不需要知道有代理服务器的存在
设计思路:squid代理服务器处于内网当中,且有双网卡eth1和eth0,用户通过路由器才能正常上网。上网需要指明dns服务器,但是dns服务器处于外网当中,想要能够正常解析出域名,内网主机需要使用nat转换将dns解析信息发送到外网中,所以在代理服务器上配置iptables策略,将nat数据包转发到外网。内网主机需要指明dns服务器地址和网关eth1:192.168.10.10。而squid代理服务器需要指明网关192.168.101.254和dns服务器222.88.88.88(222.85.85.85)
拓扑方案:
代理服务器的网关指向路由器接口:
[root@lyt ~]# vim /etc/resolv.conf
[root@lyt ~]# mkdir /mnt/cdrom
[root@lyt ~]# mount /dev/cdrom /mnt/cdrom/
[root@lyt ~]# cd /mnt/cdrom/Server/
[root@lyt Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm #安装squid包
过滤/etc/squid/squid.conf配置文件的注释行:[root@lyt ~]# grep -v "^#" /etc/squid/squid.conf |grep -v "^$"
[root@lyt Server]# vim /etc/squid/squid.conf #编辑squid的配置文件
[root@lyt Server]# service squid start
[root@lyt Server]# netstat -tupln |less
[root@lyt ~]# vim /etc/sysctl.conf
[root@lyt ~]# sysctl –p #使数据包转发功能生效
[root@lyt ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -p udp --dport 53 -o eth0 -j MASQUERADE #使用nat协议,-t表示表格(table);在路由后(POSTROUTING)进行追加,-A表示追加;源地址是192.168.10.0/24网段,-s表示source;监听目标端口udp的53;出口是eth0,-o表示出口网卡;MASQUERADE是地址伪装,也即使用eth0网卡的ip地址作为nat转换的源地址
[root@lyt ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j REDIRECT --to-port 3128 #使用nat协议,-t表示表格(table);在路由前(PREROUTING)追加,-A表示追加;目标端口是tcp的80端口;监听进口网卡eth1,重定向到3128端口。
[root@lyt ~]# service squid restart
测试:使用xp主机
案例二:反向代理:在代理服务器上设置双网卡,eth0处于外网,eth1处于内网,实现外网的主机访问内网的web服务器
1:配置web server :
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm #安装apache,使其作为一台web服务器
[root@localhost Server]# cd /var/www/html/
[root@localhost html]# vim index.html #创建web服务器主页
[root@localhost html]# service httpd start
2:在案例一中。只需要将代理服务器作如下修改即可:
[root@lyt ~]# vim /etc/squid/squid.conf
[root@lyt ~]# squid -k parse #测试配置文件的语法是否正确
[root@lyt ~]# service squid restart
[root@lyt ~]# netstat -tupln |less
测试:使用xp主机进行测试:
案例三:非透明代理:就是用户必须要知道代理服务器的存在,并且进行设置才可以通过代理服务器上网。通过在非透明代理实现内网访问外网。
拓扑方案:
配置代理服务器:
root@lyt ~]# mkdir /mnt/cdrom
[root@lyt ~]# mount /dev/cdrom /mnt/cdrom
[root@lyt ~]# cd /mnt/cdrom/Server/
[root@lyt Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm
[root@lyt Server]# vim /etc/squid/squid.conf
[root@lyt Server]# service squid start #启动squid服务
测试: