DNS(域名系统)

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

DNS的流程介绍图可以简单说明DNS的工作原理

DNS查询类型:

递归查询

迭代查询

wKioL1X88prCoobZAAVeZ8seHRw122.jpg


DNS服务器的类型:

    主DNS服务器

    辅助DNS服务器

    缓存DNS服务器

    转发器


主DNS服务器:维护所负责解析的域内解析库服务器;解析库由管理维护;

从DNS服务器:从主DNS服务器或其它的从DNS服务器那里“复制”(区域传递)一份解析库;

2015042201 序列号:解析库的版本号;前提:主服务器解析库内容发生变化,其序列递增;

2H 刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔;

10M 重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔;

1W 过期时长:从服务器始终联系不到主服务器时,多久多后放弃从服务器角度,停止提供服务;

常用的资源记录类型

A 地址 此记录列出特定主机名的 IP 地址。这是名称解析的重要记录。

CNAME 标准名称 此记录指定标准主机名的别名。

MX邮件交换器此记录列出了负责接收发到域中的电子邮件的主机

NS名称服务器此记录指定负责给定区域的名称服务器。

PTR记住主机名的IP地址,反解之意,IP反过来写,后追加in-addr.arpa

然后我们做个实例来看一下,

我们直接用yum安装bind:注意,因为我们的光盘上就带有bind的包,所以我们不用下载包了,如果需要下载可以用去官网下载。用rpm 来安装,具体可以看看rpm的手册。

      可以用yum -qa来查看bind的包

      yum install bind bind-utils

      也可以用yum install bind*把所有bind的包都装上

主配置文件:

全局配置:options {}

日志子系统配置:logging {}

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

zone "ZONE_NAME" IN {}


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


缓存名称服务器的配置:

监听外部地址即可;


dnssec: 

建议测试时关闭dnssec;


主DNS名称服务器:

(1) 在主配置文件中定义区域

zone "ZONE_NAME" IN {

type {master|slave|hint|forward};

file "ZONE_NAME.zone";

};

        


 定义区域解析库文件。实例看看

wKiom1X8-ymyAHpEAAEiRqmKU4U360.jpg

测试命令:dig的使用

dig [-t type] name [@SERVER] [query options]


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


查询选项:

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

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


测试反向解析:

dig -x IP @SERVER


模拟区域传送:

dig -t axfr ZONE_NAME @SERVER


例如:dig -t axfr magedu.com @172.16.100.11


host命令:

host [-t type] name [SERVER]


nslookup命令:

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

$TTL 86400

$ORIGIN 100.16.172.in-addr.arpa.

@ IN SOA ns1.magedu.com. admin.magedu.com. (

2015042201

1H

5M

7D

1D )

IN NS ns1.magedu.com.

IN NS ns2.magedu.com.

11 IN PTR ns1.magedu.com.

11 IN PTR www.magedu.com.

12 IN PTR mx1.magedu.com.

12 IN PTR www.magedu.com.

13 IN PTR mx2.magedu.com.

定义从区域的方法:

zone "ZONE_NAME" IN {

type slave;

masters { MASTER_IP; };

file "slaves/ZONE_NAME.zone";

};