BIND和DNS名称解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BIND和DNS名称解析相关的知识,希望对你有一定的参考价值。

一、DNS和Bind

    1.DNS功能:将主机名和ip地址进行一一对应,通过主机名可以解析到目标主机的ip地址(正向解析),也可以通过ip地址解析到主机名(反向解析)。

        主机名到IP地址的映射有两种:

            静态映射:每台设备上都有主机到ip映射的配置文件,通过该文件可以完成一部分地址解析,该映射文件只归本设备使用,在linux下静态映射存在/etc/hosts文件下

            动态映射:通过一套域名解析系统(DNS),在专门的DNS服务器上存放主机到IP地址的映射,需要使用主机名通信的设备,需要从DNS服务器查询该主机的IP地址


    2.Bind:Berkeley Internet Name Domain,伯克利互联网名称域,将整个互联网分为多个不同的管理区域,每个区域都有一台服务器管理其中的主机名,是全球最大的分布式数据库之一。

        Bind——倒置的树            

            根域(.)

    顶级域(Top Level Domain, TLD, tld)

        组织域:标识域的组织结构;

    com, net, org, gov, edu, mil, ...

        地理域:标识域所在的地理范围;

    tw, hk, cn, jp, iq, ...

                反向域:用于反向解析

                    in-addr.arpa

    二级域及下级子域:由企业,组织,团体或个人维护的域;

                baidu,sohu,...

    主机名:标识特定域中的特定主机名称;

                www,mail,forum,ns


    FQDN:Full Qualified Domain Name,完全合格域名;主机名的完整名称;

                从枝叶到根域的顺序书写,如www.ppp213.com.

    

    

    3.名称解析的方式:

        正向解析:FQDN --> IP

        反向解析:IP --> FQDN

    注意:正向解析和反向解析所使用的名称属于不同空间,不是同一棵树,也不是同一个数据库;

        

        在linux中,在/etc/resolv.conf文件存放DNS服务器的地址。


    4.名称查询的类型:

        递归查询:recurse,要求有明确结果的查询;必须返回一个肯定的或否定的答案;

        迭代查询:iteration,按照一定的顺序和步骤依次向不同服务器发出查询请求,尽量要求返回一个答案;


    5.名称查询获得的答案:

        权威答案:由直接负责管理对应信息的名称服务器返回的答案;

        非权威答案:由指定的服务器从其缓存中或利用迭代方式查询得到的答案;


        还有两种可能;

    肯定答案:可以解析到结果

    否定答案:无法解析到结果


    6.名称服务器:NS,Name Server;

        至少负责一个域的数据库管理;

    主名称服务器:Master NS

    从名称服务器:辅助名称服务器,Slave NS;


        不负责任何域的数据库管理:

    缓存名称服务器;


    7.一次完整的主机名称解析的流程:

        Client --> hosts --> Local Cache --> 首选DNS服务器(递归查询) -->

    1.服务器本地数据库中有结果,直接返回权威答案;

    2.服务器不维护该域,但已经有缓存的结果,直接返回非权威答案;

    3.服务器不维护该域,缓存中也没有结果,于是开始迭代查询:

                1) Root 返回顶级域服务器

                2) 顶级域服务器返回二级域的NS地址;

                3) 直到找到对应主机所在域的NS服务器,获得解析结果;

                4) 缓存此次查询结果并用缓存中的数据响应客户端;


