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

DNS(域名系统)与BIND(Berkeley互联网名称域)

时间:2017-09-02 00:03:41      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:bind   dns   

一直以来对浏览器地址栏输入的地址有极大的困惑,为什么输入的是www?为什么结尾是.com?为什么要用"."来分隔三部分(大多数情况下)?好吧,大学后才知道,这东西学名是叫域名,而不是网民称的网址什么的;域名让我们更方便的访问,而不是要死记住那一大串的数字:ip地址;


一、先认识一下这个名称域,也可以叫ta名称空间,在空间上形象的把ta看作一棵倒置的树,数据结构里的树形结构知道吧,就跟那差不多的样子;

比如www.baidu.com

根域(.)在最后被省略不写,com是它的顶级域,baidu是二级域名,www是三级域名,也叫主机名

下面详细介绍域名空间:

首先是根域(.);

根域下面是顶级域,也由Internet域名注册授权机构管理,共有3种类型的顶级域.
1.组织域,采用3个字符的代号,表示DNS域中所包含的组织的主要功能或活动,常用的组织域名.
2.地理域.采用两个字符的国家或地区代号,如cn为中国,kr为韩国,us代表美国.
3.反向域.这是一个特殊域,名字为in-addr.arpa,用于将IP地址映射到名字.

  对于顶级域的下级域,Internet域名注册授权机构授权给Internet的各种组织,当一个组织获得了对域名空间某一部分的授权后,这个组织就负责命令所分配的域及其子域,包括域中的计算机的其他设备,并管理分配的域中主机名字与IP地址的映射信息.


域名系统就是负责名称解析的,有正向解析和反向解析。顾名思义就是由名称知晓IP抑或是由IP知晓名称;

二、一次完整的DNS查询有两种:

 1、主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

 2、本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。


举个栗子:

假定域名为m.xyz.com的主机想知道另一个主机y.abc.com的IP地址。例如,主机m.xyz.com打算发送邮件给y.abc.com。这时就必须知道主机y.abc.com的IP地址。下面是上图a的几个查询步骤:

1、主机m.abc.com先向本地服务器dns.xyz.com进行递归查询。

2、本地服务器采用迭代查询。它先向一个根域名服务器查询。

3、根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。

4、本地域名服务器向顶级域名服务器dns.com进行查询。

5、顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。

6、本地域名服务器向权限域名服务器dns.abc.com进行查询。

7、权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。

8、本地域名服务器最后把查询结果告诉m.xyz.com。


三、资源记录 RR

有以下几种类型:

    A,AAAA,PTR,SOA,NS,CNAME,MX

下面分别介绍每个资源类型及在数据库中的具体格式

1.SOA:Start Of Authority,起始授权记录

在任何一个数据库中有且只能由一条SOA记录,而且必须是数据库的第一条记录

name:当前域的域名,如:qhdlink.com.;或者可以使用"@"代替

value:

1.当前区域的主DNS服务器的FQDN;

2.当前区域数据库的管理员的邮件地址;但是使用"."来代替"@";

   如:mailmaster.(@)whjlab.com

3.主从服务器进行区域传送的相关时间定义及否定答案的统一TTL;

(Serial 1H 15M 1W 1D)

括号内的字段的意义是:

    

Serial

代表这个zone file 的版本,每当zone file 内容有变动,name server 管理者就应该增加这个号码,因为slave 会将这个号码与其copy 的那份比对以便决定是否要再copy 一次(即进行zone transfer )。


Refresh

slave server 每隔这段时间(秒),就会检查master server 上的serial number。 不 过这里会发生一个问题就是,在master server 在update data 完成到slave server 来检查时再update 可能还有 好一段时间,因此这段期间master/slave DNS server间zone files 就可能出现不一致。 所 以在Bind较新的版本中便加入"notify"功能,使用者在"named.conf" 设定中在需要的zone 中加入"notify"的设定,则master server在update 完成某个zone file 的data 后便会主动发个讯息(NOTIFY),借以通知该其它的slave servers,因此如果slave servers 也有支援这个"notify"功能时,接下来slave servers 马上就可以做zone transfer 来update data。 

当slave server 无法和master 进行serial check时,要每隔几秒retry 一次。


Expire

当时间超过Expire 所定的秒数而slave server 都无法和master 取得连络,那么slave 会删除自己的这份copy。


Minimum

代表这个zone file 中所有record 的内定的TTL 值,也就是其它的DNS server cache 这笔record 时,最长不应该超过这个时间。

例:

@ 86400 IN SOA ns1.whjliab.com. mail.whjlab.com.(

  2017081001;serial

  1H;refresh

  15M;retry

  1W;expire

  1D;)ttl

2.A:Address,主机记录

标识从完全合格域名到IP地址的映射关系;FQDN --> IPv4

name:域中某主机的FQDN或主机名

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


例:

www.whjlab.com. 86400 IN A 192.168.1.1

www IN A 192.168.1.1



3.AAAA:Address,FQDN --> IPv6


4.NS记录:

name:当前域的域名

value:当前区域内某DNS服务器的完全合格域名,如:ns#.qhdlink.com

注意:

    1.一个域内可以有多个NS资源记录

    2.每个NS资源记录都必须要有一个A记录与之对应


例如:

whjliab.com. 86400 IN NS ns1.whjlab.com.


5.MS记录:

name

value:当前域中某有效的邮件服务器的主机名

注意:

1.一个域中可以有多条

2.每个MX都要有一条A记录对应

例如

whjlab.com. 86400 IN MX 10 mail1.whjlab.com

@ IN MX 20 mail2

6.CNAME:

name 别名的FQDN或者简单名称

value 真正名称的FQDN或者其简单名称

例:

web.qhdlink.com. 86400 IN CNAME www.qhdlink.com.

web IN CNAME www


7.PTR记录:

  name:IP地址反过来写,并在其后缀加反向域标准后缀

比如:1.72.16.172.in-addr.arpa.

四、主从DNS服务器:

主DNS:维护所负责解析的区域数据库文件的主体服务器,即:可以在区域数据库中进行增删改等管理操作;读写操作均可进行

从DNS:辅助DNS服务器,从主DNS-server或者其他的从DNS-server以区域传送的方式复制对方的区域数据库;所以从DNS不具备管理操作的作用;

    

为了保证两者中 的数据库保持一致,需要保证:

序列号一致:Serial,即数据库中的版本号;主DNS服务器的数据库内容如果发生变化,序列号应该自增。如果从服务器接收到的新数据库,如果其序列号没有变化,则忽略;如果发现其序列号比当前自身的数据库序列号大,则更新;

     刷新时间间隔:refresh,从DNS服务器每隔多长时间到主DNS服务器上去检查序列号的变化更新情况;


    重试时间间隔:retry,从DNS服务器向主DNS服务器要求同步数据失败之后,再次发起尝试请求的时间间隔;


过期时间:expire,从DNS服务器始终联系不到主DNS服务器时,从DNS服务器多长时间之后停止服务;


    否定答案的缓存时长:minimal TTL


五、实现方式-Bind软件

实现DNS协议的程序是BIND,其中BIND的服务器的主程序是named


bind:

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

可以在此配置文件中使用include命令包含其他的配置文件;

/etc/named.lscdlv/key

/etc/named.rfc1912.zones

声明区域;

/etc/named.root.key


主配置文件的格式:

1.注释方式:

//或者/* ... */

2.分段配置的特点

 a.访问控制列表定义字段

acl ACL_NAME {...};

 b.全局选项段:

options {...}

 c.日志配置段:

logging {...};

 d.区域配置段:

zone "ZONE_NAME" IN {...}

 e.视图配置段:

view VIEW_NAME {...}

 f.include包含段:

include /PATH/TO/SOME_CONFIG_FILE



 options {

listen-on port 53 { 127.0.0.1; };

//在启动DNS服务之后,named进程所监听的ipv4地址

listen-on-v6 port 53 { ::1; };

//在启动DNS服务之后,named进程所监听的ipv6地址

directory       "/var/named";

//规定的解析库的根目录


       dump-file       "/var/named/data/cache_dump.db";

       statistics-file "/var/named/data/named_stats.txt";

       memstatistics-file "/var/named/data/named_mem_stats.txt";


       allow-query     { localhost; };

       //访问控制语句,允许哪些主机将查询请求发送至本服务器;默认为localhost,即只为服务器自身提供查询请求处理;


      recursion yes;

      //全局开启递归查询;默认为所有客户端开启递归查询

dnssec-enable yes;

       dnssec-validation yes;

       dnssec-lookaside yes;

       //建议初学者关闭 此dnssec功能


       /* Path to ISC DLV key */

       bindkeys-file "/etc/named.iscdlv.key";


       managed-keys-directory "/var/named/dynamic";


       pid-file "/run/named/named.pid";

       session-keyfile "/run/named/session.key";


};


DNS(域名系统)与BIND(Berkeley互联网名称域)

标签:bind   dns   

原文地址:http://healerj9.blog.51cto.com/12476305/1962001

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