DNS服务简介

一、域名系统

1、域名系统概述

        域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。

        我们都知道,IP地址是由32位的二进制数字组成的。用户与因特网上某台主机通信时,显然不愿意使用很难记忆的长达32位的二进制主机地址。即使是点分十进制IP地址也并不太容易记忆。相反,大家愿意使用比较容易记忆的主机名字。但是,机器在处理IP数据报时,并不是使用域名而是使用IP地址。这是因为IP地址长度固定,而域名的长度不固定,机器处理起来比较困难。

        因为因特网规模很大,所以整个因特网只使用一个域名服务器是不可行的。因此,早在1983年因特网开始采用层次树状结构的命名方法,并使用分布式的域名系统DNS。并采用客户服务器方式。DNS使大多数名字都在本地解析(resolve),仅有少量解析需要在因特网上通信,因此DNS系统的效率很高。由于DNS是分布式系统,即使单个计算机除了故障,也不会妨碍整个DNS系统的正常运行。

        域名到IP地址的解析是由分布在因特网上的许多域名服务器程序共同完成的。域名服务器程序在专设的结点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器。

        域名到IP地址的解析过程的要点如下:当某一个应用需要把主机名解析为IP地址时,该应用进程就调用解析程序,并称为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用程序获得目的主机的IP地址后即可进行通信。

        若本地域名服务器不能回答该请求,则此域名服务器就暂时称为DNS的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。此过程在后面作进一步讨论。

 