二、主从NS服务器

    1.定义

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

        从名称服务器:也称为"辅助名称服务器",从主名称服务器或者其他的从名称服务器复制区域数据库文件到本地;因此,从名称服务器不能进行管理操作(增、删、改),只能进行读操作;


    2.主从服务器数据的同步

        当主名称服务器不能使用时,仍然可以从该主名称服务器的从服务器中获取数据进行DNS解析,从名称服务器是一种备份操作,若主从名称服务器数据不一致时会产生错误,因此必须实时保证主从服务器数据库的一致性。为了保证主名称服务器和从名称服务器的数据库的一致性,通过定义下来参数来实现:

    1)序列号:Serial,即:数据库的版本号;

    2)刷新时间间隔:Refresh,从服务器到主服务器检查序列号的变更情况的时间间隔;

    3)重试时间间隔:Retry,从服务器到主服务器的序列号检查请求失败以后,再次尝试发送请求的时间间隔;通常来讲,重试时间间隔要远远小于刷新时间间隔;

    4)过期时间:Expire,从名称服务器始终无法联系主名称服务器,从名称服务器最大的连续工作时长;

            5)否定答案的缓存时长:minimal ttl;


    3.主从服务器时间同步的方法:

        1)通过互联网中的时间服务器;

        2)通过局域网中自建时间服务器;

    CentOS 6-:ntp(网络时间协议)服务器,ntpd程序

    CentOS 7:ntpd程序,chrony程序


        3)修改/etc/ntp.conf

            添加一行

                restrict 192.168.109.0/24 nomodify  为该网段中所有主机提供时间同步服务

            注释掉原本server的几行,之后添加一行:

                server 127.127.1.0 iburst  使该服务器成为内部网络所有服务器的时间服务器


    让配置加载并生效:

        CentOS 6-:service ntpd reload|restart

                CentOS 7:systemctl reload|restart ntp.service


    4.主从服务器区域数据库复制的方式:区域传送

        推送:主名称服务器主动将更改后的数据库发送给从服务器;

        拉取:从名称服务器在比对序列号之后发现主服务器数据库的序列号变大,要求主服务器发送数据库以更新自身数据库;


        区域传送两种类型:

    全量传送:AXFR,All Transfer,将整个数据库文件传送至从服务器;

            增量传送:IXFR,Incremental Transfer,仅传送自上次数据库传送以后发生变化的内容;


        对于Bind,默认允许所有客户端请求区域传送,为了安全起见,需要进行访问控制;


        区域传送是从名称服务器能够进行权威解答的必要基础;


        存放于数据库文件中的用于完成名称解析工作的数据内容,我们称为"资源记录";即:Resource Record,简称为"RR";


三、资源记录:RR

    常用的资源记录的类型:

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


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

        在任何一个区域数据库中必须有且只能有一条SOA记录,而且该记录必须放在数据库中的第一条;其中包括:

    域名;

    数据缓存的时间;

    NS服务器的主机名;

    管理员的邮箱地址;

    序列号,刷新时间间隔,重试时间间隔,过期时间及否定答案的缓存时间;


    2.A:Address,主机记录;

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


    3.AAAA:Address,主机记录;

        标识从完全合格域名到IPv6地址的映射关系;


    4.PTR:PoinTeR,反向指针记录;

        标识从IP地址到完全合格域名的映射关系,在一个数据库中,不可能同时拥有A记录和PTR记录。


    5.NS:Name Server,名称服务器记录;

        标识当前域中被授权的名称服务器;


    6.CNAME:Conanical Name,别名记录;

        标识从完全合格域名到完全合格域名的映射关系;


    7.MX:Mail eXchange,邮件交换记录;

        标识域中的邮件服务器的主机名称,标识从域名到完全合格域名的映射关系;

        MX资源记录包含了一个优先级,0-65535,数字越小优先级越高;


四、资源记录的格式:

    DN|FQDN [TTL]IN RR_TYPE VALUE


    注意:

        1.名称部分可以写FQDN,也可以省略域名写主机名,其域名会从配置文件中通过宏来继承;常用的宏$Origin;

        2.TTL是以秒为默认时间单位的时间标识符号,如果省略,则从全局定义的宏中继承,通常是$TTL;

        3.在区域数据库中,"@"有特殊含义,其含义为:当前区域的域名,在资源记录数据库中写邮箱地址不能使用"@"符号,需要用"."来替换;

        4.一个FQDN可以通过多条记录定义多个不同的值;客户端在查询此类资源记录时,DNS服务器会默认采用轮询的方式顺序调取每个记录的内容,这是一种简单的负载均衡的处理;

    www.ppp213.com. IN A 1.1.1.1

    www.ppp213.com. IN A 1.1.1.2

    www.ppp213.com. IN A 1.1.1.3

        5.多个FQDN通过多条记录对应同一个值,但此时更好的方案是使用别名记录;

    www.ppp213.com. IN A 1.1.1.1

    ftp.ppp213.com. IN A 1.1.1.1

    bbs.ppp213.com. IN A 1.1.1.1


    还可以写成:


    www.ppp213.com. IN A 1.1.1.1

    ftp.ppp213.com. IN CNAME www.ppp213.com.

    bbs.ppp213.com. IN CNAME www.ppp213.com.

        6.在区域数据库中,根域的名称"."必须写在FQDN的结尾处;如果在FQDN结尾处没有".",则bind程序会在名称后面补上当前域的域名(在SOA记录中);

    www.ppp213.com  IN A 1.1.1.1

    相当于

    www.ppp213.com.ppp213.com. IN A 1.1.1.1

       

            www  IN A 1.1.1.1

    相当于

    www.ppp213.com. IN A 1.1.1.1

    

    ftp   IN CNAME www.ppp213.com

    相当于

    ftp.ppp213.com. IN CNAME www.ppp213.com.


