码迷,mamicode.com
首页 > 其他好文 > 详细

DNS&BIND入门

时间:2015-05-03 19:11:18      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:dns   bind   view视图   子域授权   主从同步   解析   

    本文主要论述DNS基本原理,BIND正反向解析、主从同步、子域授权及view


    1、DNS基本原理

DNS:Domain Name Service,域名服务器,基于udp和tcp完成名称解析服务

    C/S架构的协议--客户端、服务端;监听于53/udp,53/tcp两个端口;属于应用层协议

    

BIND:Bekerley Internat Name Domain-->ISC

    BIND是DNS在互联网上最著名的实现,提供DNS和DHCP服务


DNS查询类型

    递归查询:一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机;

    迭代查询:一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求;

    技术分享


名称服务器:域内负责解析本域内的名称的主机,通常用ns#(name server)表示

    根服务器:从AM编号,其中:美国10(1个主根和9个辅根)、欧洲2(位于英国和瑞典)、亚洲1(位于日本)1个为主根服务器,放置在美国弗吉尼亚州的杜勒斯,由美国VeriSign公司负责运营维护,其余12个均为辅根服务器。

    因为迭代查询极耗资源,所以DNS服务器通常只为自己组织内的客户端做解析,通过在权限上加以限制来实现

DNS解析类型

    FQDN-->IP(正向解析)

        FQDN:Full Qualified Domain Name--完全限定域名

    IP-->FQDN(反向解析)

        反向解析难度极大,目前应用:邮件服务器根据反向解析,拒绝接收来自没有域名的站点发来的信息以降低垃圾邮件的数量

    注意:正、反向解析是两个不同的名称空间,是两棵不同的解析树;各需要一个解析库来分别负责本地域名的正向和反向解析

DNS服务器类型

    DNS服务器

    从(辅助)DNS服务器

    缓存DNS服务器

    转发器

    DNS服务器:维护所负责解析的域内的解析库(解析库由管理员维护)

                 序列号:解析库的版本号;同步解析库的前提:主服务器解析库内容发生变化,其序列号递增加1

                  刷新时长:从服务器向主服务器请求同步解析库的时间间隔

                  重试时长:从服务器向主服务器请求同步解析库失败时,再次尝试的时间间隔

                  过期时长:从服务器始终联系不到主服务器时,多久之后放弃从服务器角色,停止服务

                  否定应答的TTL:解析得到的否定答案的缓存时长

    DNS服务器:解析库从主DNS服务器或其他DNS服务器“复制”(区域传送)而来

                区域传送:全量传送:传送整个解析库

                                增量传送:传送解析库变化的那部分内容      

    缓存DNS服务器:不负责解析任何域,也不用注册域名,用于帮助域内的客户端向互联网的DNS服务器发送请求,把结果返回给客户端的同时在服务器上做一份缓存


    2、BIND正反向解析

(1)基本概念

一次完整解析的流程

    Client-->hosts文件-->DNS Service

        Local Cache-->DNS Server(recursion)-->Server Cache-->iteration(迭代)

    解析答案有两种:

        肯定答案                 权威答案

         否定答案                 非权威答案

            请求的条目不存在等原因导致无法返回结果

区域解析库,由众多RR组成 

     资源记录:Resource Record--RR

      记录类型:AAAAAPTRSOANSCNAMEMX

资源记录的类型标记了主机在域内处于什么样的角色上

       SOA:Start OfAuthority,起始授权记录;一个解析库有且仅有一个SOA记录,且必须为解析库的第一条记录;定义了当前解析库为哪个区域所用,由谁负责;

       A:internetAddress,FQDN-->IPv4

       AAAA:internetAddress,FQDN-->IPv6

       PTR:PoinTeR,IP-->FQDN

       NS:NameServer,专用于标明当前区域的DNS服务器

       CNAME:Canonical Name,别名记录

       MX:MaileXchanger,邮件交换器,标明该域实现邮件交换的主机是谁

     资源记录定义的格式

      语法格式:name  [TTL]  IN  rr_type  value

TTL:解析得到结果在客户端的缓存时长,在服务器端由管理员定义

       注意

        1TTL可从全局继承

        2@可用于引用当前区域的名字

        3)相邻的两个资源记录的name相同时,后续的可以省略

        4)同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮询方式响应

        5)同一个值也可能定义多个不同的名字,仅表示通过多个不同的名字可以找到同一个主机

       SOA

         name:当前区域的名字,例如“magedu.com.”;

         value:有多部分组成

           1、当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字

           2、当前区域管理员的邮箱地址,但地址中不能使用@符号,一般用“.”替换

           3主从服务协调属性的定义以及否定答案的统一的TTL

        示例                 [TTL]

         magedu.com.  86400   IN   SOA   ns.magedu.com.   nsadmin.magedu.com.(                                                       2015042301    序列号(一般不要超过10位数字)

  2H            刷新时长

  10M           重试时长

  1W            过期时长

  1D            否定答案的TTL

             

       NS:

         name:当前区域的名字

         value:当前区域的某DNS服务器的名字,例如ns.magedu.com.

        注意:

         (1)一个区域可以有多个NS记录

          2)对NS记录而言,任何一个NS记录后面的服务器名字,都应该在后续有一个A记录

         示例