2、因特网的域名结构

        由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。

        从语法上讲,每一个域名都是有标号(label)序列组成,而各标号之间用点(小数点)隔开。

        如下例子所示:

        

        这是中央电视台用于手法电子邮件的计算机的域名,它由三个标号组成,其中标号com是顶级域名,标号cctv是二级域名,标号mail是三级域名。

        DNS规定,域名中的标号都有英文和数字组成,每一个标号不超过63个字符(为了记忆方便,一般不会超过12个字符),也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的字符写在最右边。由多个标号组成的完整域名总共不超过255个字符。DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。

        域名只是逻辑概念,并不代表计算机所在的物理地点。据2006年12月统计,现在顶级域名TLD(Top Level Domain)已有265个,分为三大类:

        (1)国家顶级域名nTLD:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。

        (2)通用顶级域名gTLD:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。

        (3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。

                             

 

3、域名服务器

        如果采用上述的树状结构,每一个节点都采用一个域名服务器,这样会使得域名服务器的数量太多,使域名服务器系统的运行效率降低。所以在DNS中,采用划分区的方法来解决。

        一个服务器所负责管辖(或有权限)的范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机到域名IP地址的映射。总之,DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区是DNS服务器实际管辖的范围。区 <= 域。

        下图是区的不同划分方法的举例。假定abc公司有下属部门x和y,部门x下面有分三个分布们u,v,w,而y下面还有下属部门t。图a表示abc公司只设一个区abc.com。这是,区abc.com和域abc.com指的是同一件事。但图b表示abc公司划分为两个区:abc.com和y.abc.com。这两个区都隶属于域abc.com,都各设置了相应的权限域名服务器。不难看出,区是域的子集。

                           

        下图是以上图b中abc公司划分的两个区为例,给出了DNS域名服务器树状结构图。这种DNS域名服务器树状结构图可以更准确地反映出DNS的分布式结构。图中的每一个域名服务器都能够部分域名到IP地址的解析。当某个DNS服务器不能进行域名到IP地址的转换时,它就会设法找因特网上别的域名服务器进行解析。

        从下图可以看出,因特网上的DNS服务器也是按照层次安排的。每一个域名服务器只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为下面四种不同的类型。

 

根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。所以根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。需要注意的是,在很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

 

顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。

 

权限域名服务器:负责一个“区”的域名服务器。

 

本地域名服务器:本地服务器不属于下图的域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。

                       

4、域名的解析过程

注意:

        一、主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

       二、本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。

        下图给出了这两种查询的差别

                

        下面举一个例子演示整个查询过程:

        假定域名为m.xyz.com的主机想知道另一个主机y.abc.com的IP地址。例如,主机m.xyz.com打算发送邮件给y.abc.com。这时就必须知道主机y.abc.com的IP地址。下面是上图a的几个查询步骤:

        1、主机m.abc.com先向本地服务器dns.xyz.com进行递归查询。

        2、本地服务器采用迭代查询。它先向一个根域名服务器查询。

        3、根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。

        4、本地域名服务器向顶级域名服务器dns.com进行查询。

        5、顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。

        6、本地域名服务器向权限域名服务器dns.abc.com进行查询。

        7、权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。

        8、本地域名服务器最后把查询结果告诉m.xyz.com。

        整个查询过程共用到了8个UDP报文。

        为了提高DNS查询效率,并减轻服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

        例如,在上面的查询过程中,如果在m.xyz.com的主机上不久前已经有用户查询过y.abc.com的IP地址,那么本地域名服务器就不必向根域名服务器重新查询y.abc.com的IP地址,而是直接把告诉缓存中存放的上次查询结果(即y.abc.com的IP地址)告诉用户。

        由于名字到地址的绑定并不经常改变,为保持告诉缓存中的内容正确,域名服务器应为每项内容设置计时器并处理超过合理时间的项(例如每个项目两天)。当域名服务器已从缓存中删去某项信息后又被请求查询该项信息,就必须重新到授权管理该项的域名服务器绑定信息。当权限服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名解析的正确性。

        不仅在本地域名服务器中需要高速缓存,在主机中也需要。许多主机在启动时从本地服务器下载名字和地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到名字时才使用域名服务器。维护本地域名服务器数据库的主机应当定期地检查域名服务器以获取新的映射信息,而且主机必须从缓存中删除无效的项。由于域名改动并不频繁,大多数网点不需花精力就能维护数据库的一致性。

 

DNS(Domain Name Service)是域名解析服务。由于网络中IP地址众多而很难记住提供服务主机(比如web服务)的IP,所以使用人们更容易记住的字符串名来代替IP,但是主机间通信要依靠IP地址。所以为了解决这种矛盾,我们使用域名解析服务这个中间层。使得主机名和IP能够一一对应起来;

 

    1、DNS服务器工作原理。

    2、DNS配置文件介绍(重点说一下安全控制选项)。

    3、正向解析区域文件配置、反向解析区域文件配置。

    4、主、从DNS服务器构建。

 

一、DNS服务器工作原理

  在介绍DNS服务器工作原理之前我们先来了解几个DNS相关的概念:

    1、FQDN:Full Qualified Domain Name,完全限定域名,即每个域在全球网络都是唯一的;

    另外值得提到的一点是域并不是指诸如www.google.com这样的域名,而google.com才是

    域;

    2、的分类

     (1)根域:标识为 . ,全球13组根域名服务器以英文字母A到M依序命名,域名格式

    为“字母.root-servers.net”。其中有11个是以任播技术在全球多个地点设立镜像站。比如中

    国大陆在北京有两台编号为L的镜像,编号为F、I、J的镜像各一台,共5台;香港有编号为D、J

    的镜像各2台,编号为A、F、I、L的镜像各一台,共8台;台湾则有编号为F、I、J各一台,共3

    台。

     (2)顶级域:顶级域(Top Level Domain,简称TLD)分为三类

        1> 通用顶级域:诸如 .com(商业机构) .org(非营利性组织) .net(网络服务机构)等

         2> 国家顶级域:诸如 .cn(中国) .uk(英国) .us(美国) .jp(小日本)

        3> 反向域(基础建设顶级域):.arpa,即从IP到FQDN的反向解析

    3、DNS服务器查询的类型:

     (1)递归:客户端仅发出一次请求,让DNS服务器去查询返回结果;

     (2)迭代:要发出多次请求去分别查询不同的DNS服务器;

    4、DNS名称解析方式:

     (1)正向解析:即将FQDN转化为IP。

     (2)反向解析:即将IP转化为FQDN。

    5、DNS服务器类型

     (1)主DNS服务器:负责解析至少一个域。

     (2)辅助(从)DNS服务器:负责解析至少一个,是主DNS服务器的辅助。

     (3)缓存DNS服务器:不负责解析域,只是缓存域名解析结果。

    6、DNS返回的结果类型

     (1)肯定答案:查询的域存在,会被缓存下来。

     (2)否定答案:不存在查询的域名,因此不存在与其查询的域名对应的IP;会被缓存下来。

     (3)权威答案:所查询的域名的结果是由负责解析这个域的DNS服务器所返回的答案。

     (4)非权威答案:在缓存中查询的结果。

    7、DNS的监听端口:tcp的53号端口,udp的53号端口。

 

  DNS工作原理(以查询www.google.com为例)

    技术分享

 

    

    在上图过程中本地域名服务器完成的就是迭代的过程,本地域名服务器先去找根域名服务器,根域名服务器告诉它去找.com顶级域名服务器,而后本地服务器又去询问.com域名服务器,.com域名服务器告诉他去找google.com域名服务器,google.com域名服务器正是负责解析www.google.com这个域名的服务器,返回权威答案给本地域名服务器。

    客户端即是递归去查询,仅发出一次解析www.google.com域名的请求给本地服务器,剩下的事情就是等待答案。

 

二、DNS(bind)配置文件介绍

  1、DNS在linux主机上主要的实现程序是bind,此程序的配置文件为:

    (1)主配置文件:/etc/named.conf,在主配置文件中可能包含诸如

/etc/named.iscdlv.key

/etc/named.rfc1912.zones

/etc/named.root.key

    (2)区域配置文件:/var/named/目录下一般名字为ZONE_NAME.zone的文件

     注意: 1> 一台DNS服务器可同时为多个区域提供解析;

   2>  必须要有根区域解析库文件:/var/named/named.ca;

   3> 两个区域解析文件:localhost和127.0.0.1的正反向解析库;

正向解析:/var/named/named.localhost

反向解析:/var/named/named.loopback

  2、主配置文件格式介绍:

    (1)全局配置段:

options{....}

    (2)日志配置段:

logging{....}

    (3)区域配置段:

zone{.....}

那些由本机负责解析的区域或转发的区域

    注意:每个配置语句必须以分号结尾;

/
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
	listen-on port 53 { 172.16.25.71; };    ----> 设定监听端口及主机
	listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";    -----> 设定区域文件目录
	dump-file 	"/var/named/data/cache_dump.db";    -----> 设定缓存数据库文件
	statistics-file "/var/named/data/named_stats.txt";    -----> 设定状态信息文件
	memstatistics-file "/var/named/data/named_mem_stats.txt";
//	allow-query     { localhost; };    ------> 允许查询主机列表设置

	/* 
	 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
	 - If you are building a RECURSIVE (caching) DNS server, you need to enable 
	   recursion. 
	 - If your recursive DNS server has a public IP address, you MUST enable access 
	   control to limit queries to your legitimate users. Failing to do so will
	   cause your server to become part of large scale DNS amplification 
	   attacks. Implementing BCP38 within your network would greatly
	   reduce such attack surface 
	*/
	recursion yes;    ------> 是否允许递归

	dnssec-enable no;
	dnssec-validation no;
	dnssec-lookaside no;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";

	pid-file "/run/named/named.pid";
	session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {                -----> 设定根域和根域文件
	type hint;
	file "named.ca";
};

include "/etc/named.rfc1912.zones";   ----> 包含其他辅助配置文件,可在此文件定义其他的域
include "/etc/named.root.key";

(4)bind的安全相关的配置

   1> 在option段的访问控制指令有:

    1、allow-query { }; 允许查询此DNS服务器的主机列表;白名单
    2、allow-transfer { }; 允许向哪些主机做区域传送;默认为向所有主机,应当配置为仅允许从

               服务器。

    3、allow-recursion { }; 允许哪些主机向当前DNS服务器主机发起递归查询请求。

    4、allow-update { }; 允许那些主机动态更新数据库文件中内容。

  2>  定义acl段

    acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集合内

    的所有主机实现统一调用

   格式:  

    acl acl_name{

    ip;

    net/prefix

    }

   例如:

 acl mynet{

   172.16.0.0/16;

   127.0.0.0/8;

   192.168.1.231;

  };

bind有四个内置的acl

none:没有一个主机

any:任意主机

local:本机

localnet:本机所在的IP所属的网络

    另外建议关闭dnssec

dnssec-enable no;

dnssec-validation no;

dnssec-lookaside no;

 

  3、区域配置文件将会在DNS服务器的配置中解释给出配置方式。

 

三、正向解析区域文件配置、反向解析区域文件配置

1、在配置正想解析区域文件和反向区域文件之前我先来介绍一下区域文件中定义的资源记录

资源记录:Resource Record, 简称rr;

记录类型有:A, AAAA, PTR, SOA, NS, CNAME, MX

1> SOA:Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;

2> NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主NS;

3> A: Address, 地址记录,FQDN --> IPv4;

4> AAAA:地址记录, FQDN --> IPv6;

5> CNAME:Canonical Name,别名记录;

6> PTR:Pointer,IP --> FQDN

7> MX:Mail eXchanger,邮件交换器;

 优先级:0-99,数字越小优先级越高;

 

资源记录的定义格式:

 语法:name   [TTL]  IN RR_TYPE  value

 

SOA:

    name: 当前区域的名字;例如”mageud.com.”,或者“2.3.4.in-addr.arpa.”;

     value:由多部分组成

1) 当前区域的区域名称(也可以使用主DNS服务器名称);

