DNS and Bind

========================================================================

概述:

   DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)DNS协议运行在UDP协议之上,使用端口号53。

========================================================================


相关知识

Sockets:在互联网上基于套接字协议的通信一般都遵循C/S法则;

  • Client:客户端,发起应用请求的程序;

  • Server:响应请求(提供服务)的程序;

  • LISTEN:Socket(ip:port)

传输层协议:TCP,UDP,SCTP

  • TCP:面向连接的协议,双方通信之前需要建立虚连接;

  • UDP:无连接的协议,双方无需通信之前事先建立虚连接;

DNS服务

 1.介绍

DNS:Domain Name Service 域名系统,是一个应用层协议

  • C/S架构,监听在 53/udp, 53/tcp(DNS服务在启动的时候会同时开启tcp和udp的53号端口

DNS作用:

  • 将主机名解析成IP地址的过程;

  • 解决了从域名(FQDN)到主机识别的IP地址之间的转换.

本地名称配置解析文件:/etc/hosts

wKioL1i6I0ewNCioAAAscmApatE436.png  

   

缺点:

  • 只能作用于本主机,而不能同步更新所有的主机使用,并且当hosts文件很庞大时很难管理,因此就必须有一个统一的组织去记录管理域名和ip的对应关系。

DNS结构

  • DNS是一个分布式、分层次的主机名管理架构通过配置DNS服务器地址,主机不需要知道对应的ip地址就能通过主机名的形式访问互联网;

  • DNS利用类似倒状树的目录结构将主机名的管理分配在不同层级的DNS服务器当中,经过分层管理,每一级DNS服务器负责部分域名信息,这也就减轻了DNS服务器的负载,同时也方便记录的更新同步。

FQDN(Full Qualified Domain Name):完整主机名

 2.DNS域名

域名划分:

根域

一级域名:Top Level Domain: tld(顶级域

  • 组织域:com, edu, mil, gov, net, org, int,

  • 国家域:.cn, .ca, .hk, .tw...

  • 反向域:

二级域名:

  • 如:.magedu.com、taobao.com

三级域名:

  • 如:.dns.magedu.com

说明:

  • 每一级只负责对应下级的域的管理,其中根节点是有分布在世界各地的13台服务器组成,其中10台位于美国,另外3台设置于英国、瑞典和日本。

  • ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理。

 域名层级结构图:

wKioL1fst5KzLEOOAAFt5oRIaeo143.png

  按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例:

     wKiom1fswOSxmLUsAAB0WqSj37A252.jpg



 3.DNS解析

解析流程:
    1.
在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
    2.如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存(每次通过TCP/IP指向的DNS服务器查询到的记录返回结果都会在本地数据库中缓存一份,是这种加速机制,有生存周期TTL),是否有这个网址映射关系,如果有,直接返回,完成域名解析。
   3.如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
    4.如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
    5.如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
    6.如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
说明:
   从客户端到本地DNS服务器是属于递归查询而DNS服务器之间就是的交互查询就是迭代查询

解析流程图如下:

wKiom1fswmCTs***AAD33oelEhU836.jpg


 4.DNS类型,解析方式

DNS查询类型

递归查询:

  • 客户机和本地DNS服务器之间的查询

迭代查询:

  • DNS服务器与DNS服务器之间的交互查询

DNS名称解析方式:

  • 名称--->IP :  正向解析

  • IP --->名称:反向解析

注意:

  • 正反向解析是两个不同的名称空间,是两棵不同的解析树,因此也不是同一个解析库。

域名购买

  • 通常我们申请注册的域名是顶级域下的一个二级域(.com)申请成功之后(如:magedu.com),域名商会免费给我们提供DNS解析服务(群租的一个DNS服务器),我们只需要通过其提供的接口(如:web页面)在管理后台添加主机记录即可。然而免费的东西和付费的服务总是不一样的,免费提供的服务不保证服务的可靠性,因此企业里面要想架设自己的DNS服务器,来提供更可靠、更丰富的功能,就需要向上级提出授权认证,更改DNS服务器的指向,从原来的群租转到自己的DNS服务器上,自己管理。但一般的小公司如果自己架设DNS服务器的话成本较高,所以一般都是代理商提供的。

DNS服务器的类型:

负责解析至少一个域:

  • 主DNS服务器:

  • 辅助DNS服务器

不负责域解析:

  • 缓存DNS服务器:转发器

一次完整地解析请求经历的过程

  • Client-->hosts文件-->Dns Local Cache-->DNS Server(recursion递归)-->

       自己负责解析的域:直接查询数据库并返回答案;

       不是自己负责的解析域:Server Cache-->iteration(迭代)--> 根--> 顶级域DNS-->二级域名DNS…

解析答案:

  • 肯定答案:

  • 否定答案:请求的条目不存在等原因导致无法返回结果;

  • 权威答案:由直接负责的DNS服务器返回的答案;

  • 非权威答案:

主-从DNS服务器:

主DNS服务器:

  • 维护所负责解析的域数据库的那台服务器;读写操作均可进行;

从DNS服务器:

  • 从主DNS服务器那里或其他的从DNS服务器那里“复制”解析库;但只能进行读操作(只能接受查询,不能接受修改);

复制操作的实施方式(主从同步的属性)

  • 序列号:解析库版本号,主服务器解析库变化时,其序列号递增;

  • 刷新时间间隔:从服务器每隔多久到主服务器检查序列号更新情况;

  • 重试时间间隔:从服务器请求同步失败时,再次发起尝试请求时间间隔;

  • 过期时长:从服务器联系不到主服务器时,多久后停止服务;

  • 否定答案的缓存时长(TTL):快取时间

  • “通知”机制:主服务器解析库发生变化时,会主动通知从服务器;

区域传送:

  • 全量传送:axfr,传递整个解析库;

  • 增量传送:ixfr,传递解析库变化的数据;

区域(zone)和域(domain)

baidu.com域:

  • FQDN-->IP:正向解析库;(正向区域:正向解析库和正向解析的功能的组合);

  • IP --->FQDN:反向解析库,反向区域

注意:

  • 一般来说一个域由正向区域和反向区域组成,但并不是域就一定大于区域,如:父域的区域可能会比子域要大;

  • 区域是物理概念,而域是逻辑概念。

DNS端口

  • DNS是一个网络服务,因此就有对应的端口,其端口是53号,通常DNS在查询的时候是以udp这个快速的数据传输协议来查询的,但是一旦没有办法查询到完整的信息时就会再次以TCP协议来进行重新查询,因此DNS服务在启动的时候会同时开启 tcp的53号端口 udp的53号端口

区域数据库文件

 1.资源记录(Resource Record)简称rr

区域解析库:由众多RR组成:

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

SOA:(Start Of Authority)

  • 起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须为解析库的第一条记录;

A:(internet Address)

  • 作用:FQDN --> IPv4;

AAAA:地址记录

  • 作用:FQDN --> IPv6;

PTR:PoinTeR)

  • 作用:IP --> FQDN;反解到的主机名;

NS:(Name Server)

  • 专用于标明当前区域的DNS服务器,一个区域解析库可以有多个NS记录(主从DNS服务器等);

CNAME:(Canonical Name)

  • 别名记录,一个主机可以有多个别名,但IP地址是一样的;

MX:

  • Mail exchanger,邮件交换器,有优先级,0-99,数字越小优先级越高;

 4.资源记录的格式及各资源类型详解

资源记录的定义格式:    

语法:

  • name    [TTL]   IN    RR_TYPE   value

每一种资源类型的定义方式如下:

SOA记录 

  • 起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须为解析库的第一条记录;

name:

  • 当前区域的名字。例如“magedu.com.”或者“2.3.4.in-addr.arpa.”

value:有多部分组成

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

    2)当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com

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

