本篇博客主要讲解:

DNS原理、DNS缓存服务器、主从服务器、DNS转发

一、DNS原理

  网络通讯大部分是基于TCP/IP协议,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“125.39.240.113”之类的IP地址,而不能认识域名。我们无法记住那么多数字组成的IP地址,但我们在访问网站时,几乎都是在浏览器地址栏中输入域名,就能看到我们所要访问的内容,这是因为有一个“DNS服务器”自动把我们的域名转换成相应的IP地址,而后查询出IP地址所对应的网页。

什么是DNS

  DNS( DomainName System)是“域名系统”的英文缩写,它是由解析器以及域名服务器组成。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。DNS使用TCP/53端口与UDP/53端口,主要使用“UDP”协议,服务器之间备份使用“TCP”协议。它的基本工作原理用图来表示如:

wKiom1SK83LjPqtfAAB7qAdEPpQ157.jpg

 DNS域:

  互联网域名系统由名称注册机构负责维护分配、由组织和国家/地区的顶级域在 Internet 上进行管理。这些域名按照国际标准进行分配。常见的DNS域名称如:

  com:商业公司  edu:教育机构  net:网络公司  gov:政府机构  mil:军事政府机构 cn:中国

DNS域名称空间的组织方式

  根域:DNS域名使用时,由尾部点"."来指定名称位于根域或更高

  顶级域:用来表示某个国家或地区使用的名称类型 如: .cn

  二级域:由个人或组织在internet上使用的注册名称 如:mageedu.com

  子域:已注册的二级域名衍生的域名,也就是网站名 如:www.mageedu.com

  主机名:通常表示DNS域名的最左侧标签来标识网络上特定的计算机如: ns1  ns1.www.mageedu.com

Dns服务的工作过程

  当 DNS 客户机需要查询程序中使用的名称时,它会通过查询本地DNS服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应答的问题

1.  指定DNS 域名,表示为完全合格的域名 (FQDN)

2.  指定查询类型,可根据类型指定资源记录

3.  DNS域名指定的类别

  对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录

  DNS 查询以各种不同的方式进行解析。客户机有时可使用之前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归查询

  另外,客户机自己也可尝试联系其他的DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代查询,即DNS服务器之间的交互查询就是迭代查询。


比如说:

1.  在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析

2.  如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,看是否有这个网址映射关系,如果有,直接返回,完成域名解析

3.  如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地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服务器之间就是的交互查询就是迭代查询!

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

二、DNS缓存服务器

1、规划

 NS服务器是:172.16.14.5

 www服务器是:172.16.14.6

2、安装软件包:

 可以采用yum安装。

源码包官方网站下载https://www.isc.org/downloads/

本博客主要以rpm安装方式进行,我们使用(CentOS6.6)bind-9.8.2-0.30.rc1.el6.x86_64

3、配置文件细解

 bind服务进程主配置文件/etc/named.conf

 区域的定义,每个选项后面一定要加分号;

options  {                                     #定义全局选项
    directory "/var/named";                    #定义区域数据文件存放目录
};                                               
zone "." IN  {                                 #定义根区域
    type hint;                                 #定义区域类型为根
    file "named.ca";                           #定义数据文件
};                                               
zone "localhost" IN  {                          #定义本地解析区域
    type master|slave;                         #定义区域类型为主或辅
    file "named.localhost";                    #定义数据文件
};
zone "0.0.127.in-addr.arpa" IN  {               #定义反向解析区域
    type master|slave;                         #定义区域类型为主或辅
    file "named.loopback";                     #定义数据文件
};


区域配置文件 /etc/named.rfc1912.zones

区域数据文件 /var/named/

服务控制脚本 /etc/rc.d/init.d/named

可使用 service named start|stop|restart|reload 启动、停止、重启、重新加载

也可使用 rndc start|stop|reload|status 启动、停止、重新加载、查看状态

4.DNS资源记录类型

1

2

3

4

5

6

7

8

 $TTL  600  #TTL:否定应答时常

    @     IN     SOA    [FQDN]magedu.com. admin.com.[管理员邮箱] (

                2013081001;  serial    #版本号(最长为10位数字)

                1D;  refresh           #定义检查刷新时间

                1H;  retry             #定义重试时间

                1W;  expire            #定义过期时间

                3H  ); minimum         #定义否定答案时长

SOA:起始授权记录

时间单位:M(分钟)、H(小时)、D(天)、W(周)、默认单位是秒

NS:区域名称-->主机名  如: magedu.com.   IN   NS   ns1.magedu.com