2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;

3) (主从服务协调属性的定义以及否定答案的TTL)

例如:

flyalways.com. 	86400 	IN 	SOA 	flyalways.com. 	admin.flyalways.com. (
		2016010801	; 序列号
		2H 		; 刷新时间间隔
		10M 		; 重试时间时长
		1W	        ; 过期时间
		1D	        ; 否定答案生存时长 
		)	

序列号:指的是这个区域文件的序列号,每改变一次需要更改+1,一般这个序列号不超过10位。

刷新时间间隔:刷新时间到期时会比较序列号,来判断是否主从DNS服务器同步。

重试时间时长:辅助服务器的等待重新传送的时间,一般重试时间小于刷新时间;

过期时间:辅助服务器会不断尝试完成区域传送,当过了过期时长还没有完成区域传送,认为主DNS服务器已坏。

否定答案的生存时长:否定答案会被缓存,缓存中存在的时长。

NS:

    name: 当前区域的区域名称

value:当前区域的某DNS服务器的名字,例如ns.flyalway.com.;

注意:一个区域可以有多个ns记录; 

例如:

flyalways.com. 	86400 	IN 	NS  	ns1.flyalway.com.
flyalways.com. 	86400 	IN 	NS  	ns2.flyalway.com.

MX:

name: 当前区域的区域名称