示例:

wKiom1i6NRSATuy8AABZANMzsEQ943.png

NS记录

  • 专用于标明当前区域的DNS服务器,一个区域解析库可以有多个NS记录(主从DNS服务器等);

name:当前区域的名字

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

示例:

wKiom1i6N7vD9L5xAAAXw2K3Q88743.png

注意:

  • 相邻的两个资源记录的name相同时,后续的可省略;

  • 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录

MX记录

  • 邮件交换器,有优先级,0-99,数字越小优先级越高;

name:当前区域的名字

value:当前区域的某邮件服务器(smtp服务器)的主机名

注意:

  • 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高;

  • 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

示例:

wKioL1i6OP7hChAfAAAIpsDN4Pw449.png

A记录

  • 作用:FQDN --> IPv4;

name:某主机的FQDN,例如www.magedu.com.

value:主机名对应主机的IPv4地址;

例如:

      www.magedu.com.  IN  A   1.1.1.1

      www.magedu.com.  IN  A   1.1.1.2

      mx1.magedu.com.   IN  A   1.1.1.1

      mx2.magedu.com.   IN  A   1.1.1.2

注意:

      *.magedu.com.  IN  A  5.5.5.5

        magedu.com.  IN  A  5.5.5.5

避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址。

AAAA记录

  • 作用:FQDN --> IPv6;