五、常见的资源记录在数据库中通用写法:

    1.SOA:

        DN|FQDN:当前域的域名,如:ppp213.com.

    或者使用"@"代替域名;@符号会使用主配置文件中定义的域名来代替;

        VALUE:由以下几个部分组成:

    1)当前域中的主名称服务器的FQDN;ns.ppp213.com.

    2)当前域的数据库管理员的邮箱地址,需要使用"."来代替"@";root.ppp213.com.

    3)主名称服务器进行区域传送的相关时间参数的定义:

                (Serial Refresh Retry Expeir TTL)

                (Serial;

                Refresh;

                Retry;

                Expeir;

                TTL;)


        示例:

    ①ppp213.com.86400IN SOA  ns1.ppp213.com. master.ppp213.com. (

                                                            2018040601;

                                                            1H;

                                                            10M;

                                                            1W;

                                                            5M;)


    @86400IN SOA  ns1.ppp213.com. master.ppp213.com. (2018040601 1H 10M 1W 5M)


    2.NS记录:

        name:当前域的域名;可以写完全合格域名FQDN;可以写@占位;还可以省略不写,如果省略不写,则意味着该资源记录的名称与其上一条资源记录的名称相同;

        value:当前区域内被授权的名称服务器的FQDN;


    注意:

    1)一个域中有多少台名称服务器就需要写多少个NS资源记录;

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


    示例:

    qhdlink.com.IN  NS ns1.qhdlink.com.

    @                 IN  NS  ns1

                                IN  NS  ns2


    3.MX记录:

        name:当前域的域名;可以写完全合格域名FQDN;可以写@占位;还可以省略不写,如果省略不写,则意味着该资源记录的名称与其上一条资源记录的名称相同;

        RR_TYPE:MX priority

        value:当前域中有效的邮件服务器的FQDN;


        注意:

    1)一个域中,可以有多条MX资源记录,通过优先级的大小决定被使用的次序;

    2)每个MX资源记录都必须对应一条A记录;


        示例:

    ppp213.com. IN  MX  10(优先级)  mail.ppp213.com.

    @                 IN  MX  10  mail


    4.A记录:

        name:域中指定主机的FQDN;

        value:该主机上真实有效的IPv4地址;


        示例:

    www.ppp213.com. 43200 IN  A 192.168.109.100

    www     43200 IN  A 192.168.109.100


    泛域名:

    *.ppp213.com.   43200 IN  A 192.168.109.100

    *             43200 IN  A 192.168.109.100


    直接域名解析:

    ppp213.com.     43200 IN  A 192.168.109.100


    通常,泛域名或直接域名都是为了防止用户写错名称而导致无法给出正确的解析结果;


    5.CNAME记录:

        name:域中指定主机的别名;

        value:真正的主机的FQDN;


        示例:

    ftp.ppp213.com. [86400]  IN  CNAME  www.ppp213.com.

    ftp             [86400]  IN  CNAME  www


    6.PTR记录:

        name:将IP地址的四个八位组反过来,加上反向域的域名后缀;

    如果IP地址是:172.16.1.100/16,其对应的名称的写法:

                100.1                         IN  PTR  www.ppp213.com.

                100.1.16.172.in-addr.arpa. IN  PTR  www.ppp213.com.


        value:域中与指定的IP地址对应的FQDN;


        注意:value部分必须写FQDN,绝对不能省略域名后缀,最后必须以"."结尾;否则bind程序会将反向域的域名补在名称之后;



以上是关于BIND和DNS名称解析的主要内容,如果未能解决你的问题,请参考以下文章

Linux-dns基础知识和BIND的简单配置-1

BIND与dns解析 一

DNS解析与Bind的使用

DNS域名解析服务(正向解析反向解析主从同步)

DNS&BIND——DNS的子域授权和定义转发服务器

DNSBind