value:当前区域某邮件交换器的主机名;

注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;

例如:

flyalways.com. 		IN 	MX 	10  	mx1.flyalway.com.
flyalway.com. 		IN 	MX 	20  	mx2.flyalway.com.

 

A:

    name:某FQDN,例如www.magedu.com.

value:某IPv4地址;

例如:

www.flyalway.com.		IN 	A	1.1.1.1
www.flyalway.com.		IN 	A	1.1.1.2
bbs.flyalway.com.		IN 	A	1.1.1.1

 

AAAA:

name:FQDN

value: IPv6

 

PTR:

name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4(ip)的记录应该写

       为4.3.2.1.in-addr.arpa.;

value:FQND

例如:

4.3.2.1.in-addr.arpa.  	IN  PTR	www.flyalway.com.

 

CNAME:

name:FQDN格式的别名;

value:FQDN格式的正式名字;

 

例如:

web.flyalway.com.  	IN  	CNAME  www.flyalway.com.

    

注意:

    (1) TTL可以从全局继承;例如可以写$TTL 3600

(2) @表示当前区域的名称;会从主配置文件中集成ZONE_NAME

(3) 相邻的两条记录其name相同时,后面的可省略;

(4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;

 

2、配置一个正向解析的区域文件

(1)定义区域

    在主配置文件或者主配置文件的辅助配置文件中实现

     zone "ZONE_NAME" IN {

      type {master|slave|hint|forward};

      file "ZONE_NAME.zone";

      };

~]# vim /etc/named.rfc1912.zones 
~]# cat /etc/named.rfc1912.zones    -----> 截取在此文件写入的域的部分显示
zone "flyalways.com" IN {    
	type master;
	file "flyalways.com.zone";
};

(2)建立区域数据库文件(主要记录为A或者AAAA记录)

    在/var/named下建立区域数据文件ZONE_NAME.zone。

   注意:此文件权限更改为640,属主和属组更改为root和named

[root@COS7 ~]# touch /var/named/flyalways.com.zone
[root@COS7 ~]# vim /var/named/flyalways.com.zone    ----> 写入此文件内容如下
[root@COS7 ~]# cat /var/named/flyalways.com.zone
$TTL 3600
$ORIGIN flyalways.com.
@	IN	SOA	dns.flyalways.com.	dnsadmin.flyalways.com. (
	2016011001
	1H
	10M
	3D
	1D )
	IN	NS	dns
	IN 	MX   10 mx1
	IN	MX   20 mx2
