Linux DNS详解

Posted liuwentaolaji

tags:

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

 

       DNS是我们访问互联网必不可少的一样东西。DNS是Domain Name System的简称,主要作用就是将主机名解析成IP地址,在计算机网络当中我们都是通过IP地址来进行主机间的相互连通。DNS服务作为网络的一种基础架构,在网络中有举足轻重的地位。它担负着整个网络用户计算机的名称解析工作。没有正确的名称解析,服务器就无法识别各客户机。我们日常进行的浏览网页等上网活动,无一例外都在使用DNS服务。

 

一.简介

       DNS:域名服务,是一种组织成层次结构的计算机和网络服务命名系统,用于实现名称解析(hostname<-->IP)。DNS服务监听在主机的TCP/UDP的53号端口。

       说到这里,有一个问题:www.baidu.com 这是一个主机名还是域名?

       这是一个主机名哈,sina.com才是域名。

       通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。

       TLD(top level domain)

       组织域:.com, .org, .net, .cc

       国家域: .cn, .tw, .hk, .iq, .ir, .jp

       反向域: IP-->FQDN 将IP地址转换成主机名

       DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析:

       正向解析:根据主机名(域名)查找对应的IP地址。

       反向解析:根据IP地址查找对应的主机名(域名)。

 

二.DNS解析过程

技术分享图片

 

      (1)本地主机先查询本地后host文件看是否有www.baidu.com主机与IP的对应关系,如果有就直接返回,完成域名解析;

      (2)此时本机将向指定的dns server(假设NS1)发送查询请求,NS1在接收到来自客户端的请求后,会及时去查询NS1的缓存记录,查看是否有关baidu.com的解析记录,如果有直接返回给客户端;

      (3)此时NS1会主动向根域名服务器发起查询www.baidu.com的请求,但是根服务器只有.com的记录,所以就会告知我们没有www.baidu.com的记录,你可以去.com查询,并告知.com的地址;

      (4)此时NS1会根据服务器提供的地址向.com发起查询www.baidu.com的请求,但是.com只有baidu.com的记录,所以就会告知我们没有www.baidu.com的记录,你可以去baidu.com查询,并告知.com的地址;

      (5)接着NS1就向baidu.com发起www.baidu.com的查询请求,于是baidu.com就去查询本地的记录,找到了对应的IP地址,再将IP地址反馈给NS1;

      (6)NS1在收到结果后,会将结果存储在本地的DNS缓存中,如果下次有相同的解析请求时就可以快速响应,最后反馈给客户端完成解析。

        注:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是迭代查询。

      (1)递归查询:客户端得到结果要么成功,要么失败。(本地客户端和DNS服务直接交互,被请求的DNS服务器必须给出最终答案)

      (2)迭代查询:服务器以相关参考性应答返回本地DNS。(DNS服务与DNS服务交互,得到的是参考答案)

        总结:本地客户端向本地域名服务器查询请求时,查询类型为:一次递归,多次迭代。

 

三.资源记录

        1.资源记录类型

           FQDN-->IPv4: A (Address)

           FQDN-->IPv6: AAAA

           Domain-->DNS Server:NS (Name Server)

           Domain-->Master DNS: SOA (Start Of Authority), 起始授权记录(用于明确说明一个域内的主DNS服务器是哪个,必须是名称解析库中的第一条记录)

           FQDN-->FQDN: CNAME (Canonical Name)

           IP-->FQDN: PTR (pointer)

           Domain-->Mail Server: MX (Mail eXchanger), 有优先级:0-99,数字越小级别越高

         2.资源记录的格式

           name    [ttl]    class  type  value

           说明:

                   name(名字)]:      name字段表示该记录所描述的实体(通常是主机或者一个域)。如果几个连续的记录涉及同一个实体的话,那么则第一条之后可以省略,利用@来代替这个name字段。

                   [ttl]字段:TTL(time to live (存活时间)),默认字段以秒为单位指定时间长度,在指定的时间内,数据项可被缓存并且仍被认为是有效的。TTL必须位于该区域数据文件的第一行,默认可省

                   class:class指定网络类型:默认类型为IN,IN(指Internet)、HS(Hesiod:本地使用的目录服务)、CH(供域名服务器内部用来标示自己)

                   type:资源记录类型

                   value:  资源记录的值(具体解释见后面介绍)

 

四.资源记录格式详解

        1.SOA记录

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

          value: 有多部分组成

          (1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
          (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如
          linuxedu.magedu.com
          (3) 主从服务区域传输相关定义以及否定的答案的统一的TTL
          例如:
          magedu.com. 86400 IN SOA ns.magedu.com.
          nsadmin.magedu.com. (
          2015042201 ;序列号
          2H ;刷新时间
          10M ;重试时间
          1W ;过期时间
          1D ;否定答案的TTL值
          )

     2.NS记录

          name: 当前区域的名字
          value: 当前区域的某DNS服务器的名字,例如ns.magedu.com.
          注意:一个区域可以有多个NS记录
                例如:
                magedu.com. IN NS ns1.magedu.com.
                magedu.com. IN NS ns2.magedu.com.
         注意:
                (1) 相邻的两个资源记录的name相同时,后续的可省略 (2) 对NS记录而言,任何一个ns
                记录后面的服务器名字,都应该在后续有一个A记录

3.MX记录

         name: 当前区域的名字
         value: 当前区域的某邮件服务器(smtp服务器)的主机名
         一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的
         优先级;数字越小优先级越高
                   例如:
                   magedu.com. IN MX 10 mx1.magedu.com.
                   IN MX 20 mx2.magedu.com.
          注意:
                   (1) 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

4.A记录

          name: 某主机的FQDN,例如www.magedu.com.
          value: 主机名对应主机的IP地址
                  例如:
                   www.magedu.com. IN A 1.1.1.1
                   www.magedu.com. IN A 2.2.2.2
                   mx1.magedu.com. IN A 3.3.3.3
                   mx2.magedu.com. IN A 4.4.4.4
                   $GENERATE 1-254 HOST$ A 1.2.3.$
                   *.magedu.com. IN A 5.5.5.5
                    magedu.com. IN A 6.6.6.6
          避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址

 

以上是关于Linux DNS详解的主要内容,如果未能解决你的问题,请参考以下文章

07-Linux中DNS详解

Linux进阶:DNS详解

04-Linux中DNS详解

linux DNS详解

linux的DNS服务详解

Linux 下DNS详解