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

相关推荐

  • 26期全程班-第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。     # who | cut -d” ” -f 1 | sort -u   2、取出最后登录到当前系统的用户的相关信息。     # id `last …

    Linux干货 2017-02-18
  • 三次握手和四次挥手

    今天来聊一下事实标准协议TCP/IP中传输层里TCP协议中,主机与服务器建立连接时的三次握手,和断开连接时的四次挥手。 本博文分两部分介绍,    一:状态详解    二:三次握手和四次挥手状态介绍 这里总共涉及到十种状态,其实总共有十一种状态,接下来分别介绍一下它们; 一:状态详解 CLOSED:关闭—&…

    2017-09-01
  • 关于shell脚本基础编程第五篇

                  shellb编程基础第五篇              本章内容:数组 变量:存储单个元素的内存空间数组:存储多个元素的连续的内存空间…

    系统运维 2016-08-24
  • 什么是CA??

       数字证书认证机构(英语:Certificate Authority,缩写为CA),也称为电子商务认证中心、电子商务认证授权机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。 介绍     CA中心为每个使用公开密钥的用户发放一个…

    Linux干货 2017-07-17
  • mysql—MHA原理与实现

    MHA 一:简述MHA 1.1关于MHA MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automating master failover 功能。MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点成为新的master节点,在此期间,MHA会通过与其它从节点获取额外信息来避免一致性方…

    2016-11-27
  • Linux系统终端类型

    引言 终端(Terminal)也称终端设备,是计算机网络中处于网络最外围的设备,主要用于用户信息的输入以及处理结果的输出等。在早期计算机系统中,由于计算机主机昂贵,因此一个主机一般会配置多个终端,这些终端本身不具备计算能力,仅仅承担信息输入输出的工作,运算和处理均由主机来完成,在个人计算机时代,个人计算机可以运行称为终端仿真器的程序来模仿一个终端的工作。 &…

    Linux干货 2016-10-19