magedu.com.  IN   NS   ns1.magedu.com.

magedu.com.  IN   NS   ns2.magedu.com.

       

       MX

         name:当前区域的名字

         value:当前区域的某邮件服务器(smtp服务器)的主机名

        注意

            1)一个区域内,MX记录可以有多个,但是每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级,数字越小,优先级越高

            2)对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

         示例

         magedu.com.   IN   MX  10  mx1.magedu.com.

         magedu.com.   IN   MX  10  mx2.magedu.com.

 

       A

         name:某主机的FQDN,例如www.magedu.com.

         value:主机名对应的主机地址

         示例

         www.magedu.com.  IN   A   1.1.1.1

         www.magedu.com.  IN   A   1.1.1.2

同一个名字可以通过多条记录个不同的值,DNS解析时会轮询响应,即:第一次解析时解析为1.1.1.1,第二次解析为1.1.1.2,第三次1.1.1.1,第四次1.1.1.2。。。

         mx1.magedu.com.   IN   A   1.1.1.3

         mx2.magedu.com.   IN   A   1.1.1.3

同一个值有多个不同的名字

         注意

          避免用户写错名称时给否定答案,可以通过泛域名解析进行解析至某特定地址

      例如假设百度网址www.baidu.com对应的是1.1.1.4,若A记录写成“www.baidu.com IN A 1.1.1.4”,则用户在输入“ww.baidu.com”或“baidu.com”时会无法解析到1.1.1.4,得到否定答案,但如果在A记录上加上两条“*.baidu.com IN A 1.1.1.4”“baidu.com IN A 1.1.1.4,就可以正确解析到1.1.1.4。这就是泛域名解析的应用

 

       AAAA

         name: FQDN

         value: IPv6

       

       PTR

         nameIP,有特定格式,把IP反过来写,例如1.2.3.4要写作4.3.2.1;且有特定后缀:in-addr.arpa.,所以完整写法为4.3.2.1.in-addr.arpa.

         valueFQDN

         示例

         4.3.2.1.in-addr.arpa.  IN   PTR   www.magedu.com.

        简写成

         4   IN   PTR   www.magedu.com.

         注意:网络地址及后缀可省略,主机地址仍然要反写

 

       CNAME

         name:别名的FQDN

         value:正式名字的FQDN

        示例:

         web.magedu.com.   IN   CNAME  www.magedu.com.

(2)正向解析

缓存名称服务器的配置

监听外部地址即可(通过修改配置文件来实现)技术分享

dnssec:Domain Name System Security Extensions (DNSSEC)DNS安全扩展,是由IETF提供的一系列DNS安全认证的机制。它提供了一种来源鉴定和数据完整性的扩展,但不去保障可用性、加密性和证实域名不存在。

      测试建议关闭dnssec,通过注释下图各选项来实现

技术分享

除此之外,下图选项也必须注释掉或改为any,否则服务器只允许本机查询

               技术分享

技术分享

技术分享

技术分享

技术分享

正向解析测试技术分享


(3)反向解析

技术分享

技术分享

技术分享

              反向解析测试

技术分享


    3、主从同步

技术分享

技术分享

技术分享

技术分享

技术分享

6、主从服务器时间应该同步,可通过ntp进行

 

7bind程序的版本应该保持一致,否则,应该从高,主低


  4、子域授权

子域授权

分布式数据库的实现依赖于子域授权

正向解析区域的子域授权方法:

glue record:粘合记录,将上级服务器和下级服务器建立起关联

在父域的解析库文件中定义一个子域的DNS

ops.magedu.com.         IN         NS         ns1.ops.magedu.com.

ops.magedu.com.         IN         NS         ns2.ops.magedu.com.

ns1.ops.magedu.com.         IN         A         1.1.1.1

ns2.ops.magedu.com.         IN         A         1.1.1.2

 

fin.magedu.com.         IN         NS         ns1.fin.magedu.com.

fin.magedu.com.         IN         NS         ns2.fin.magedu.com.

ns1.fin.magedu.com.         IN         A         3.1.1.1

ns2.fin.magedu.com.         IN         A         3.1.1.2

注意:子域和父域的服务器无须在一个网络内,只要通过互联网彼此间能通信即可

技术分享

技术分享

    5、BIND view(视图)

一个bind服务器可以定义多个view,每个view中可以定义一个或多个zone

每个view匹配一组客户端;

多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件;

 

定义格式

view VIEW_NAME {

match-clients {  };

}

 

注意

(1) 一旦启用了view,所有的zone都只能定义在view中;

(2) 仅需在允许递归请求的客户所在的view中定义根区域;

(3) 客户端请求到达时,是自上而下检查每个view所服务的客户端列表;

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享




DNS&BIND入门

标签:dns   bind   view视图   子域授权   主从同步   解析   

原文地址:http://10066605.blog.51cto.com/10056605/1641371

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!