zoukankan      html  css  js  c++  java
  • DNS详细解析问题

    CentOS7 DNS 服务 bind9实战

     

     

    目录

    一、DNS理论基础

    1,DNS 的出现及演化

    IP地址通信 》》hosts文件解析》》DNS系统

    2,DNS概述入门

    DNS (Domain Name System,域名系统),域名与IP的相互映射,提供用户访问互联网;
    DNS端口:53 UDP协议
    DNS的分布式数据库是以域名为索引的,每个域名实际上就是一颗很大的逆向树,树深最大127层,每个节点都有63个字符的文本标号;

    3,DNS域名解析过程

    首先,客户端先在本地缓存查找有没有域名缓存,如果没有,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后:

    (4步描述)
    (1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;
    (2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;
    (3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。
    (4)若没有找到,则返回错误信息。

    4,Dns的分类

    主DNS服务器:就是一台存储着原始资料的DNS服务器。
    从DNS服务器:使用自动更新方式从主DNS服务器同步数据的DNS服务器。也成辅助DNS服务器。
    缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。
    转发器:这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。

     

     

    转载自博客:https://www.cnblogs.com/leo001/articles/10508304.html

    https://blog.51cto.com/starli/1673750

    一定要查看上面的这文章超级经典呀

    DNS(domain name system):域名系统。

    现代主机通讯的过程如下:

    wKioL1WjIIeSsEXMAACy7jmLPbY690.jpg

        1、首先应用层的把数据封装一个应用层首部交给传输层;

        2、传输层接收到上层数据后在后面封装一个传输层首部交给网络层;(源端口和目的端口)

        3、网络层接收到上层数据后在后面封装一个网络层首部交个数据链路层;(源IP和目标IP)

        4、数据链路层收到上层数据后在后面封装一个数据链路层首部交给物理层;(源MAC和目标MAC)

        5、物理层收到上层数据后把上层数据转换成二进制放到传输介质上进行传输,传输过程会经过交换机、路由、防火墙到达目的地。

        6、数据到达目标主机后,目标主机会反向拆封发送主机发过来的数据包,从而得到发送方应用程序发过来的数据。

              

        在上面数据封装的时候。传输层的端口号在封装时会从本地的1024以上的未用的端口中随机选一个作为源端口,目的端口通常是默认的,也可以让用户指定。数据链路层的MAC地址通常是通过ARP广播得到。           

        那么现在就有一个问题, 网络层的IP地址怎么指定呢?     

        通常情况下都是用户直接指定的,第二种情况是在在程序中指定。
        在程序中指定的话那就简单了,直接在程序中写入即可。如果是用户指定的话那就麻烦了,使用的用户就得一个一个去记想要访问的主机的IP地址,然而现在的互联网上有成千上万台主机,如果想让每个用户都记住每台主机的IP地址和它所提供的功能,那几乎是一件不可能完成的事情。但是如果让用户记名字呢?比如说

    www.baidu.com这个名字,人们一看到这个名字就知道是百度公司的搜索引擎。

           

        基于上面的原因DNS服务就诞生了。DNS服务是现代互联网上的网络基础服务——域名解析服务,它能够完成主机名到IP地址的映射。当用户需要访问百度时,只需要在本地配置号DNS,然后在浏览器中输入www.baidu.com这个名称即可访问。

        早期的互联网上的主机数量不是很多,因此那时候主机是互联网上的主机的主机名和IP地址的对应关系写在本地的/etc/hosts文件中。当用户想基于主机名跟别的主机通讯时,只需要用户输入主机的主机名,计算机会自动根据主机名在/etc/hosts文件中查找与之对应的IP地址,而后用这个IP地址跟主机通讯。由于后来的互联网的速度发展过快,主机数量成几何数增长,本地的/etc/hosts文件中所要记录的条目过多,每次想基于主机名通讯时,查找主机名对应的IP地址时的速度过慢。因此就出现了目前的DNS服务器的模型。

        下面我来介绍一下现在DNS服务器的模型。

    wKiom1WjUo-ykxtuAAEDGmLj3wk619.jpg

        1、最上面的 . 代表根域,是域名系统中最大的域名,他只负责直接处于其下面的域名,不负责其他的域。

        2、第二层的.com、.net、.cn、.us这些域名是顶级域,也称一级域。他也只负责直接处于其下面的域名,不负责其他的域,不知道处于其上面的父域的存在。且这些域都是独立的命名空间,意思就是在两个不同的一级域内,可以有两个名称相同的子域。

        3、第三层的.baidu、.movekj、.sina这些都是二级域,,也只负责直接处于其下面的域名,不负责其他的域,不知道处于其上面的父域的存在。且这些域都是独立的命名空间,意思就是在两个不同的一级域内,可以有两个相同名称的子域。在每个二级域的下面也可以分其他的子域,在其子域下面还可以分其他的子域......。

        ps:上面的每一个域内都有专门的DNS服务器,这些服务器负责接收并响应本域内的主机名的名称解析请求,且每台服务器上都存有本域主机的主机名和其IP地址对应关系的解析库。

                    

        基于上面的DNS模型的,DNS客户端在基于DNS服务器做www.baidu.com这个主机名的名称解析的步骤如下:(客户端在网络配置中配置DNS服务器的IP地址)

    wKiom1WjY1XCA2C4AADofsEMWwo820.jpg

        1、DNS客户端把www.baidu.com这个主机名的名解析请求发送给DNS服务器,

        2、DNS服务器接收到客户端的查询请求后,判断该请求的主机名的.baidu.com这个域是不是本机负责的,如果是则该服务器直接返回解析结果给DNS客户端;否则该服务器会把该请求转发给根域。

        3、根域的DNS服务器收到请求后,则根据请求的主机名的顶级域名.com返回.com顶级域的DNS服务器的IP地址给发起该请求的DNS服务器;

        4、DNS服务器收到结果后,会根据结果中的.com域的DNS服务器的IP,把请求发送给.com域的DNS服务器;

        5、.com域的DNS服务器收到请求后,则根据请求的主机名的二级域.baidu.com返回.baidu.com二级域名的DNS服务器的IP地址给发起该请求的DNS服务器;

        6、 DNS服务器收到结果后,会根据结果中的.baidu.com域的DNS服务器的IP,把请求发送给.baidu.com域的DNS服务器;

        7、.baidu.com域的DNS服务器收到请求后,则会判断本域有没有叫www.baidu.com主机名的主机,如果有,则返回www.baidu.com主机名的IP地址给发起该请求的DNS服务器,若没有,则返回给发起该请求的DNS服务器一个否定答案。

        8、DNS服务器得到结果后就把结果回应给DNS客户端。   DNS客户端得到结果后,如果结果是否定答案,就把否定答案缓存在本地。否则,就会根据结果中的IP地址请求相关服务。

        PS:在上面的过程中,DNS客户端把请求发送给DNS服务器这个过程称之为递归查询,DNS服务器到其他DNS服务器帮DNS客户端查询请求的过程称之为迭代查询。

        

        DNS服务器类型:在DNS服务器中,根据DNS服务器所完成的功能不同,分为不同的类型。类型主要有以下几种:

        缓存DNS服务器:不负责任何域的解析请求,负责接收本地DNS客户端的请求,并转发请求,且缓存解析到的结果。

        主DNS服务器:负责一个域或多个域内的主机名解析请求,且负责接收本地DNS客户端的请求,并转发请求。且缓存解析外部域的主机名到的结果。

        辅助DNS服务器:负责一个域或多个域内的主机名解析请求,且负责接收本地DNS客户端的请求,并转发请求。且缓存解析外部域的主机名到的结果。

        转发器:不负责任何域的解析请求,负责接收本地DNS客户端的请求,并转发请求,但不缓存解析到的结果。

      

        现代的互联网中,很多的DNS服务器都是使用bind这个软件来提供DNS主机名解析服务。配置bind的时候主要需要配置/etc/named.conf配置文件,而后给每个区域创建区域配置文件。在每个区域配置文件中常用的有以下几种资源记录类型:

        通用格式:

        name  [ttl]  IN  RRT  value

        name:资源记录名称

        ttl:资源记录缓存时长(可以省略)

        RRT(resouce record type):资源记录类型

        vlaue:该条资源记录的值

       

        资源记录类型

        SOA(起始授权记录):定义了该区域谁是主DNS服务器、管理员邮箱地址、否定答案的缓存时间,且定义了该区域中的主从DNS服务器直接的数据如何同步。

        NS(域名服务器记录):定义了该区域内的DNS服务器,可以有多条。(需要有正向解析记录)

        MX(邮件服务器记录):定义了该区域内的邮件服务器,可以有多条。(需要有正向解析记录)

        A(正向解析记录):定义了该区域内的主机的主机名与IP地址的对应关系,可以有多条。

        PTR(反向解析记录):定义了该区域内的主机的IP地址与I主机名的对应关系,可以有多条。

     

    不清楚的可以看视频https://www.bilibili.com/video/BV1JK411p7uz?from=search&seid=7067158527552001084

     接下来修改配置文件

    安装之后整个配置文件的目录如下

    一、dns介绍
    DNS(Domain Name System)域名系统,在TCP/IP网络中有非常重要的地位,能够提供域名与IP地址的解析服务。

    DNS是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS划分了域名空间,所以各机构可以使用自己的域名创建DNS信息。

    注:DNS域名空间中,树的最大深度不得超过127层,树中每个节点最长可以存储63个字符。

    例如:www.baidu.com.注意最后有一点,平常我们访问时会省略掉,此域名共有四层,www baidu com . 共四层(.代表的是根域)

    二、域和域名
    DNS 树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。

    域名空间的每个域的名字,通过域名进行表示。

    域名:通常由一个完全合格域名(FQDN)标识。FQDN能准确表示出其相对DNS域树根的位置,也就是节点到DNS树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS域google来说,其完全正式域名(FQDN)

    例如,google为com域的子域,其表示方法为google.com,而www为google域中的子域,可以使用www.google.com表示。

    注意:通常,FQDN有严格的命名限制,长度不能超过256字节,只允许使用字符a-z,0-9,A-Z和减号(-)。点号(.)只允许在域名标志之间(例如“google.com”)或者FQDN的结尾使用域名不区分大小

    由最顶层到下层,可以分成:根域、顶级域、二级域、子域。

    Internet 域名空间的最顶层是根域(root),其记录着Internet的重要DNS信息,由Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet的各个组织。

    “.”全球有13个根(root)服务器 10台在美国 另外3台分别在英国、瑞士、日本

    DNS 根域下面是顶级域,也是由Internet域名注册授权机构管理。共有3种类型的顶级域。

    组织域:采用3个字符的代号,表示DNS域中所包含的组织的主要功能或活动。比如com为商业机构组织,edu为教育机构组织,gov为政府机构组织,mil为军事机构组织,net为网络机构组织,org为非营利机构组织,int为国际机构组织。

    地址域: 采用两个字符的国家或地区代号。如cn为中国,kr为韩国,us为美国。

    反向域: 这是个特殊域,名字为in-addr.arpap,用于将ip地址映射到名字(反向查询)。

    三、区(Zone)
    资源记录区是DNS名称空间的一部分,其包含了一组存储在DNS服务器上的资源记录。

    使用区的概念,DNS服务器回答关于了自己区中主机的查询,每个区都有自己的授权服务器。

    四、主域名服务器与辅助域名服务器
    当区的辅助服务器启动时,它与该区的主控服务器进行连接并启动一次区传输,区辅助服务器定期与区主空服务器通信,查看区数据是否改变。如果改变了,它就启动一次数据更新传输。

    个区必须有主服务器,另外每个区至少要有一台辅助服务器,否则如果该区的主服务器崩溃了,就无法解析该区的名称。

    辅助服务器优点:

    容错能力
    配置辅助服务器后,在该区主服务器崩溃的情况下,客户机仍能解析该区的名称。一般把区的主服务器和区的辅助服务器安装在不同的子网上,这样如果到一个子网的连接中断,DNS客户机还能直接查询另一个子网的名称服务器。

    减少广域链路的通信量
    如果某个区在远程有大量客户机,用户就可以在远程添加该区的辅助服务器,并把远程的客户机配置成先查询这些服务器,这样就能防止远程客户机通过慢速链路通信来进行DNS查询。

    减轻主服务器的负载
    辅助服务器能回答该区的查询,从而减少该区主服务器必须回答的查询数。

    DNS服务器 运行服务器程序的计算机,存储DNS数据库信息。DNS服务器会尝试解析客户机的查询请求。
    DNS缓存 DNS服务器在解析客户机请求时,如果本地没有该DNS信息,则可以会询问其他DNS服务器,当其他域名服务器返回查询结果时,该DNS服务器会将结果记录在本地的缓存中,成为DNS缓存。当下一次客户机提交相同请求时,DNS服务器能够直接使用缓存中的DNS信息进行解析。
    五、DNS查询 方式:递归查询和迭代查询
    递归查询。 一次沟通完。
    递归查询是一种DNS服务器的查询模式,在该模式下DNS服务器接受到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

    迭代查询
    DNS服务器另外一种查询方式为迭代查询,当客户及发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提交请求,依次循环直到返回查询的结果为止。

    总结:一般情况下,从PC客户端到本地DNS服务器是属于递归查询。而DNS服务器之间就是的交互查询就是迭代查询。

    六、正向解析与反向解析
    正向解析:正向解析是指域名到IP地址的解析过程。
    反向解析:反向解析是从IP地址到域名的解析过程。反向解析的作用为服务器的身份验证。
    七、DNS资源记录
    1.SOA资源记录

    每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA记录。

    SOA定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA记录。

    2. NS资源记录

    NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。每个区在区根处至少包含一 个NS记录。

    3. A资源记录

    地址(A)资源记录把FQDN映射到IP地址。因为有此记录,所以DNS服务器能解析FQDN域名对应的IP地址。

    4. PTR资源记录

    相对于A资源记录,指针(PTR)记录把IP地址映射到FQDN。用于反向查询,通过IP地址,找到域名。

    5. CNAME资源记录

    别名记录(CNAME)资源记录创建特定FQDN的别名。用户可以使用CNAME记录来隐藏用户网路的实现细节,使连接的 客户机无法知道真正的域名。

    例:ping百度时,解析到了百度的别名服务器。百度有个cname=www.a.shifen.com.的别名。

    6.MX资源记录

    邮件交换(MX)资源记录,为DNS域名指定邮件交换服务器。
    ————————————————
    版权声明:本文为CSDN博主「开开136」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/kaikai136412162/article/details/103808678

    https://blog.csdn.net/kaikai136412162/article/details/103808678

    1、在从服务器安装bind

    [root@centos6 ~]# yum install bind -y

    [root@centos6 ~]# cat /etc/named.conf

     上面xiaocai.com就是一个zone区域,是二级的zone区域,在该区域下可以解析mail.xiaocai.com等域名到ip地址

    接下来我们开始修改named.conf的配置文件

     ##改options中的listen-on那一行的 “127.0.0.1” 为 “any”,allow-query 中的“localhost” 为”any”,意思是接受其他主机的访问和查询,如下:

    这几个主要修改的文件:
    /etc/named.conf 主配置文件 服务器主要运行参数
    /etc/named.rfc1912.zones 区域文件,主要指定要解析哪个域名
    /var/named/xxx.xx 数据文件,用来正向和反向的解析

    接下来修改/etc/named.rfc1912.zones 区域文件,主要指定要解析哪个域名

     

     接下来创建/var/named/xiaocai.con.zone文件 数据文件,改文件本质上就是一个数据库用来记录域名和IP的关系,用来正向和反向的解析

     这里一定要注意xiaocai.com.zone的用户和用户组是root  named ,所以这里使用cp -a,cp -a 保留原文件属性的前提下复制文件

    整个文件修改内容如下

    上面的NS就是当前主DNS的服务器,服务器的地址为192.168.1.4

    常见的资源记录类型

    A :Address地址, IPv4

    AAAA:Address地址 IPv6

    NS :Name Server域名服务器

    SOA:Start of Authority 起始授权机构

    MX:Mail Exchanger 邮件交换

    CNAME:Canonical Name规范名

    PTR:Pointer 指针,即反向DNS系统,用于查询IP地址时给出相关的域名,即查询IP地址的PTR记录给出该IP指向的域名,在 Zone 文件中被设置;

    TXT:Text,网络名称系统的记录,可讲文字信息提供给网络意外的来源,其中有一个非常重要的功能就是当外部查询需要显示BIND的相关版本号时,可以指定 TXT查询,这个配置是默认的;谷歌会使用 TXT 记录来验证网站的拥有权以及确保电子邮件的安全;

    SRV:Service 记录,域名中用于指定服务器并提供服务的位置:主机好、端口号;一般在 Zone File 中被定义;

    CNAME

    CNAME-records ( Canonical name for an alias )是域名的别名。一个服务器的域名地址 nyc3.example.com 这个主机域名可能会提供不同的服务,比如说域名 nyc3.example.com 指向的主机即要去提供 web服务,也要提供 ftp 服务,那么这个时候就需要一个别名域名来指向原来的域名,这个时候就可以使用一个 A 记录来管理多个域名,为DNS后期修改配置提供方便。举个例子:

    我想要搭建一个博客网站后台为博客网页提供web服务,我想要节省我服务器搭建的成本开销,只想租用一个服务器并配置相关域名解析,我的博客网站现在提供的服务有评论,分享,登陆授权,注册,这个时候我需要同时在这个服务器上开通这些服务,一开始你的博客网站默默无闻,访问量以及下载量并不是那么大,这个时候你的服务器负载并不是那么严重;当你的访问量暴增的时候,这个时候就需要考虑到你的服务器的流量转发问题了~原始服务器的流量暴增已经让你的服务器性能急剧下降,你需要将原来的提供服务的服务器的相关模块提供一个内容分发模块 (CDN),这个CDN提供商要求你的域名做一个Pointer来指向他们为你提供的 DNS地址,这个时候你的 CName 就可以指向他们提供的域名,做到对DNS流量的分发,从而实现网站的流量负载均衡作用。

    NS (Name Server)

    域名服务器,NS,用于确定哪些服务器(注意不是单个服务器)为一个局域网传递DNS信息以及确定域名由哪个服务器进行解析。

    一般NS配置在 BIND9 中的 db 文件中进行配置,在 SOA 配置之后。NS记录 和 SOA记录是任何一个DNS区域都不能或缺的两条记录。

    在 BIND 的配置中,可以在 Zone 文件中指定多个 Name Server,一般来说 Name Server 需要搭配 SOA 进行配置;

    SOA( Start of Authority)

    SOA 又被称作 起始授权机构记录, 被标记成在众多NS记录中哪一台是主服务器。

    SOA 记录表示此域名的权威解析服务器地址,当要查询的域名在所有递归解析服务器没有域名的解析缓存时,会回源到请求此域名的SOA 记录,也叫做权威解析记录。

    SOA 作为所有区域文件的强制性记录,他必须是 ZONE 文件中的第一个记录。

    SRV (Service)

    SRV 记录是从 RFC2052 中对 SRV资源进行了定义。SRV 被用来记录服务器提供什么样的服务。

    SOA(起始授权记录):定义了该区域谁是主DNS服务器、管理员邮箱地址、否定答案的缓存时间,且定义了该区域中的主从DNS服务器直接的数据如何同步。

        NS(域名服务器记录):定义了该区域内的DNS服务器,可以有多条。(需要有正向解析记录)

        MX(邮件服务器记录):定义了该区域内的邮件服务器,可以有多条。(需要有正向解析记录)

        A(正向解析记录):定义了该区域内的主机的主机名与IP地址的对应关系,可以有多条。

        PTR(反向解析记录):定义了该区域内的主机的IP地址与I主机名的对应关系,可以有多条。

    按照上面我们就已经配置好了,接下来重启下systemctl start named

    五、重启named.server,测试域名解析

    [root@localhost named]#  systemctl restart named

    接下来我们在客户端进行测试

    通;
    vim /etc/resolv.conf
    将里面的nameserver后面的ip改为192.168.1.4
    保存退出!

     客户端

    直接改/etc.resolv.conf如果重启了就失效了,所以可以在
    vim /etc/sysconfig/network-scripts/ifcfg-em1文件的最后添加DNS1=192.168.1.4,如果已经存在DNS1了则只需要把后面的ip改成192.168.1.4即可。保存退出。

     

    修改之后一定要重启网络

     

    六、配置反向解析

    现在我们要通过ip查询域名,这里比如我们要查询172.16.15.5的IP对应的域名,这里zone要反写写成上面的15.16.175,具体对应哪个集群如5,在zone中指定,这里一定要注意

    https://www.cnblogs.com/saneri/p/8038070.html

     172.16.15.5的IP对应的域名 mail.xiaocao.com

     172.16.15.6的IP对应的域名 web.xiaocao.com

    重启下dns服务,在客户端进行测试

     相当的经典呀

  • 相关阅读:
    多项式多点求值和插值
    Java Dao设计模式
    (转)HTTP长连接和短连接
    JavaScript——this关键字
    JavaScript——Prototype详探
    JavaScript——特殊点总结
    JavaScript——正则表达式
    JavaScript——Window对象
    JavaScript——this、constructor、prototype
    JavaScript——事件模型
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/15033442.html
Copyright © 2011-2022 走看看