通过view实现智能DNS

DNS策略解析最基本的功能是可以智能的判断访问您网站的用户,然后根据不同的访问者把您的域名分别解析成不同的IP地址,然后跟DNS服务器内部的IP表匹配一下,看看用户的类型,然后给用户返回对应的IP地址。

原理介绍

DNS策略解析最基本的功能是可以智能的判断访问您网站的用户,然后根据不同的访问者把您的域名分别解析成不同的IP地址,然后跟DNS服务器内部的IP表匹配一下,看看用户的类型,然后给用户返回对应的IP地址。例如:一台http服务器在不同地区有不同代理服务器,智能DNS会在用户访问这个http服务器的时候,自动识别用户的IP所在地区和哪个代理服务器最近(根据内部设置的表格识别),然后将代理服务器的IP地址返回给用户让其访问,相当于进行了引导和负载均衡。
如下图所示:
通过view实现智能DNS

应用场景

双线路的机房:

服务本身有两个IP,一个电信IP,一个网通IP或者其他线路。

镜象网站:

在网通及电信的机房放置多个相同的镜象站点, 让不同的地方客户访问不同的站点。

负载均衡:

对于流量比较大的网站,可以把流量分配到几台不同的服务器上,以提高网站速度。

个性化站点服务:

比如通过IP表的重新定义, 让国外的客户自动访问英文版的网站; 让国内的客户自动访问中文版的网站。

CDN加速器:

通过与squid等WEB缓存软件结合实现CDN加速器。

防止DDOS攻击:

通过多个线路分散攻击流量,从而达到抵挡DDOS攻击。

CDN和智能DNS

CDN服务:

就是把静态页面缓存到不同地区很多台专门的缓存服务器上,然后根据用户线路所在的地区自动选择一个最近的缓存服务器让用户访问,以此提高速度,这种方案对静态页面效果非常好,同时它也需要智能DNS的帮助才能实现把用户引导到离自己最近的缓存服务器上。

智能DNS:

本身并没有加速功能,说白了就是自动识别网通、电信各线路的用户,然后解析到不同的IP,起到一个引导作用。但是由于国内各地域、各系统的网络环境各不相同,并不仅仅是简单的电信、网通两种资源,所以会有域名做了智能DNS后,其用户访问速度反而下降的情况发生。但是使用智能DNS,客户源站是动态还是静态内容则没有影响,效果一样。

BIND VIEW:

view:视图,多个zone的组合。
一个bind服务器可定义多个view,每个view中可 义一个或多个zone
每个view用来匹配一组客户端
多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件

格式: 
    view VIEW_NAME { 
        match-clients { testacl;  }; 
        zone “magedu.com” { 
            type master; 
            file “magedu.com.zone”; }; 
        include “/etc/named.rfc1912.zones”; 
    };
注意: 
    (1) 一旦启用了view,所有的zone都只能定义在view中,包括根zone。
    (2) 仅在允许递归请求的客户端所在view中定义根区域 
    (3) 客户端请求到达时,是自上而下检查每个view所服务 的客户端列表

智能DNS的实现

要利用到调用ACL和view。通过定义的不同ACL来规定不同区域的主机,然后给这些不同的主机分配不同的访问IP地址。
下面用一个小实验来展示智能DNS的实现:通过搭建智能DNS实现来访问www.hhy.com的河南用户和北京用户分别得到不同的服务器IP地址。

在主配置文件/etc/named.conf规定acl:

通过view实现智能DNS

在主配置文件/etc/named.conf配置view:

通过view实现智能DNS

配置不同用户DNS配置文件:

北京用户 vim named.rfc1912.zones.bj
通过view实现智能DNS

河南用户 vim named.rfc1912.zones.hn
通过view实现智能DNS

配置不同用户的区域数据库文件

北京用户 vim jzt.com.zone.bj
通过view实现智能DNS

河南用户 vim jzt.com.zone.hn
通过view实现智能DNS

检查配置

通过view实现智能DNS

在客户端进行测试

通过view实现智能DNS

后记

虽然这个实验相对来说比较简单,但是想要深刻了解和理解DNS的工作原理以及智能DNS的详细技术,还需要我们进行更像详细和深刻的学习。本文只是一个引导大家进入这个世界的一条小路罢了

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/87566

赞 (6)
OscaoChaserOscaoChaser
上一篇 2017-10-03 11:03
下一篇 2017-10-05 12:38

相关推荐

  • 对修改提示符引起的一些问题的理解

    有一个练习:提示符修改过后永久保存,每次打开一个新的shell,提示符都为已设定好的格式,不会因为打开新的shell而不同。 在做这个练习的时候遇到了不少问题,通过不断bing,将起初很陌生的问题一点点的解决,得到了一些理解,因此将理解写下来。 提示符与变量PS1有关,PS1的值可以被修改或重新赋予。PS1的值变,则提示符也会变。通过搜索得到只要在/etc/…

    Linux干货 2017-07-15
  • 文本处理工具-2

    1、 sed 是一种行/流编辑器,它一次处理一行内容;处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中该行内容,处理完成后,把缓冲区的该行内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出,Sed 可以用来自动编辑一个或多个文件。 2…

    Linux干货 2016-08-15
  • N21第五周

    1.显示/boot/grub2/grub.cfg中以至少一个空白字符开头的行; ]# grep '^[[:space:]]\+' /boot/grub2/grub.cfg 2.显示/etc/rc.d/init.d/functions文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; ]#…

    Linux干货 2016-08-15
  • Linux终端类型

    Linux终端类型 Linux系统中的终端基本都在/dev目录下,可分为文本命令行模式和图形界面模式。命令行模式是一种字符设备,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设备,很象电传打字机,是由Teletype公司生产的。 1、 物理终端 在Unix系统中,计算机显示器通常被称为控制台终端。…

    Linux干货 2016-10-14
  • 划分子网例题

    概念:子网划分就是——>将一个大网络(主机ID位多)划分成多个小的网络(主机ID位少) 如何实现呢?!        实现——->网络ID向主机ID借位,网络ID位变多,主机ID位变少 涉及的公式:         &n…

    2017-09-04
  • bash脚本进阶(续)

     1、打印99乘法表 [root@ _212_ ~/bin/for_script]# cat 99_changfa.sh  #!/bin/bash line=1 for i in `seq 1 9`;     …

    Linux干货 2016-08-21