dns	IN	A	172.16.25.71
mx1	IN	A	172.16.25.72
mx2	IN	A	172.16.25.73
www	IN	A	172.16.25.74
web	IN	A	172.16.25.75	
[root@COS7 ~]# ll /var/named/flyalways.com.zone
-rw-r--r--. 1 root root 273 1月  10 16:50 /var/named/flyalways.com.zone
[root@COS7 ~]# chgrp named /var/named/flyalways.com.zone
[root@COS7 ~]# chmod o= /var/named/flyalways.com.zone
[root@COS7 ~]# ll /var/named/flyalways.com.zone
-rw-r-----. 1 root named 273 1月  10 16:50 /var/named/flyalways.com.zone

(3)检查语法错误

    named-checkconf

    named-checkzone ZONE_NAME ZONE_FILE

[root@COS7 ~]# named-checkconf 
[root@COS7 ~]# named-checkzone flyalways.com /var/named/flyalways.com.zone 
zone flyalways.com/IN: loaded serial 2016011001
OK

(3)让服务器重载配置文件和区域数据文件

    rndc reload

    或者:systemctl reload named.service

[root@COS7 ~]# rndc reload
server reload successful

验证:

[root@COS7 ~]# dig -t A www.flyalways.com @172.16.25.71

; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -t A www.flyalways.com @172.16.25.71
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36732
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.flyalways.com.		IN	A

;; ANSWER SECTION:
www.flyalways.com.	3600	IN	A	172.16.25.74  ----> 权威答案 

;; AUTHORITY SECTION:
flyalways.com.		3600	IN	NS	dns.flyalways.com.

;; ADDITIONAL SECTION:
dns.flyalways.com.	3600	IN	A	172.16.25.71

;; Query time: 2 msec
;; SERVER: 172.16.25.71#53(172.16.25.71)
;; WHEN: 日 1月 10 16:54:54 CST 2016
;; MSG SIZE  rcvd: 96

3、配置反向解析的区域文件

(1)定义区域

    在主配置文件或者主配置文件的辅助配置文件中实现""

    zone "ZONE_NAME" IN {

    type {master|slave|hint|forward};

    file "反写的网段地址.in-addr.arpa";

    };

[root@COS7 ~]# vim /etc/named.rfc1912.zones 
[root@COS7 ~]# cat /etc/named.rfc1912.zones
zone "25.16.172.in-addr.arpa" IN {
	type master;
	file "172.25.16.zone";
};

 注意:反向区域名字一般为反写的网段地址.in-addr.arpa ,例如:100.16.172.in-addr.arpa

(2)定义区域解析库文件(主要记录为PTR)

  在/var/named下建立区域数据文件反写的网段地址.in-addr.arpa。

  注意:此文件权限要更改为640,属主和属组更改为root和named

[root@COS7 ~]# touch /var/named/172.25.16.zone
[root@COS7 ~]# vim /var/named/172.25.16.zone
[root@COS7 ~]# cat /var/named/172.16.25.zone
$TTL 3600
$ORIGIN 25.16.172.in-addr.arpa.
@       IN      SOA     dns.flyalways.com.  dnsadmin.flyalways.com. (
	2016011001
	1H
	10M
	3D
	12H )
	IN      NS      dns.flyalways.com.
71      IN      PTR     dns.flyalways.com.
72      IN      PTR     mx1.flyalways.com.
73      IN      PTR     mx2.flyalways.com.
74      IN      PTR     www.flyalways.com.
75      IN      PTR     web.flyalways.com.
[root@COS7 ~]# chgrp named /var/named/172.16.25.zone
[root@COS7 ~]# chmod o= /var/named/172.16.25.zone
[root@COS7 ~]# ll /var/named/172.16.25.zone
-rw-r-----. 1 root named 396 1月  10 17:16 /var/named/172.16.25.zone

(3)检查语法错误

    named-checkconf

    named-checkzone ZONE_NAME ZONE_FILE

[root@COS7 ~]# named-checkconf
[root@COS7 ~]# named-checkzone 25.16.172.in-addr.arpa /var/named/172.16.25.zone
zone 25.16.172.in-addr.arpa/IN: loaded serial 2016011001
OK

(3)让服务器重载配置文件和区域数据文件

    rndc reload

    或者:systemctl reload named.service

[root@COS7 ~]# rndc reload
server reload successful

验证:

[root@COS7 ~]# dig -x 172.16.25.74 @172.16.25.71

; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -x 172.16.25.74 @172.16.25.71
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 942
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;74.25.16.172.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
74.25.16.172.in-addr.arpa. 3600	IN	PTR     www.flyalways.com.   ----> 查出域名