name:FQDN

value:IPv6

PTR记录 

name:IP

  • 有特定格式,把IP地址反过来写  如:1.2.3.4,要写作4.3.2.1;

  • 有特定后缀:in-addr.arpa.  如:完整写法为:4.3.2.1.in-addra.arpa.

value:FQDN

 例如:

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

        简写成:如1.2.3为网络地址,可省

                      4 IN  PTR  www.magedu.com.

 注意:网络地址及后缀可省略;主机地址依然需要反着写

CNAME记录

  • 别名记录,一个主机可以有多个别名,但IP地址是一样的;

name:FQDN格式的别名

value:FQDN格式的正式名字;

 例如:

        web.magedu.com.    IN      CNAME   www.magedu.com.

      (表示www的这个主机的别名为web)

注意:

  • TTL就是time to live,表示该记录被其他dns服务器保留到对方服务器上的缓存当中,并保持多少秒(即客户端可以缓存多长时间),可从全局继承;

  • IN:为关键字 ;

    @ :可用于引用当前区域的名字;

  • 相邻的两条记录其name相同时,后面的可以省略;

  • 同一个名字可以通过多条记录定义多个不同的值(即一个主机名有多个IP地址);此时DNS服务器会以轮询方式响应可以实现负载均衡;

  • 同一个值也可能有多个不同的定义名字(即一个IP地址多个主机名);通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机而已;

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

安装部署DNS服务

 1.bind的安装配置

BIND:Berkeley Internet Name Domain,ISC.org

  • dns:协议;

  • bind:dns协议的一种实现;

  • named:bind程序的运行的进程名;

相关程序包:

   查询方式:yum list all bind*

  • bind-libs:被bind和bind-utils包中的程序共同用到的库文件;

  • bind-utils:bind客户端程序集(工具组件),例如dig,host,nslookup等;

  • bind:提供的dns server程序、以及几个常用的测试程序;

  • bind-chroot:选装,让named运行于jall模式下;/var/named/chroot

bind服务器配置文件

服务脚本和名称:

  • /etc/rc.d/init.d/named,unbound.service

主配置文件:/etc/named.conf

 或包含进来其他文件:

  •  /etc/named.iscdlv.key

  •  /etc/named.rfc1912.zones

  •  /etc/named.root.key

解析库文件:

/var/named:

  • 该目录为DNS数据库文件存放目录,每一个域文件都存放在这里;

  • 一般名字为:/var/named/ZONE_NAME.ZONE

注意:

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

 2)必须要有根区域解析库文件:named.ca

 3)还应该有两个区域解析库文件:localhost 和 127.0.0.1 的正反向解析库;

  • 正向:named.localhost

  • 反向:named.loopbask

# 解析库文件
[root@centos7 ~]# ls /var/named
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

# 本地正向解析库文件
[root@centos7 ~]# cat /var/named/named.localhost  
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	@
	A	127.0.0.1
	AAAA	::1

# 本地反向解析库文件
[root@centos7 ~]# cat /var/named/named.loopback  
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	@
	A	127.0.0.1
	AAAA	::1
	PTR	localhost.

rndc:remote name domain controller

  • 默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程,因此仅允许本地使用;

  • 提供辅助性的管理功能;953/tcp(监听在953端口)

启动服务

bind程序安装完成之后,默认既可作为缓存名称服务器使用,如果没有专门负责解析的区域,直接即可启动服务;

  • CentOS 6:service named start

  • CentOS 7:systemctl start named.service

演示:

[root@centos7 ~]# yum info bind
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
可安装的软件包
名称    :bind
架构    :x86_64
时期       :32
版本    :9.9.4
发布    :37.el7
大小    :1.8 M
源    :bash
简介    : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
网址    :http://www.isc.org/products/BIND/
协议    : ISC
描述    : BIND (Berkeley Internet Name Domain) is an implementation of the DNS
         : (Domain Name System) protocols. BIND includes a DNS server (named),
         : which resolves host names to IP addresses; a resolver library
         : (routines for applications to use when interfacing with DNS); and
         : tools for verifying that the DNS server is operating properly.

 2.主配置文件格式:

主配置文件:

全局配置段:

  • options {...};

日志配置段:

  • logging {...};

区域配置段:本机能够为哪些zone进行解析,就要定义哪些zone;

  • zone {...};

注意:

  • 任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上;

  • 每个配置语句必须以分号结尾,否则语法错误;

缓存名称服务器的配置(初始化配置):

监听能与外部主机通信的地址;

listen-on port 53 { any; };

  • 监听的端口,即哪些主机可以进行访问解析,这里表示监听所有地址,后面有分号 ,花括号两边有空格;

listen-on port 53 { 192.168.16.104; };

  • 表示监听某一特定的地址;

学习使用时建议关闭dnssec

      dnssec-enable  no;

      dnssec-validation no;

      dnssec-lookaside no;

关闭仅允许本地查询

  • // allow-query     { localhost; };

配置文件语法检查

  • named-checkconf [/etc/named.conf]

演示:

bind 安装、初始化设置及启动

1.主配置文件初始化设置

# 安装 bind
[root@centos7 ~]# yum install bind -y

