一,squid服务器概述

     Squid是一种在Linux系统下使用的优秀的代理服务器软件。

squid不仅可用在Linux系统上,还可以用在AIX、Digital Unix、FreeBSD、HP-UX、Irix、NetBSD、Nextstep、SCO和Solaris等系统上。

Squid与Linux下其它的代理软件如Apache、Socks、TIS FWTK和delegate相比,下载安装简单,配置简单灵活,支持缓存和多种协议。用ipchains+Squid的解决方案,就可以获得通过缓存高性能的同时能够无缝的访问Internet。

Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户想要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。

对于Web用户来说,Squid是一个高性能的代理缓存服务器,可以加快内部网浏览Internet的速度,提高客户机的访问命中率。Squid不仅支持HTTP协议,还支持FTP、gopher、SSL和WAIS等协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

Squid将数据元缓存在内存中,同时也缓存DNS查寻的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。Squid支持SSL,支持访问控制。由于使用了ICP,Squid能够实现重叠的代理阵列,从而最大限度的节约带宽。

Squid由一个主要的服务程序Squid,一个DNS查询程序dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid启动以后,它可以派生出指定数目的dnsserver进程,而每一个dnsserver进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时间。

Squid的另一个优越性在于它使用访问控制清单(ACL)和访问权限清单(ARL)。访问控制清单和访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。

Squid对硬件的要求是内存一定要大,不应小于128M,硬盘转速越快越好,最好使用服务器专用SCSI硬盘,处理器要求不高,400MH以上既可。

squid配置 squid是Linux下的一个代理服务器,本文限于篇幅,简单介绍一下squid配置,在文章结尾处提供一个squid配置的word文件供大家下载。

代理服务器原理

代理服务器接受到请求后,首先与访问控制列表中的访问规则相对照,如果满足规则,则在缓存中查找是否存在需要的信息。

客户端B向代理服务器提出相同的请求。代理服务器也首先与访问控制列表中的访问规则相对照。如果满足规则,则将缓存中的信息传送给客户端B

squid简介

访问控制清单和访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。

二,CDN概述:

     CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

内容分发网络(CDN)是一种新型网络构建方式,它是为能在传统的IP网发布宽带丰富媒体而特别优化的网络覆盖层;而从广义的角度,CDN代表了一种基于质量与秩序的网络服务模式。

简单地说,内容分发网络(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理(Traffic Management)是CDN的核心所在。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。

总的来说,内容服务基于缓存服务器,也称作代理缓存(Surrogate),它位于网络的边缘,距用户仅有"一跳"(Single Hop)之遥。同时,代理缓存是内容提供商源服务器(通常位于CDN服务提供商的数据中心)的一个透明镜像。这样的架构使得CDN服务提供商能够代表他们客户,即内容供应商,向最终用户提供尽可能好的体验,而这些用户是不能容忍请求响应时间有任何延迟的。

主要特点 1、本地Cache加速 提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度,并大大提高以上性质站点的稳定性

2、镜像服务 消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量。

3、远程加速 远程访问用户根据DNS负载均衡技术智能自动选择Cache服务器,选择最快的Cache服务器,加快远程访问的速度

4、带宽优化 自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点WEB服务器负载等功能。

5、集群抗攻击 广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种D.D.o.S攻击对网站的影响,同时保证较好的服务质量 。

编辑本段关键技术 (1)内容发布:它借助于建立索引、缓存、流分裂、组播(Multicast)等技术,将内容发布或投递到距离用户最近的远程服务点(POP)处;

(2)内容路由:它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程POP上均衡用户的请求,以使用户请求得到最近内容源的响应;

(3)内容交换:它根据内容的可用性、服务器的可用性以及用户的背景,在POP的缓存服务器上,利用应用层交换、流分裂、重定向(ICP、WCCP)等技术,智能地平衡负载流量;

(4)性能管理:它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。

三,企业案例

1,通过squid代理服务器实现内网对外网的访问

拓扑图

2012-08-30_144205

使用linux搭建squid服务器

首先配置linux使其可以通过主机上网

虚拟机中linux开启双网卡(setup指令)

2012-08-29_170305

2012-08-29_170404

加载dns

[root@station2 ~]# vim /etc/resolv.conf

2012-08-29_170827

2012-08-29_170419

2012-08-29_170818

装squid
[root@station2 ~]# mkdir /mnt/cdrom光盘挂载
[root@station2 ~]# mount /dev/cdrom /mnt/cdrom/
[root@station2 ~]# cd /mnt/cdrom/Server
[root@station2 Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm
[root@station2 Server]# vim /etc/squid/squid.conf查看一下

[root@station2 Server]# vim /etc/squid/squid.conf

2012-08-29_172837

2012-08-29_174155

[root@station2 Server]# service squid start
看端口起了没
[root@station2 squid]# netstat -tupln |less

2012-08-29_173801

测试xp

更改ie浏览器设置

2012-08-29_172044

2012-08-29_172304

 

 

进入linux查看日志

[root@station2 squid]#tail –f /var/log/squid/access.log

第一次访问

2012-08-29_175201

再次访问命中

命中

测试成功

2,通过squid代理服务器实现内网对外网的访问(透明代理)

实验拓扑同上

配置命令

在linux上打开数据包转发功能

打开数据包转发功能
[root@station2 ~]# vim /etc/sysctl.conf

2012-08-30_101543

[root@station2 ~]# sysctl -p
NAT 配置

                                                       追加规则               来源                                         端口           动作是
[root@station2 ~]# iptables -t nat -A POSTROUTING -s 192.168.220.0/24 -p udp --dport 53 -o eth0 -j MASQUERADE

从eth1进来的80流量给3128端口
[root@station2 ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j REDIRECT --to-ports 3128
[root@station2 ~]# vim /etc/squid/squid.conf

2012-08-30_110801

重启服务

xp上配置

增加网关和dns

2012-08-30_111006

关闭代理

2012-08-30_111040

 

测试

2012-08-30_110933

查看日志信息

[root@station2 squid]#tail –f /var/log/squid/access.log

2012-08-30_113426

测试通过

通过更改策略实现对访问流量的控制

拒绝192.168.220.20访问
[root@station2 squid]# vim /etc/squid/squid.conf


[root@station2 squid]# service squid restart
测试



禁用后又可以访问


3,通过squid代理服务器实现外网对内网服务器的访问

实验拓扑

2012-08-30_151809

web服务器在linux上搭建

设置一台web服务器
装载http服务
[root@station ~]# mkdir /mnt/cdrom
[root@station ~]# mount /dev/cdrom /mnt/cdrom/
[root@station Server]# cd /mnt/cdrom/Server/
[root@station Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm

[root@station Server]#service httpd start

编写一个网页

[root@station html]# echo "hello jx" >index.html
[root@station ~]# cd /mnt/cdrom/Server/
安装测试软件
[root@station Server]# rpm -ivh lynx-2.8.5-28.1.el5_2.1.i386.rpm
测试
[root@station Server]# lynx http://127.0.0.1

2012-08-30_115718

进入squid服务
[root@station2 ~]# vim /etc/squid/squid.conf

2012-08-30_120015

2012-08-30_120356

本机配置(windows 7)

2012-08-30_152130

本机测试

2012-08-30_120616

实现了外网对内网web服务器的访问