DNS协议( Domain Name Service)是一种应用层协议,基于tcp和udp的53端口,通过BIND(Bekerley Internat Name Domain)程序来实现。主要是通过udp无线传输协议,udp协议提供的是单向的协议,tcp是需要通过三次握手,所以使用udp可以减少DNS服务器的压力。DNS的查询类型主要有两种,递归查询即向服务器发送一次请求后,服务器断会寻找直到找到网址或者找不到,将最终的答案回馈给用户,而迭代查询是需要发送多次请求确认。解析的方式也有两种

NAME --> IP或IP-->NAME,即通过输入网址查询或者输入IP查询,当然一般来说,我们能记住的都是网站的域名。而服务的类型主要有:主DNS服务器、辅助DNS服务器、缓存DNS服务器和转发器。   

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

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

          缓存DNS服务器:用于缓存DNS服务站解析到的数据;

          转发器:需要进行外界查询的DNS服务器;


资源记录:Resource Record, RR

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

 

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

A:internet Address,作用,FQDN --> IP

AAAA: IPv6解析,FQDN --> IPv6

PTR: 反向解析,PoinTeR,IP --> FQDN

NS: Name Server,专用于标明当前区域的DNS服务器

CNAME:Canonical Name,别名记录

MX: Mail eXchanger,邮件交换器

 

资源记录定义的格式:

语法:name        [TTL]        IN         rr_type         value


SOA:

name: 当前区域的名字,例如“magedu.com.”;

value: 有多部分组成

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

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

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


MX:

name: 当前区域的名字

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

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


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

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

 

例如:

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.3

mx2.magedu.com.          IN           A   1.1.1.3

 

注意:

*.magedu.com.                 IN          A          1.1.1.4

magedu.com.                        IN           A   1.1.1.4

 

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


例如:

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

        子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权;

 

    类似根域授权tld:

.com.        IN                 NS          ns1.com.

.com.   IN           NS                 ns2.com.

ns1.com.         IN                 A         2.2.2.1

ns2.com.          IN                 A         2.2.2.2

 

          magedu.com. 在.com的名称服务器上,解析库中添加资源记录:

magedu.com.         IN         NS                 ns1.magedu.com.

magedu.com.         IN         NS                 ns2.magedu.com.

magedu.com.         IN         NS                 ns3.magedu.com.

ns1.magedu.com.         IN         A          3.3.3.1

ns2.magedu.com.         IN         A          3.3.3.2

ns3.magedu.com.         IN         A          3.3.3.3


测试命令: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


反向区域:

 

区域名称:网络地址反写.in-addr.arpa.

172.16.100. --> 100.16.172.in-addr.arpa.

                                    保留不变的部分,如使用的172.16.100、172.16.200、172.16.400,则为172.16.-->16.172.in-addr.arpa.

(1) 定义区域

zone "ZONE_NAME" IN {

type {master|slave|forward};

file "网络地址.zone"

};

 

(2) 区域解析库文件

注意:不需要MX和A,以及AAAA记录;以PTR记录为主;

 

示例:

$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.        

 

主从复制:

1、应该为一台独立的名称服务器;

2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器;

3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中;

4、主服务器得允许从服务器作区域传送;

5、主从服务器时间应该同步,可通过ntp进行;

6、bind程序的版本应该保持一致;否则,应该从高,主低;

 

定义从区域的方法:

zone "ZONE_NAME" IN {

type slave;

masters { MASTER_IP; };

file "slaves/ZONE_NAME.zone";

};

 

rndc:

rndc --> rndc (953/tcp)

 

rndc COMMAND

 

COMMAND:

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

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

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

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

reconfig: 重载主配置文件

querylog: 开启或关闭查询日志;

trace: 递增debug级别;

trace LEVEL: 指定使用的级别;

PTR:

name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addra.arpa.

value: FQDN