DNS: Domain Name Service,协议(C/S, 53/udp, 53/tcp);应用层协议 

DNS基本原理

1当客户机Client需要访问某个域名时,会首先查看本地hosts文件查询相关记录,如果有则直接解析。

2如果在本机hosts文件中没有找到相关记录,则将请求发送至本地DNS域名服务器。

3本地DNS服务器接收到请求后会先查询本地缓存localCache如果缓存中有该项记录则直接返回结果。

4如果本地DNS服务器在LocalCache中未查询到相关信息则本地域名服务器就会直接把请求发送给根域名服务器。

5根服务器通过请求返回给给本地DNS服务器一个根子域负责相关域的服务器地址。

6本地DNS服务器给根子域的DNS服务器发送请求,相关域服务器在返回给本地DNS一个相关子域服务器然后层层迭代查询。最终得到记录

7本地DNS 服务器把返回的发送给客户端,并保存在本地缓存中以备下一次使用。

8域名解析完成

wKiom1YHTE6RcHzmAAMmmkhaz7w639.jpg


DNS服务器的类型:

主DNS服务器

辅助DNS服务器

缓存DNS服务器

转发器


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

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

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

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

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

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

通知机制:即使刷新时间没到,依然会回提示辅助DNS有数据更新;


区域传送:

全量传送:传送整个解析库

增量传送:传递解析库变化的那部分内容


一次完整的查询请求经过的流程:

Client --> hosts文件 --> DNS Service

Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) -->


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

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

AAAA: FQDN --> IPv6

PTR: PoinTeR,IP --> FQDN

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

CNAME:Canonical Name,别名记录

MX: Mail eXchanger,邮件交换器


资源记录定义的格式:

语法:name        [TTL]        IN         rr_type         value

注意:

(1) TTL可从全局继承;

(2) @可用于引用当前区域的名字;

(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应;

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


安装环境 centos6.6   主DNS:server   辅助DNS:server2  子域DNS:centos6

BIND的安装配置:

dns服务,程序包名bind,程序名named 

程序包:

bind 提供服务

bind-libs 提供库文件

bind-utils 测试服务器工具

服务脚本:/etc/rc.d/init.d/named         

主配置文件:/etc/named.conf, /etc/named.rfc1912.zones,

/etc/rndc.key

解析库文件:/var/named/ZONE_NAME.ZONE

根区域文件:/var/named/named.ca

配置缓存服务器: 

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

[root@server named]# vim /etc/named.conf 
zone "yangbb123.com." IN {
         type master;
         file "yangbb123.com.zone";
};
zone "1.168.192.in-addr.arpa" IN {
         type master;
         file "192.168.1.zone";
};  #添加此两个zone

编辑正向解析配置文件:

[root@server named]# vim /var/named/yangbb123.com.zone 
$TTL 1D
@       IN     SOA   ns1.yangbb123.com.      admin.yangbb123.com. (
                                2015092604   #序列号
                                2H           #刷新时间
                                5M           #重试时间
                                2D           #过期时间
                                1D           #否认最小TTL时间
)
@      IN      NS      ns1
@      IN      NS      ns2
@      IN      MX 10   mail
ns1    IN      A       192.168.1.121
ns2    IN      A       192.168.1.122
www    IN      A       192.168.1.121
www    IN      A       192.168.1.122
mail   IN      A       192.168.1.121
ftp    IN      A       192.168.1.121
web    IN      CNAME   www

编辑反向解析配置文件:

[root@server named]# vim 192.168.1.zone 
$TTL    1D
@        IN         SOA         ns1.yangbb123.com.    admin.yangbb123.com.(
                                    2015092601
                                    2H
                                    5M
                                    2D
                                    1D
)
@      IN           NS         ns1.yangbb123.com.
@      IN           NS         ns2.yangbb123.com.
121    IN           PTR        ns1.yangbb123.com.
122    IN           PTR        ns2.yangbb123.com.
121    IN           PTR        www.yangbb123.com.
121    IN           PTR        mmai.yangbb123.com
121    IN           PTR        ftp.yangbb123.com.

查看两个配置文件的权限是否为640以及属主:属组--root:named

wKiom1YHWOHygNjrAAHBNujseKk412.jpg


通过命令来检查是否有语法错误:

[root@server named]# named-checkconf  #检查主配置文件
[root@server named]# named-checkzone yangbb123.com yangbb123.com.zone  #检查区域文件语法
zone yangbb123.com/IN: tech.yangbb123.com/NS 'dns.tech.yangbb123.com' (out of zone) has no addresses records (A or AAAA)
zone yangbb123.com/IN: loaded serial 2015092604
OK

没有问题,就重启服务  services named restart

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

查询选项:

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

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

[root@server named]# dig -t NS yangbb123.com @192.168.1.121  #DNS的解析
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t NS yangbb123.com @192.168.1.121
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6725
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2
;; QUESTION SECTION:
;yangbb123.com.     IN  NS
;; ANSWER SECTION:
yangbb123.com.    86400 IN  NS  ns2.yangbb123.com.
yangbb123.com.    86400 IN  NS  ns1.yangbb123.com.
;; ADDITIONAL SECTION:
ns1.yangbb123.com.  86400 IN  A 192.168.1.121
ns2.yangbb123.com.  86400 IN  A 192.168.1.122
[root@server named]# dig -x 192.168.1.121 @192.168.1.121  #反向解析正常
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -x 192.168.1.121 @192.168.1.121
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50583
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;121.1.168.192.in-addr.arpa.  IN  PTR
;; ANSWER SECTION:
121.1.168.192.in-addr.arpa. 86400 IN  PTR ns1.yangbb123.com.
121.1.168.192.in-addr.arpa. 86400 IN  PTR www.yangbb123.com.
121.1.168.192.in-addr.arpa. 86400 IN  PTR mmai.yangbb123.com.1.168.192.in-addr.arpa.
121.1.168.192.in-addr.arpa. 86400 IN  PTR ftp.yangbb123.com.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400 IN  NS  ns1.yangbb123.com.
1.168.192.in-addr.arpa. 86400 IN  NS  ns2.yangbb123.com.

此次DNS的正向和方向都解析都在正常,后续会有DNS的主从以及子域授权的配置。