;; AUTHORITY SECTION:
25.16.172.in-addr.arpa.	3600	IN	NS	dns.flyalways.com.

;; ADDITIONAL SECTION:
dns.flyalways.com.	3600	IN	A	172.16.25.71

;; Query time: 1 msec
;; SERVER: 172.16.25.71#53(172.16.25.71)
;; WHEN: 日 1月 10 17:39:09 CST 2016
;; MSG SIZE  rcvd: 119

 

四、主、从DNS服务器配置

  假设我们以上配置的主机为主DNS服务器,在另一台主机配置从服务器。

  从服务器是区域级别的概念;所以是在zone定义的type为slave;所以可以互为主从,例如一个正向解析的DNS服务器A的从服务器是DNS服务器B。DNS服务器B是反向解析的主服务器,DNS服务器A是反向解析的从服务器;

(1)配置从DNS服务器方式

在从DNS服务器上

  1)定义区域:

    zone "ZONE_NAME" IN {

    type slave;

    file "slaves/ZONE_NAME.zone"; ----> slaves目录的属主是named,确保数据可以写入;

    masters {MASTER_IP;};

    };

   配置文件语法检查:named-checkconf

[root@COS6 ~]# vim /etc/named.rfc1912.zones 
[root@COS6 ~]# cat /etc/named.rfc1912.zones    ----> 截取部分
zone "flyalways.com" IN {
	type slave;
	file "slaves/flyalways.zone";
	masters {172.16.25.71;};
};
[root@COS6 ~]# named-checkconf

  (2) 重载配置

    rndc reload

[root@COS6 ~]# rndc reload
server reload successful

在主DNS服务器上

(1)确保区域数据文件中为每个从服务配置NS记录,并且在正向区域文件需要为每个从服务器的主机名配置一个A记录,且此后A后面的地址为真正的从服务器的IP。 

注意:时间要同步;ntpdate命令

主服务器的序列号每次修改都要更新!!!!

[root@COS7 ~]# vim /var/named/flyalways.com.zone
[root@COS7 ~]# cat /var/named/flyalways.com.zone 
$TTL 3600
$ORIGIN flyalways.com.
@	IN	SOA	dns.flyalways.com.	dnsadmin.flyalways.com. (
	2016011002                          -----> 修改序列号
	1H
	10M
	3D
	1D )
	IN	NS	dns
	IN	NS	dns2                -----> 添加从服务器的NS记录
	IN 	MX   10 mx1
	IN	MX   20 mx2
dns	IN	A	172.16.25.71
dns2	IN	A	172.16.25.67        -----> 指明从服务器的地址
mx1	IN	A	172.16.25.72
mx2	IN	A	172.16.25.73
www	IN	A	172.16.25.74
web	IN	A	172.16.25.75	 
[root@COS7 ~]# named-checkconf 
[root@COS7 ~]# named-checkzone flyalways.com /var/named/flyalways.com.zone 
zone flyalways.com/IN: loaded serial 2016011002            ----> 序列号已变
OK
[root@COS7 ~]# rndc reload
server reload successful

验证:

[root@COS7 ~]# systemctl status named.service -----> 截取部分
1月 10 18:18:11 COS7.1 named[3025]: zone flyalways.com/IN: sending notifies (serial 2016011002)
[root@COS6 ~]# dig -t A www.flyalways.com @172.16.25.67

; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -t A www.flyalways.com @172.16.25.67
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15735
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.flyalways.com.		IN	A

;; ANSWER SECTION:
www.flyalways.com.	3600	IN	A	172.16.25.74

;; AUTHORITY SECTION:
flyalways.com.		3600	IN	NS	dns.flyalways.com.
flyalways.com.		3600	IN	NS	dns2.flyalways.com.

;; ADDITIONAL SECTION:
dns.flyalways.com.	3600	IN	A	172.16.25.71
dns2.flyalways.com.	3600	IN	A	172.16.25.67

;; Query time: 0 msec
;; SERVER: 172.16.25.71#53(172.16.25.71)
;; WHEN: 日 1月 10 18:25:18 CST 2016
;; MSG SIZE  rcvd: 131

    另外值得提出的是,从服务器一般而言是为了和主DNS服务器一起做负载均衡的。一旦主DNS服务器失效,从DNS服务器也会停止提供服务。

posted @ 2018-03-22 16:21  忧伤的背影  阅读(605)  评论(0编辑  收藏  举报