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

相关推荐

  • 八大排序算法

    概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。     当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。    快速…

    Linux干货 2015-04-07
  • linux进程和计划任务

    内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、 安全功能等 进程管理:     系统优先级:数字越小,优先级越高    实时优先级: 99-0,值最大优先级最高    nice值:-20 到19 ,对应系统优先级100-139或99 Linux 内核:抢占式多任务  &nb…

    Linux干货 2017-03-23
  • 自制linux和编译内核

    自制linux:(1)  分区并创建文件系统  fdisk /dev/sdb分两个必要的分区  /dev/sdb1 对应/boot /dev/sdb2 对应根  /mkfs.ext4 /dev/sdb1mkfs.ext4 /dev/sdb2  挂载bootmkdir /mnt/boot 子目录必须为bootm…

    Linux干货 2017-04-02
  • shell脚本一键分区

    #!/bin/bash #实现硬盘自动分区助手 echo "当前所有分区:" echo `fdisk -l|grep "Disk /dev/[sh]d"|cut -d: -f1|awk '{print $2 &q…

    Linux干货 2016-07-26
  • 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。       首先用who命令列出当前系统上所有登陆用户,然后使用cut命令以空格为分隔符取出第一列,再使用sort排序并去除重复的行        …

    Linux干货 2017-01-18
  • inode的理解

    一、inode是什么 理解inode,要从文件储存说起。 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的&q…

    Linux干货 2017-01-16