15CDN缓存系统软件说明书.docx
简介CDN缓存系统是公有云与终端用户之间的内容传输通道,它通过标准的API接口与 各大公有云系统实现对接,将云里的内容和应用快速、安全地分发到终端用户手中。它 可以实现系统内部流量的分配和调度,确保内容传输的高效、快速、安全。CDN缓存系统将传输的内容及应用分为静态和动态两类:对于静态内容,如文字、 图片等,采用传统的CDN缓存方式,将内容分发到离用户最近的地方;对于动态内容, 如注册、登陆、搜索等,通过协议优化、文件压缩等技术手段,打造一条快速、安全、稳定的通道,让用户快速的获取内容。CDN服务对网站的作用是什么?使网站的用户享受到高品质的服务网站的服务更安全网站建设更简单,可以采用更 灵活的方式进行扩容从容应付各种突发访问量的冲击;CDN技术用于虚拟主机的开发与 应用,是现行解决网络宽带拥挤、网站响应速度慢、南北网络互连互通问题最有效的方 法:(1)解决网站高流量、大并发的问题。我们知道,任何一个物理设备,其负载都有一个 极限。为了应对访问量突增,使用CDN服务是一个好的系统扩容方案。(2)解决南北互联问题。我国的网络是划江而治的格局,因为利益之争,各网络服务商 之间并不是通力协作,而是采取各种手段相互限制。这就导致各网之间的互联互通存在 很大的问题,具体表现为:电信的用户访问放置在网通机房的服务器,响应时间特别长, 反之亦然。使用CDN技术,可以让电信的用户访问电信的内容缓存服务器,网通的用户 访问网通的内容缓存服务器。通过这样一种策略,绕开了网络运营商之间人为设置的障 碍。(3)访问加速。CDN采用缓存技术,把访问对象缓存起来,有的技术甚至能把对象缓存 到内存(如Varnish),这在效果上表现出来的即是访问加速。(4)降低总体运营成本。使用CDN运营方案,把源站放在BGP机房,而把缓存服务器放 置在带宽费用较低的其他地方。因为CDN的大部分流量被转移到缓存服务器上,源站只 有较小的访问请求,因此总体运营成本大幅降低。(5)提高网站的可用性。源站的访问量变得很小,这意味着源站系统有更低的负载,更 低的磁盘I/O,防故障的几率大大降低。对于缓存服务器,多个服务器做成集群,保证 了整个系统的高可用。CDN服务与镜像站点的区别是什么?CDN对用户完全透明,不需要用户手动选择需要访问的镜像站点;CDN对节点有健康性检查,而镜像则没有,因此CDN可用性更高;CDN的内容同步机制不需要人工的干预,而镜像站点需要一套复杂的系统来实现内容同 步;镜像站点的系统复杂,维护工作量大,对运维工作有很大的压力;CDN部署便捷,几乎不需要对原有的站点做什么改动,很短的时间内就可以采用并产生 显著的效果;CDN节点分布范围广,镜像站点很难做到同样的覆盖范围。哪些内容适合用CDN技术进行加速?网站中所有的静态网页、图片等静态内容非常适合用CDN技术进行加速以外,很多 以动态方式制作的页面其实也是可以通过 CDN进行加速的。这些内容主要是指通过 JSP/PHP等数据库查询程序生成的页面,但同一个URL对不同用户看到的内容都是一样 的。这样的情况下,Cache可以缓存下这个URL及相应的内容,就象是一个标准的URL 一 样,即使这个URL后面有?号,跟了很多查询条件都没有关系。网站中象这样的准静态 内容在采用CDN加速之后,同样能起到很好的效果。对于准静态内容如何来实现cache?对于准静态内容,主要是指通过JSP/PHP等数据库查询程序生成的页面,但同一个 URL对不同用户看到的内容都是一样的。这样的情况下,Cache可以缓存下这个URL及 相应的内容,就象是一个标准的URL 一样,即使这个URL后面有?号,跟了很多查询条 件都没有关系。对于这类内容最需要考虑的是刷新时间,对频繁更新的,我们可以设置 成10分钟或更短,对于更新较少的可以相应延长刷新时间。设置刷新时间可以按目录 来设置,也可以按具体URL来设置,或按某个关键字段来设置,非常灵活。对准静态内 容使用CDN后,可以明显地降低数据的压力,同时提高页面响应速度,效果是非常明显 的。CDN业务应用浅析如何缓解网络拥塞,提高用户获取信息的速度,成为困扰众多企业和服务商的一大 难题。CDN即内容分发网络(Content Delievery Network),它可以认为是建立在现有 IP网络基础结构之上的一种增值网络。CDN技术将多点负载均衡、镜像与Cache技术结 合起来,利用智能分配技术,将网站内容根据来访用户的地点,按照就近访问的原则分 配到多个节点。CDN业务特点与优势:(1)CDN业务具有如下特点:根据用户的地理位置和连接带宽,让用户连接到最近的服 务器上去,访问速度快;全局负载平衡,提高网络资源的利用率,提高网络服务的性能 与质量;热点内容主动push,自动跟踪,自动更新;网络具有高可靠及可用性,能容错 且很容易扩展;并无缝地集成到原有网络和站点上去。(2)CDN业务优势体现在以下几个方面:可减少消耗的网络带宽,减少网络访问的延迟 和用户响应时间,增加了网络性能和网站内容的可用性;提高Web资源的管理控制能力, 智能分配路由和进行流量管理;发送的内容受到保护,未授权的用户不能修改;内容提 供商可在本地自己决定服务的内容,内容提供商在降低成本的同时,提高了服务质量; 可线性、平滑地增加新的设备,保护原有投资。CDN的四大关键技术简介随着宽带网络和宽带流媒体应用的兴起,CDN(通常被称为内容分发网络Content distribution network,有时也被称作内容传递网络 Contentdeliverynetwork)作为一 种提高网络内容,特别是提高流媒体内容传输的服务质量、节省骨干网络带宽的技术, 在国内外得到越来越广泛的应用。CDN的关键技术主要有内容路由技术、内容分发技术、内容存储技术、内容管理技 术等。(1)内容路由技术CDN负载均衡系统实现CDN的内容路由功能。它的作用是将用户的请求导向整个CDN 网络中的最佳节点。最佳节点的选定可以根据多种策略,例如距离最近、节点负载最轻 等。负载均衡系统是整个CDN的核心,负载均衡的准确性和效率直接决定了整个CDN的 效率和性能。通常负载均衡可以分为两个层次:全局负载均衡(GSLB)和本地负载均衡(SLB)。全局 负载均衡(GSLB)主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者 区域)。因此,就近性判断是全局负载均衡的主要功能。本地负载均衡一般局限于一定的 区域范围内,其目标是在特定的区域范围内寻找一台最适合的节点提供服务,因此,CDN 节点的健康性、负载情况、支持的媒体格式等运行状态是本地负载均衡进行决策的主要 依据。负载均衡可以通过多种方法实现,主要的方法包括DNS、应用层重定向、传输层重 定向等等。对于全局负载均衡而言,为了执行就近性判断,通常可以采用两种方式,一种是静 态的配置,例如根据静态的IP地址配置表进行IP地址到CDN节点的映射。另一种方式 是动态的检测,例如实时地让CDN节点探测到目标IP的距离(可以采用RRT,Hops作为 度量单位),然后比较探测结果进行负载均衡。当然,静态和动态的方式也可以综合起来 使用。对于本地负载均衡而言,为了执行有效的决策,需要实时地获取Cache设备的运行 状态。获取的方法一般有两种,一种是主动探测,一种是协议交互。主动探测针对SLB 设备和Cache设备没有协议交互接口的情况,通过ping等命令主动发起探测,根据返回 结果分析状态。另一种是协议交互,即SLB和Cache根据事先定义好的协议实时交换运 行状态信息,以便进行负载均衡。比较而言,协议交互比探测方式要准确可靠,但是目 前尚没有标准的协议,各厂家的实现一般仅是私有协议,互通比较困难。(2)内容分发技术内容分发包含从内容源到CDN边缘的Cache的过程。从实现上看,有两种主流的内 容分发技术:PUSH和PULL。PUSH是一种主动分发的技术。通常,PUSH由内容管理系统发起,将内容从源或者中 心媒体资源库分发到各边缘的Cache节点。分发的协议可以采用HTTP/FTP等。通过PUSH 分发的内容一般是比较热点的内容,这些内容通过PUSH方式预分发(Preload)到边缘 Cache,可以实现有针对的内容提供。对于PUSH分发需要考虑的主要问题是分发策略, 即在什么时候分发什么内容。一般来说,内容分发可以由CP(内容提供商)或者CDN内容 管理员人工确定,也可以通过智能的方式决定,即所谓的智能分发。它根据用户访问的 统计信息,以及预定义的内容分发的规则,确定内容分发的过程。PULL是一种被动的分发技术,PULL分发通常由用户请求驱动。当用户请求的内容在 本地的边缘Cache上不存在(未命中)时,Cache启动PULL方法从内容源或者其他CDN节 点实时获取内容。在PULL方式下,内容的分发是按需的。在实际的CDN系统中,一般两种分发方式都支持,但是根据内容的类型和业务模式 的不同,在选择主要的内容分发方式时会有所不同。通常,PUSH的方式适合内容访问比 较集中的情况,如热点的影视流媒体内容;PULL方式比较适合内容访问分散的情况。在内容分发的过程中,对于Cache设备而言,关键的是需要建立内容源URL、内容发布 的URL、用户访问的URL,以及内容在Cache中存储的位置之间的映射关系。当用户访问已经加入CDN服务的网站时,首先通过CDN公司的3DNS确定最接近用户的 最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的 服务器负责将用户请求的内容提供给用户。用户访问的基本流程如下:用户在自己的浏览器中输入要访问的网站的域名;浏览器向本地DNS (域名解析系统)请求对该域名的解析; 本地DNS将请求发到网站的主DNS,主DNS再将域名解析请求转发到3DNS; 3DNS根据一系列的策略确定当时最适当的CDN节点,并将解析的结果(IP地址)发 给用户;用户向给定的CDN节点请求相应网站的内容; CDN节点中的服务器负责响应用户的请求,提供所需的内容。一个典型CDN网络结构由以下五部分组成,如图所示。内容缓存:位于POP接入点或多点IDC中,可缓存静态的Web内容和流媒体内容。内容交换机:在IDC中,可对内容缓存负载平衡及访问控制。内容路由器:在POP点或IDC中,负载为用户的请求选择最佳的访问站点。内容分发系统:内容缓存只可缓存静态内容而对于一些要求对其所有分布站点的内容作 镜像的用户,我们需要一个内容镜像系统,这就是内容分发系统。CDN管理系统:由于CDN系统是提供给多个用户共享,所以需要一个中心管理系统作为 CDN的集中管理。CDN系统的关键构件:一个完整的CDN网络主要由三个子系统组成。 3DNS : 3DNS是CDN服务中的关键子系统。当用户访问加入CDN服务的网站时,域名 解析请求将最终交给3DNS进行处理。3DNS通过一组预先定义好的策略,将当时最接 近用户的节点地址提供给用户,使用户能够得到快速的服务。同时,它还与分布在 世界各地的所有CDNC节点保持通信,搜集各节点的通信状态,确保不将用户的请求 分配到不可用的CDN节点上。 CDN节点:对于普通的Internet用户来讲,每个CDN节点就相当于一个放置在它 周围的WEB。通过3DNS的控制,用户的请求被透明地指向离他最近的节点,节点中 CDN服务器会像网站的原始服务器一样,响应用户的请求。由于它离用户更近,因而 响应时间必然更快。每个CDN节点由两部分组成:负载均衡设备和内容加速服务器。负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时, 负载均衡设备还负责收集节点与周围环境的信息,保持与3DNS的通信,实现整个系 统的负载均衡。内容加速服务器(Cache)负责存储客户网站的大量信息,就像一 个靠近用户的网站服务器一样响应本地用户的访问请求。CDN管理系统:CDN的管理系统是整个系统能够正常运转的保证。它不仅能对系统 中的各个子系统和设备进行实时监控,对各种故障产生相应的告警,还可以实时监 测到系统中总的流量和各节点的流量,并保存在系统的数据库中,使网管人员能够 方便地进行进一步分析。通过完善的网管系统,用户可以对系统配置进行修改。CDN系统的设计原则鉴于CDN网络系统在整个网络系统中的重要性,网络系统设计必须既适应当前应用 考虑,又面向未来信息化发展需求。在设计网络技术方案时,应遵循以下设计原则:1、实用性和先进性:采用先进成熟的技术满足当前的业务需求,兼顾其他相关的业务 需求,尽可能采用先进的网络技术以适应更高的数据、多媒体信息的传输需要,使整个 系统在一段时期内保持技术的先进,并具有良好的发展潜力,以适应未来业务的发展和 技术升级的需要。2、安全可靠性:为保证将来的业务应用,网络必须具有高可靠性。要对网络结构、网 络设备、服务器设备等各个方面进行高可靠性的设计和建设。在采用硬件备份、冗余等 可靠性技术的基础上,采用相关的软件技术,提供较强的管理机制、控制手段、事故监 控和网络安全保密等技术措施,提高网络系统的安全可靠性。3、灵活性与可扩展性:网络系统是一个不断发展的系统,所以它必须具有良好的扩展 性。能够根据将来信息化的不断深入发展的需要,方便地扩展网络覆盖范围、扩大网络 容量和提高网络各层次节点的功能。具备支持多种通信媒体、多种物理接口的能力,提 供技术升级、设备更新的灵活性。4、开放性/互连性:具备与多种协议计算机通信网络互连互通的特性,确保网络系统基 础设施的作用可以充分发挥。在结构上真正实现开放,基于国际开放式标准,包括各种 广域网、局域网、计算机及数据库协议,坚持全国统一规范的原则,从而为未来的业务 发展奠定基础。5、经济性/投资保护:以较高的性能价格比构建网络系统,使资金的产出投入比达到最 大值。能以较低的成本、较少的人员投入来维持系统运转,提供高效能与高效益。尽可 能保留并延长已有系统的投资,充分利用以往在资金与技术方面的投入。6、可管理性:在CDN环境中,所有相关设备是分布在不同的地域的,所以对设备的远程 管理便非常重要。由于系统本身具有一定复杂性,随着业务的不断发展,网络管理的任 务必定会日益繁重。所以在网络的设计中,必须建立一个全面的网络管理解决方案。网 络设备必须采用智能化、可管理的设备,同时采用先进的网络管理软件,实现先进的分 布式管理。最终能够实现监控、监测整个网络的运行状况,合理分配网络资源、动态配 置网络负载,可以迅速确定网络故障等。在将来,随着新的多媒体业务模型的增长,内容分发技术与CDN将成为以高可靠性 的、可扩展的与安全的方式提供托管业务的关键,在保障网络的可访问性(速度、安全、 完整性)方面发挥出更大的作用。MS查询明舟云分发部署源站Web服务既可以是Apache,也可以是Nginx。基于性能和部署简单考虑,选用Nginx做Web工具。安装Nginx :(1)下载最新的稳定版到当前目录:wget http:/nginx.Org/download/nginx-0.7.63.tar.gz(2)解包:tar zxvf nginx-0.7.63.tar.gz(3)切换目录:cd nginx-0.7.63(4)检查是否存在:pcre rpm -qa | grep pcre(5)配置:./configure - prefix=/usr/local/nginx(6)编译、安装:make;make install 配置 Nginx根据前面的规划,需要把源站做成高可用的负载均衡环境,因此,需要在一个物理 Web上同时运行3个站点,然后由这3个Web组成LVS集群。对于单个的Nginx配置文 件,就是运行3个虚拟主机。为了方便以后的维护,采取配置文件分割的方式进行处理。即配置文件分主配置文 件和虚拟机配置文件。主配置文件include指令包含各个虚拟机配置文件。对应于3个 不同的站点,其配置文件的名称分别为www.conf、dl.conf和images.conf。主配置文件/usr/local/nginx/conf/nginx.conf (部分参数来源于小毛)。user www;worker_processes 10;error_log /data/logs/error.log; events (worker_connections 10240;use kqueue;)http (include mime.types;default_type application/octet-stream; include vhosts/*.conf;log_format main '$remote_addr - $remote_user $time_local$request ''$status$body_bytes_sent$http_referer''$http_user_agent$http_x_forwarded_for';access_log/data/logs/access.log main; sendfile on;userid_expires max; tcp_nopush on; tcp_nodelay on;server_names_hash_bucket_size 256; client_header_buffer_size 256k;large_client_header_buffers 4256k; client_max_body_size 20m;client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m;output_buffers 1 32k; postpone_output 1460; keepalive_timeout 60 10; gzip on;gzip_types text/plain text/html text/css application/x-javascript;虚拟主机配置文件,一共3个。在/usr/local/nginx/conf下创建目录vhosts,然后在这个目录下创建3个虚拟机配置文件,其内容分别如下: 配置文件www.conf:server (listen 80server_name ; index index.htm index.html;root /mnt/html/www; error_page 404 /404.htm; autoindex_exact_size on;access_log /data/logs/nginx-access/www.log combined; 配置文件images.conf:server (listen 80server_name ; index index.htm index.html; root /mnt/html/images; error_page 404 /404.htm; autoindex_exact_size on;access_log /data/logs/nginx-access/images.log combined; 配置文件dl.conf :server (listen 80server_name ; index index.htm index.html; root /mnt/html/dl; error_page 404 /404.htm; autoindex_exact_size on;access_log /data/logs/nginx-access/dl.log combined; 配置文件的根文档所在的目录/mnt/html为NFS服务的挂接点,3个物理服务器共享 该目录,这样做的好处是修改站点时只需登录任意一个服务器做更改,而不必额外做同 步操作。如果条件许可,使用分布式文件系统共享存储,将会得到更好的可用性和更快 的访问速度。上述文件都配置好以后,安装配置文件的设定创建好相关的目录,然后把相关的站 点文件复制到各自的目录。接着运行/usr/local/nginx/sbin/nginx - t检查一下语法, 无误后再执行命令 /usr/local/nginx/sbin/nginx 启动 Nginx。接着,我们在Windows客户端机器修改系统的hosts文件,把如下的行追加进文件 hosts:125.88.62.100 125.88.62.100 125.88.62.100 保存文件以后,再用浏览器分别访问这3个站点,以检验配置的正确性。(1) 安装和配置其他两个服务器的Nginx,并逐个检查其正确性。因为3个服务器均以 共享方式挂接网站的目录,因此只需要安装和配置好Nginx,而不必再复制站点的内容 到本地文件系统。(2)部署负载均衡,具体过程参见“负载均衡” 一章。负载均衡被正确配置和启动以后, 我们再回来修改客户端Windows的系统hosts文件,使负载均衡的VIP与域名绑定,然 后再用浏览器访问3个域名,检查加入负载均衡环境后,各站点的运行情况。记住这个 VIP(125.88.62.99),以后我们在缓存服务器上会使用它。缓存服务器的部署和运行安装 Varnish(1)下载Varnish到本地目录:wget /varnish-1.1.2.tar.gz/download(2)解包:tar zxvf varnish-1.1.2.tar.gz(3)切换目录:cd varnish-1.1.2(4)配置,编译和安装:./configure - prefix=/usr/local/varnish make make install配置 VarnishVarnish的配置分两部分:源站名称的解析和Varnish本身的配置文件。在我的应 用中,总共有3个站点需要缓存,因此需要解析出3个源站和配置3个站点的缓存。(1)源站地址解析:这里我们再来回顾一下源站地址解析的作用:缓存服务器通过这 个机制来寻找源站在何处。在我们这个小规模的场景,用本地hosts绑定域名即可实现 源站地址解析,而在复杂的CDN环境,则需要使用专门的DNS服务器来完成这个工作。 修改后的服务器的 /etc/hosts 文件如:125.88.62.99 125.88.62.99 125.88.62.99 修改保存后,用域名检查其网络连通性,如 ping 。(2) 配置Varnish : Varnish解包以后,可在解包后的目录找到一个名为default.vcl 的配置样例文件,参考这个样例文件,则能编写出符合我们实际需求的配置。这里,我 先列出完整的配置文件,然后再做一些说明。运彳亍Varnish与其他开源软件相比,Varnish的启动确实很复杂。为了能正确运行Varnish并检 验其是否正常运行起来,建议以如下的步骤进行操作。(1) 检查/etc/hosts文件是否正确。在本案中,可以在缓存服务器ping 等3个域名,检查地址解析是否正确、网络是否连通。(2) 检查Varnish配置文件的书写是否有遗漏或错误。一般最容易犯的错误是少写花括 号 “”。(3) 创建缓存目录。为提高可靠性,我把缓存目录创建到其他分区。Varnish安装的目 录为/usr/local/varnish,则创建的目录为/var/vcache。注:/var与/usr是不同的分 区。(4) 修改系统内核参数,以优化系统的性能。我的某个服务器的系统内核参数新增内容 如下(可选):net.ipv4.tcp_fin_timeout =30 net.ipv4.tcp_keepalive_time =30net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.ip_local_port_range = 500065000 net.ipv4.tcp_max_syn_backlog =8192 dev_max_backlog = 1000 net.ipv4.tcp_max_tw_buckets = 50000 net.ipv4.ip_conntrack_max = 655360filter.ip_conntrack_tcp_timeout_established=180net.ipv4.tcp_rmem = 4096 87380 524288 net.core.rmem_max = 1048576(5) 启动Varnish。内容实在太长,得写成好几行才行:/usr/local/varnish/sbin/varnishd -n /var/vcache -f /usr/local/ varnish/sery.vcl -a 0.0.0.0:80-s file,/var/vcache/varnish_cache.data,2047M -w 30000,51200,10 -T 127.0.0.1:3500 -p client_http11=on(6) 检验Varnish是否正常运行:检查进程,正常运行的Varnish,应该是两个进程。 检查目录/var/vcache,查看是否有varnish_cache.data等文件自动生成。检查TCP 80 端口,是否处于监听状态。查看系统日志,了解Varnish的启动状态。如果有问题的话, 会在系统日志得到有用的排错信息。查看Varnish缓存情况, /usr/local/varnish/bin/varnishstat - n /var/vcache。接下来,在其他缓存服务器上进行相同的操作,这里不再赘述。(1) 配置:请参看第6章“负载均衡”相关内容。(2) 检验Varnish集群服务(负载均衡集群的VIP是211.99.76.120)。(3) 在其他Windows主机修改hosts文件,新增如下几项:211.99.76.120 211.99.76.120 211.99.76.120 (4) 用此Windows主机的浏览器访问http:/211.99.76.120。正常情况下,应该访问 不到任何页面(404错误)。(5) 用此Windows主机的浏览器分别访问等3个域名,如果都能正常访 问到页面文件,则表明Varnish完全按照我们的意愿进行工作。(6) 在其他的机房做同样的部署和操作。智能DNS的部署和运行智能DNS的部署和运行分为:收集IP地址、部署DNS以及运行这几个部分。1. 收集IP地址:(1) 收集的策略:根据前边的设计,我们需要3份地址列表,以对应电信、网通及教 育网的用户。已经分配出去的IP地址那么多,我们应当怎样收集和归类呢?如果地址列 表过大,可能会严重影响DNS服务器的性能(Bind将遍历一个很大的文件)。另外,可 能有些IP地址即使收集上来了,也不会有什么帮助,如普通ADSL拨号自动分配的IP。在整个CDN环节,由哪些组件来进行寻址呢?答案是用户使用的DNS(自己在电脑里指 定的,称本地DNS)和做CDN名称解析DNS的这部分。因此,只需要收集互联网上DNS 服务器的IP地址,就可以达到目的。这样一来,收集下来的数量就会大大降低。为了更 进一步缩小范围,一般使用网络地址的形式,却可以囊括很多DNS服务器。(2) 收集的方法: 网上查找。 利用shell脚本,从apnic(http:/www. )抓取。我在网上找了一个shell 脚本get_ip.sh,稍微修改了一下,其内容如下:#!/bin/shFILE=/root/apnic/ip_apnicwget -O $FILEgrep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | whileread ip cnt doecho $ip:$cntmask=$(cat << EOF | bc | tail -1 pow=32;define log2(x) (if (x<=1) return (pow); pow-;return(log2(x/2); log2($cnt) EOF)echo $ip/$mask>> NETNAME=whois $ip | sed -e/./H;$!d;'- e x;/netnum/!d |grep "netname | awk print $2|awk -F- print $1 case $NETNAME in CNC)echo $ip/$mask >> UNICOM;CNCGROUP| UNICOM)echo $ip/$mask >> UNICOM;CHINATELECOM|CHINANET)echo $ip/$mask >> TELECOM ; CERNET)echo $ip/$mask >>EUD ;*)echo $ip/$mask >> OTHER ; esac done执行这个脚本,将在目录/root/apnic生成UNICOM. TELECOM等几个文件。其中UNICOM 代表新联通的IP地址段,TELECOM代表电信的IP地址段。 购买IP地址段或者通过与CDN服务商合作获得IP地址列表或API接口。(3) IP地址列表处理。通过上述方法收集来的IP,把它们各自合并【注1】、排序、删 除重复的,备用。处理好后的IP列表文件分别为:unicom_ip、telecom_ip、edu_ip。2. DNS服务器部署:(1) 选择DNS服务器操作系统系统和软件。操作系统选择CentOS或FreeBSD, DNS的软 件则选择Bind,理由如下:开源软件,免费且能按要求定制;支持视图View。其他DNS 软件可能没有这个功能。(2) 安装和初步配置Bind。具体可参见本书第4章“域名服务DNS”相关内容。(3) 产生主从DNS同步所需的TSIGKEYO共有4个视图,因此需要执行4次TSIGKEY生 成操作。其操作步骤如下:DNSsec-keygen -a hmac-md5 -b 128 -n HOST uincom DNSsec-keygen -a hmac-md5 -b 128 -n HOST telecom DNSsec-keygen -a hmac-md5 -b 128 -n HOST edu DNSsec-keygen -a hmac-md5 -b 128 -n HOST any执行完毕后,将生成以下8个文件,如图所示:r Irootroot4705-0322: 0&K any.+ 15?+2K33- key-rvIrootroot920J-0322:09Kany.+157+2733. privateIrootroot4703*0322:09Kedu. +157+44943. keyr 1rootrot9203-0322:09Kedu +157+4494X privae-r» 1rootroot6103-Q322:0$Kteleco*. +157+M430-keyr 1 root root92 03-03 22:09 Ktelecos. +157+14430-privater广=1 root root50 0A03 22:04 Kumcoth. +157+09627+ key-r I root root 92 U3-Q3 22】04 Xuinuctil+】57+09627*private这些文件都是文本文件,可以用任何文本编辑器打开。通过对比文件对,将发现K*.key与K*.private之间的对应关系(正因为如此,我把它们叫做文件对)。在Bind 的主配置文件里,我们所需的TSIGKEY就从这些文件中得到。具体的取值就是打开每个 K*.private,复制第3行"key: ”后面的字符串。当然,从对应的K*.key文件取值也是 可以的,仅仅是字符串的位置不同而已。指出了 TSIG KEY的出处。root<8postfix »y_shell)# nore Kedu. +157+44M3.privatePrivate-keyformat: vl. 2Algorithm: 157 (HHAC_MD5)Key: VPHBbgub】KIgyNWCyiDgBit$: AAA=(mot即ostfix nwhZl。最好在named配置文件named.conf的同一目录/usr/local/named/etc生成这些 key文件对,以方便将来维护时查找。(4)生成3个视图View访问控制列表文件。为何这里只有3个视图访问控制列表文件 而不是4个呢?原因是“other”这个视图不需要IP列表,只需以“any”的方式来代替 IP列表。实际上,这3个访问控制列表文件也不是必须的,可以通过在Bind的配置文 件中加入文件块的方式达到相同的效果。但是为了维护的便利,生成单独的文件,然后 以include的方式包含进去。(5)切换到Bind的数据目录,然后把“收集IP地址”那一步生成的“unicom_ip、 telecom_ip、edu_ip”这3个文件复制过来。3. 运行(1)主DNS服务器的运行检查配置文件的正确性:named-checkconf/usr/local/named/etc/named.conf。检查区文件的配置:named-checkzone .zone、named-.zone、 named-checkzone .zone、 named- checkzone .zone如果书写无错误、配置完全正确,则在执行完每个命令后, 会有一个OK输出。启动DNS服务:/usr/local/named/sbin/named。如果想简化输入,可以省略那一串 路径,请自行把路径加入到环境变量中。检查运行情况:检查进程ps aux | grep