MX:(邮件) 区域名称-->FQDN 如: magedu.com. IN   MX 10 mail.magedu.com.  #数字(0-99)越小级别越高

              mail.magedu.com. IN   A    172.16.14.6

A:FQDN-->IPv4   

AAAA:FQDN-->IPv6

PTR:Ip-->FQDN  指针记录   CNAME:FQDN-->FQDN 别名记录

5.  配置缓存服务器

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

1

2

3

4

5

6

7

options {

//      listen-on port 53 { 127.0.0.1;  };        #把本行注释默认只监听127.0.0.1的53端口

//      listen-on-v6 port 53 { ::1;  };           #把本行注释,我们不使用IPv6

        directory       "/var/named";            #定义区域数据文件存放目录

//      allow-query     { localhost;  };          #把本行注释,默认只允许本地查询

        recursion yes;                           #是否允许递归

  };

打开区域配置文件,可以只保留这两个区域  vim /etc/named.rfc1912.zones

1

2

3

4

5

6

7

8

9

10

zone "localhost" IN  {                         #定义本地解析区域

    type master;                               #定义区域类型为主

    file "named.localhost";                    #定义数据文件

    allow-update  { none;  };                  #是否允许更新

};

zone "0.0.127.in-addr.arpa" IN  {              #定义反向解析区域

    type master;                               #定义区域类型为主

    file "named.loopback";                     #定义数据文件

    allow-update  { none;  };                  #是否允许更新

};

保存并退出,使用  named-checkconf检查脚本是否有语法错误

启动DNS服务器,DNS进程为named:

1

2

[root@localhost  ~]# service named start
Starting named:                                             [  OK  ]

修改本地DNS地址为本机echo "nameserver 172.16.14.5">> /etc/resolv.conf

使用dig命令测试解析根dig -t NS . @172.16.14.5  -t:指定资源记录类型

wKioL1SL6U6w7C_tAANrJDZ11kA288.jpg

6、把DNS服务加入到开机启动项

wKiom1SL6RCR1epZAACkRk46pWs954.jpg

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

三、配置主从DNS服务器

1、ip规划: NS服务器master:172.16.14.5 | slave:172.16.14.6

2、在master和slave上安装bind

yum -y install bind

bind的主配置文件:/etc/name.conf;

配置文件中主要讲解dns服务的区域定义与工作属性;而bind的配置文件属性也比较独特,不允许其他用户读写;

wKiom1SL6zeBozGnAAByIcUapns436.jpg

创建正向区域解析文件

vim /var/named/stu14.com.zone

wKioL1SL8X_w_Z7eAAK8178qfes910.jpg


创建反向区域解析文件

vim /var/named/14.16.172.zone

wKiom1SL8krhwz_dAAGM9HLsxhE289.jpg


检查区域配置文件

wKioL1SL87Tj_T0XAADVONC3AD8827.jpg


修改区域配置文件的权限为640,并修改其属组

wKiom1SL8_uQaGvfAAHYhEbNwqc686.jpg

检查语法是否有错误;

named-checkconfig


检测区域配置文件:

named-checkzone "stu14.com" /var/named/stu14.com.zone

named-checkzone "14.16.172.in-addr.arpa" /var/named/14.16.172.in-addr.arpa


启动named后,使用dig命令测试A记录与NS记录:dig -t A www2.stu14.com @172.16.14.5

wKiom1SL-BOD-IVaAAJUjUyu8zo222.jpg


测试NS记录

wKioL1SL-NeT2pOGAAIWb8h97b4714.jpg


从服务器配置

前期准备工作与master相同

编辑 vim /etc/named.rfc1912.zone

wKiom1SL-x2TzWekAAHMZBmPD7M842.jpg


修改一下主服务器(172.16.14.5)的主配置文件,允许从服务器区域传送:

wKioL1SL_VmDz1RVAAFG6nYYJlk353.jpg


修改主服务器的正向与反向区域配置文件,添加从服务器记录信息

wKioL1SMKQuAag4pAAHBD1GyDyc513.jpg


修改反向区域配置文件

wKiom1SMKXDCY17OAAGC4ijudwM338.jpg

重启named :service named restart


验证从服务器是否同步文件:

wKiom1SMKdejMcHNAAGC4ijudwM855.jpg


验证从服务器是否同步文件:

wKiom1SMKkuhijmKAADF85JXCPo885.jpg


DNS服务器添加一条正向解析的记录并重新加载配置文件,从服务器/var/named/slaves/下正向区域文件则会同步序列号及DNS新添加的一条正向解析记录;

wKioL1SMLN3RbBk1AAEvdoPISgU674.jpg