# 查看主配置文件
[root@centos7 ~]# cat /etc/named.conf  
//
// 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 { any; };  # 修改为监听本地的所有地址,注意以分号结尾,花括号两边有空格
	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.
	   attacks. Implementing BCP38 within your network would greatly
	   reduce such attack surface 
	*/    # 以上为多行注释
	recursion yes;

	dnssec-enable no;   # 学习使用时建议关闭dnssec
	dnssec-validation no; # 学习使用时建议关闭dnssec

	/* 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";

2.检查语法错误,启动服务,并查看状态:

# 检查语法错误
[root@centos7 ~]# named-checkconf  

# 开启服务
[root@centos7 ~]# systemctl start named

3.查看监听状态:

wKiom1fzaf7QVyrEAACzoq5Hiy0902.png


4.此时,我们可以把/etc/resolv.conf 配置文件中的DNS指向为本机的地址,即自己把自己当做DNS服务器,也可以在另一个客户端主机中配置DNS指向这台服务器,也可以正常访问

# 把地址换成自己的,也就是说自己把自己的当做DNS服务器
[root@centos7 ~]# vim /etc/resolv.conf 
  1 # Generated by NetworkManager
  2 nameserver 192.168.16.104  

# 可以正常 ping 通 (如果不能ping通,要检测防火墙设置,并要保证自己可以访问互联网)
[root@centos7 ~]# ping www.baidu.com   
PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data.
64 bytes from 220.181.111.188: icmp_seq=1 ttl=54 time=22.9 ms
64 bytes from 220.181.111.188: icmp_seq=2 ttl=54 time=25.5 ms
64 bytes from 220.181.111.188: icmp_seq=3 ttl=54 time=28.7 ms
64 bytes from 220.181.111.188: icmp_seq=4 ttl=54 time=22.9 ms

# 在另一台CentOS 6 主机修改 DNS 的指向,一样也可以访问


 3.测试DNS工具:dig,host,nslookup

dig命令

语法: 

  • dig [-t RR_TYPE] name [@SERVER] [query options]

 注意:

  • dig只用于测试dns系统,不会查询hosts文件进行解析

  • @:表示通过哪个DNS服务器,不写表示为通过本机

选项: 

  • +[no]trace:跟踪解析过程

  • +[no]recurse:进行递归解析

测试反向解析:

  • dig -x IP @SERVER

模拟完全区域传送:

  • dig -t axfr ZONE_NAME @SERVER

示例:

  • dig -t axfr magedu.com @172.16.100.11

  • dig –t axfr 100.16.172.in-addr.arpa @172.16.1.1

host命令

语法: 

  • host [-t type] name [SERVER_IP]

示例: 

  • host –t NS magedu.com @172.16.0.1

nslookup命令:

语法:

  • nslookup [-option] [name | -] [server]

交互式模式:

nslookup>

  • server IP:指明使用哪个DNS server进行查询;默认为/etc/resolv.conf中的

  • set q=RR_TYPE:指明查询的资源记录类型

  • NAME:要查询的名称

dig命令演示:

1.测试本机DNS能否正常查询

# 测试能否解析 
[root@centos7 ~]# dig -t A www.baidu.com  

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28923
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:  # 问题区段
;www.baidu.com.			IN	A

;; ANSWER SECTION: # 答案选项
www.baidu.com.		901	IN	CNAME	www.a.shifen.com.  # 一个别名
www.a.shifen.com.	300	IN	A	220.181.112.244
www.a.shifen.com.	300	IN	A	220.181.111.188

;; AUTHORITY SECTION: # 权威选项 ,这个别名对应了5台DNS服务器
a.shifen.com.		1200	IN	NS	ns1.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns2.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns5.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns4.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns3.a.shifen.com.

;; ADDITIONAL SECTION:  #附加选项 ,显示着5台服务器分别对应的地址
ns1.a.shifen.com.	1200	IN	A	61.135.165.224
ns2.a.shifen.com.	1200	IN	A	180.149.133.241
ns3.a.shifen.com.	1200	IN	A	61.135.162.215
ns4.a.shifen.com.	1200	IN	A	115.239.210.176
ns5.a.shifen.com.	1200	IN	A	119.75.222.17

;; Query time: 89 msec  # 查询指令时长,为89毫秒
;; SERVER: 192.168.16.104#53(192.168.16.104)  # 由哪个DNS服务器进行解析的,这里是由本机进行迭代的方式查询的
;; WHEN: Tue Oct 04 16:27:53 CST 2016
;; MSG SIZE  rcvd: 271

2.dig跟踪查询命令

[root@centos7 ~]# dig +trace -t A www.baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> +trace -t A    # 首先查找根节点服务器 
;; global options: +cmd
.			511977	IN	NS	i.root-servers.net.
.			511977	IN	NS	l.root-servers.net.
.			511977	IN	NS	m.root-servers.net.
.			511977	IN	NS	k.root-servers.net.
.			511977	IN	NS	f.root-servers.net.
.			511977	IN	NS	d.root-servers.net.
.			511977	IN	NS	a.root-servers.net.
;; Received 783 bytes from 192.168.16.104#53(192.168.16.104) in 31 ms

com.			172800	IN	NS	j.gtld-servers.net.  # 其次查找顶级域名
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	i.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	g.gtld-servers.net.
com.			86400	IN	DS	30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.			86400	IN	RRSIG	DS 8 1 86400 20161016170000 20161003160000 39291 . WmTN9517zn1fnhOz36UYC1CiDcRwvG+pYVO0wwU4ucOF0dQKgoCTVclv l1qxjuYDgl/XF3hj3lnSQZMQIpGzT48vnMVdJjBkGbySLgqtNjkoL/yO DtZGyY6jxbxYBchx7U6QDkgaC3AQ9o82uClTVPg8N+KFx3TuORDvB/CO sp2/5D0KSMS81/N+PEGemK/wmfHg9t48CGLx/T6+v1oPHP9oxq+vDtSG bRmsHFzrvatrrpttP6wMjNK4x9r07t/apPzKAQvxxzaeISsElpWe62+K zviR6hp7TxKrp4PmtNWul7jwNxvVkcLuzCdhjq44O9sU/bk4UzM+D6fq j4C+9A==
;; Received 865 bytes from 192.36.148.17#53(i.root-servers.net) in 200 ms

baidu.com.		172800	IN	NS	dns.baidu.com. # 再查找子域
baidu.com.		172800	IN	NS	ns2.baidu.com.
baidu.com.		172800	IN	NS	ns3.baidu.com.
baidu.com.		172800	IN	NS	ns4.baidu.com.
baidu.com.		172800	IN	NS	ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20161009044157 20161002033157 27452 com. M41sYMa1AlSgKf/CWelF3cJ4O2uGYGJEWlS1b8b2WlsMKCXnhK/rYlrb FAtAWNcgyzdspmEEZtRcZqLj4x4Oizr3zHPz2EM18IPuDsSdeIIHV70y gwEnInozpTeqk1A0u/fVVSDpfcurgcZcW9bGbu74cLlg9KZ+J2V//br1 +7w=
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN NSEC3 1 1 0 - HQ01H2D8Q0MT897NAE62MCFNM16HPMG6 NS DS RRSIG
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN RRSIG NSEC3 8 2 86400 20161011043201 20161004032201 27452 com. hRWUxUIPqALKCeNnKeycykf5L0ydbvwxF5pyCZ/aKpO6g2f2wSnOGPEI 0sgHxJ57t0nKIYwjnnODkyOAyFl6TJoxIO46jPCi8cEkz+f/jCKtUOdF gxoBdOBez+gQCQ9BlCaTzAg1mgJM00G+9kXcMcQN/4RcnVPhGv0oe6Xp c6E=
;; Received 697 bytes from 192.35.51.30#53(f.gtld-servers.net) in 240 ms

# 查找的主机
www.baidu.com.		1200	IN	CNAME	www.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns3.a.shifen.com. 
a.shifen.com.		1200	IN	NS	ns4.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns5.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns1.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns2.a.shifen.com.
;; Received 239 bytes from 220.181.38.10#53(ns4.baidu.com) in 26 ms

host命令演示:

# 查询IPv4地址资源记录 
[root@centos7 ~]# host -t A www.baidu.com 
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 61.135.169.125
www.a.shifen.com has address 61.135.169.121

# 查询域名服务器名资源记录
[root@centos7 ~]# host -t NS baidu.com 
baidu.com name server dns.baidu.com.
baidu.com name server ns2.baidu.com.
baidu.com name server ns4.baidu.com.
baidu.com name server ns3.baidu.com.
baidu.com name server ns7.baidu.com.

# 查询邮件服务器资源记录
[root@centos7 ~]# host -t MX baidu.com 
baidu.com mail is handled by 20 mx1.baidu.com.
baidu.com mail is handled by 20 jpmx.baidu.com.
baidu.com mail is handled by 20 mx50.baidu.com.
baidu.com mail is handled by 10 mx.n.shifen.com.

nslookup命令演示:

[root@centos7 ~]# nslookup
> server 192.168.1.1  # 直接写 server 默认为本机DNS
Default server: 192.168.1.1
Address: 192.168.1.1#53
> set q=A             # 查询A记录
> www.baidu.com
Server:		192.168.1.1
Address:	192.168.1.1#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com
Address: 61.135.169.121
Name:	www.a.shifen.com
Address: 61.135.169.125

# 查询 NS 资源记录
> set q=NS
> baidu.com
Server:		192.168.1.1
Address:	192.168.1.1#53

Non-authoritative answer:
baidu.com	nameserver = ns3.baidu.com.
baidu.com	nameserver = ns7.baidu.com.
baidu.com	nameserver = ns2.baidu.com.
baidu.com	nameserver = ns4.baidu.com.
baidu.com	nameserver = dns.baidu.com.

Authoritative answers can be found from:
> exit

 3.rndc命令:named服务控制命令

rndc:named 服务控制命令

  • rndc--> rndc(953/tcp) 监听端口

  • rndc COMMAND

COMMAND:

  • reload:重载主配置文件和区域解析库文件

  • reload zone:重载区域解析库文件

  • retransfer zone:手动启动区域传送过程,而不管序列号是否增加

  • notify zone:重新对区域传送发通知

  • reconfig:重载主配置文件

  • querylog:开启或关闭查询日志文件/var/log/message

  • trace:递增debug一个级别

  • trace LEVEL:指定使用的级别

  • notrace:将调试级别设置为0

  • flush:清空DNS服务器的所有缓存记录

  • status:状态查询

演示:

[root@centos7 ~]# rndc status
version: 9.9.4-RedHat-9.9.4-29.el7 <id:8f9657aa>
CPUs found: 4
worker threads: 4
UDP listeners per interface: 4
number of zones: 101
debug level: 0
xfers running: 0
xfers deferred: 0
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running




由于本章内容篇幅过长,后续内容(配置正反向区域解析,从DNS服务器,子域授权,定义转发等)详见DNS(二)http://1992tao.blog.51cto.com/11606804/1859019