DNS基础及使用BIND搭建域名服务器

    本文主线是DNS服务相关概念和服务器搭建,在此之前了解一下域名这个东东很有其必要性,因为DNS服务就是应域名而生的。那么域名是什么哪?

    域名

    域名是用一串用点分开的字符串来表示的internet上的某一台或者一组计算机的名称,用于在数据传输时标识计算机的电子方位。举个例子来说,如果我们要去访问www.magedu.com这个站点,实际上是应该输入该网站的IP地址来访问的,但是由于无论是IPv4还是IPv6地址都相当的难以记忆,为此我们通过域名来对其进行管理,利用其见名知意的特性来方便我们记忆,而系统底层仍然是以IP地址来通信的,这种域名与IP地址之间的转换是由DNS服务来完成的。以www.magedu.com来说明一下域名的组成部分:

   blob.png

    类型:标记域名的类别(如 com, cn, edu, org, gov等)

     域名:如上面的magedu,

     主机名:标记一个域内的具体的主机

    DNS(Domain Name System)

    由上述可知,当我们访问internet上的网站时,我们输入的是域名,域名通过某种机制转为IP地址后再由系统底层完成IP之间的相互通讯,而这种能够完成域名与IP地址间的相互转换的机制就是DNS服务。DNS服务一般是由dns服务器来实现的,提供dns服务的服务器将域名和IP之间的相互映射信息以分布式数据库的形式存储起来,每一条映射记录称作一条资源记录,当用户(一般是客户端、应用程序等)利用域名访问互联网中的主机时,会向dns服务器提请域名解析请求,待dns服务器经查询对应的映射资源记录返回IP地址后,利用此IP方可与该主机进行通信,流程图如下:

    blob.png

    在linux中,域名的解析通常有两种方式:一种是hosts文件中的IP地址和域名的直接映射;一种是通过dns服务器来解析,同一个域名默认是先读取hosts文件来解析,如其中无此记录,再转向dns服务器请求解析,两种解析方式的优先级在/etc/nsswitch.conf中定义

     blob.png

     我们同样用www.magedu.com  来测试此处的优先级特性

     blob.png

     默认hosts文件中是没有对应的www.magedu.com 解析条目的,对其进行ping操作

     blob.png

     地址是域名对应的目的IP,在hosts文件中指定它的IP地址来测试

     blob.png

     blob.png

     看到了吧,ping操作的目的IP是我们指定的IP地址了。

     DNS资源记录

     DNS服务器中域名与IP地址相互转换的映射信息以文本形式存储在其区域解析中,每一行表示一对对应关系,称之为资源记录(RR Resource Record),每一条资源记录都包含域名、IP地址和其它属性信息。

     资源记录的基本属性信息:

         资源记录的格式

         [name]      [ttl]       IN        type         value

         name   资源记录引用的域对象名,可以是单台主机或者整个域,字段值: "."是根域 "@"是默认域,即当前域

         ttl    生存时间字段,以秒为单位定义该资源记录的信息存放在DNS缓存中的时间长度。此字段缺省采用SOA记录中的最小ttl值(即1小时)

         IN     固定关键字,不可缺省

         type   资源记录类型

                 1、A(host)          A记录,成为主机记录,DNS名称到IP地址的映射,用于正向解析。

                 2、AAAA(host)       采用IPv6地址主机记录

                 3、CNAME              别名记录,用于定义A记录的别名

                 4、MX(mail exchange)邮件交换器器记录,用于告知邮件服务器进程将邮件发往指定的另一台邮件服务器。

                 5、NS                 用于标识区域的DNS服务器,即负责此区域的权威名称服务器,一个区域可以有多条NS记录,也就是说一个区域可以有一台主dns服务器,一台或多台从dns服务器。

                 6、PTR                是IP地址到DNS名称的映射,用于反向解析。

                 7、SOA                用于一个区域的开始,SOA记录后的所有信息均是用于控制这个区域的,每个区域数据库文件必须包含一个SOA记录,并且必须是其第一条资源记录,用于标识DNS服务器管理的起始位置,SOA说明能解析这个区域的dns服务器哪个是主服务器。 

         value   用于指定与当前资源记录有关的数据,该字段的内容取决于字段类型

         blob.png        

     DNS的客户端查询工具

     在我们配置dns服务器或者客户端访问网络出现故障时,我们常常需要一些工具来查看dns服务的一些信息来排除故障,在Linux中有3中dns信息查询工具,我们来一一说明一下

      1、host 命令

        使用方法:

        host DOMAIN_NAME //host后面直接跟域名可以查询到域名对应的ip地址

       blob.png

       host -t TYPE NAME SERVER

          -t TYPE    //指定资源记录的类型

          NAME       //指定需要查询的资源记录的name字段内容

          SERVER     //指定用于解析该域名的DNS服务器

       blob.png

     2、nslookup 交互式DNS客户端查询命令

       用法:

       nslookup

       >server x.x.x.x      //指定用哪台DNS服务器来执行解析

       >set type={A|NS|MX}  //定义需要查询的资源记录的类型

       >NAME                //指定需要查询的资源记录的name字段内容

       blob.png

     3、dig 可以详细显示查询结果的命令

        用法:

        dig -t TYPE NAME @SEVER

           -t TYPE     //指定资源记录的类型

           NAME       //指定需要查询的资源记录的name字段内容

           SERVER     //指定用于解析该域名的DNS服务器

       blob.png

       dig -x NAME @SERVER

           -x //特指做反向解析

       blob.png

       dig功能扩展选项

          +trace      开启dns查询跟踪

          +notrace    关闭dns查询跟踪

          +recurse    开启dns递归查询

          +norecurse   关闭dns递归查询

       下面是dns查询跟踪示例 

       blob.png

       由上图可以看到,客户端发出查询请求后,请求信息离开192.168.1.1这个本地服务器后,依根域–>一级域–>二级域–>目的主机的方式来完成查询的,其实,此处用到了dns查询的两种方式迭代查询和递归查询,在客户端向本地dns请求查询过程式递归查询,而本地dns之后的则使用迭代查询。

       递归查询:

          客户端发出查询请求,本地dns接收到后将请求信息发往根与服务器,根域服务器收到请求信息后,将请求信息发往以及域服务器,以及域服务器收到请求信息后,将请求信息发往二级域服务器,二级收到请求信息后将最终结果发给一级域服务器,一级与服务器收到结果后将结果放给根域服务器,根域服务器收到结果后将结果发给本地dns服务器,本地dns服务器将结果发给客户端,完成查询操作。

       blob.png

       迭代查询:客户端发送查询请求给本地dns服务器,本地dns服务器收到请求将该请求发给根域服务器,根域服务器经查询后得到该请求对应的一级域服务器的IP地址,并将该地址发给本地dns服务器;本地dns服务器得到一级域服务器地址后,向一级域服务器发送查询请求,一级域服务器经查询后,将请求对应的二级域服务器的地址发送给本地dns服务器;本地dns服务器得到二级域服务器地址后,向二级域服务器发送查询请求,二级服务器将查询到的最终结果发送给本地dns服务器,本地dns服务器将其发给客户端,完成查询操作。

          blob.png

     DNS服务器搭建

     一、dns服务器的类型

        1、主DNS服务器(Primary DNS Server, Master)

          主DNS服务器存储着一个域的zone配置文件,所有的关于域配置与修改都在此服务器上进行。

        2、从DNS服务器(Secondary DNS Server,Slave)

          从DNS服务器主要为主DNS提供冗余和负载均衡用,其自身不能更改域内的管理性数据信息,也不能手动创建、修改、删除资源记录,只能从主DNS服务器同步拉取。

        3、缓存DNS服务器(Cache Only Server)

          不存储任何zone配置文件,不提供域名解析功能,仅仅依靠DNS缓存信息为客户端提供服务,通常用于加速站点访问速度和负载均衡

      二、配置主DNS服务器

        运行环境:

           CentOS 6.5

           VMware Workstation 10.0

           域名   nod.com

           ip地址:192.168.5.244

           主dns服务器ip地址 192.168.5.244           

       1、bind安装

         DNS服务一般是由DNS服务器软件来提供的,在众多DNS服务软件中bind是使用最广泛的软件,兼容于windows、linux、MAC OS等,该软件由ISC进行开发和维护的。bind服务名named,默认使用TCP和UDP协议,监听两者的53端口,rndc默认使用953端口。

         通过yum方式安装bind和bind-utils # yum -y install bind bind-utils 。bind-utils则是bind提供的一组管理工具,有dig,nslookup,host,nsupdate,用来进行域名解析查询和DNS调试工作。

         确认软件安装成功:

         blob.png

         查看安装bind生成的文件和路径信息

         blob.png

         blob.png

       2、配置named主配置文件     

         blob.png

       3、主配置文件修改完毕后就可以启动服务了

          执行 chkconfig named on,永久开机启动named服务

          执行 service named start启动named服务

         blob.png

         blob.png

         使用 ss -tunl查看服务端口是否被监听

         blob.png

       4、编辑/etc/named.rfc1912.zones配置文件,定义正向测试域。

         blob.png

         为nod.com域创建正向域解析文件nod.com.zone,区域解析库文件都存放于/var/named目录下以命名方式为“域名.zone”

         

         blob.png

         配置正向解析库文件之后,我们就可以尝试对DNS服务器进行测试了,在此之前为了保证服务正常启动,对主配置文件和区域文件做测试。

          blob.png

          为便于测试,关掉防火墙和selinux

          blob.png

          使用dig工具测试服务器是否可用

          blob.png

          A记录测试成功,解析结果为我们设置指定的ip地址,我们再测试一下MX记录

          blob.png

        5、MX记录测试也没有问题,下面我们再为其创建逆向解析库文件,测试逆向解析,首先在主配置文件声明逆向解析区域。

          blob.png

          为反向解析区域创建反向解析库文件

          blob.png

            由于默认named服务有named用户身份运行,因此修改逆向解析库文件的属组为named,权限改为640 

          blob.png

             使用service named configtest ,测试所有的配置文件和区域解析库文件

             blob.png 

             测试通过,进行反向解析测试

          blob.png

          逆向解析成功,至此,主dns服务器配置完成。 

          

         

         

     

    

    

         

    

      

 

       

 

原创文章,作者:Silently,如若转载,请注明出处:http://www.178linux.com/5085

(1)
SilentlySilently
上一篇 2015-06-11
下一篇 2015-06-11

相关推荐

  • 文件的查找命令 find 和 locate

    文件的查找命令 find 和 locate find 功能:实时查找工具,通过遍历指定路径完成文件查找 工作特点: •  查找速度略慢•  精确查找•  实时查找•  可能只搜索用户具备读取和执行权限的目录 语法:   find [OPTION]… [查找路径] [查找条件] [处理动作] 查找路径:指定具…

    Linux干货 2016-08-16
  • Linux命令小总结

                     随着对Linux学习的深入,Linux命令也越来越多的。虽然我们可以通过man等帮助查询我 忘记的命令,但写脚本本质是由命令有序的堆砌而运行的。下面让我来总结一番我们学习过的命令 &nb…

    2017-07-30
  • 磁盘和文件系统创建

    磁盘结构:主要是由盘体、控制电路、接口部件等组成。盘体里面封装了多个盘片的腔体;控制电路包含硬盘BIOS、主控芯片和硬件缓存等单元;接口部件包含电源、数据接口主从跳线等。读取硬盘数据时,主轴电机带动盘片旋转,副轴电机带动磁头臂将磁头放到相应的数据存放的柱面和磁道上,再由磁头读出相应扇区中的数据。(图1-1) 磁道(track):每个盘面被划分成了多个同心圆环…

    Linux干货 2016-02-14
  • php 设计模式-数据映射模式(应用程序与数据库交互模式)

    前面提到的设计模式大大提高了代码的可读性与可维护性。然而,在WEB应用设计与开发中一个基本的需求与挑战:数据库应用,这些设计模式都没有涉及到。数据映射模式使您能更好的组织你的应用程序与数据库进行交互。 下面我将用实际代码说明,如果一个表发生变动。我们要修改客户端代码就可以了。特别是游戏项目,需求经常可能会经常变动。修改表结构,可能引起大片代码的改动。 首先我…

    Linux干货 2015-04-07
  • mysql进阶至mysql备份基础及备份工具

    一、mysql备份、恢复基础 备份:存储的数据副本 还原:把副本应用到线上系统,仅能恢复至备份操作时刻的数据状态。 硬件上的冗余并不能有效恢复逻辑操作上的错误。 备份:数据备份、服务配置文件备份、系统环境备份。程序的运行依赖于一定的系统环境,仅提供数据本身并不能确保恢复数据之后系统可用,数据备份的目的在于确保系统出现不可预料的灾难事故之后能够快速恢复运行,降…

    2016-11-18
  • shell脚本编程基础(1)

    一.位置变量相关知识     1.位置变量定义:在脚本代码中调用通过命令行传递给脚本的的参数     2.位置变量种类:              &…

    Linux干货 2016-08-15