一、DNS 简述

        DNS(Domain Name System),即域名系统。因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。DNS服务器的作用就是就好比生活中的电话簿、114查号台一样,为各种网络程序找到对应目标主机的IP地址或对应的主机域名。

二、DNS功能

         每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。当Ping主机名时可以映射出该主机的IP地址,反之亦然。配置并指定DNS服务器可以快速部署集群,不需要每台主机都去修改Hosts文件即可实现IP与主机名的相互解析。

    1、DNS解析方式

       在DNS的解析过程中我们可以发现有那么两个阶段,1、客户端将解析请求发给dns server之后只需要等待结果就OK了;2、dns server在接到客户端的请求后,全面负责去查找目标主机,查找的每个过程都是dns server去请求的。这两个过程的查找方式显然是不相同,前者我们称之为递归查询,后者称之为迭代查询。递归查询和迭代查询是DNS解析过程的两种方式,递归查询一般是客户机和服务器之间的查询,即只发送一起请求,其他的工作交于上层服务器去解决,然后最后一层一层的反馈结果到客户端;迭代查询一般是DNS服务器与DNS服务器之间的方式,即最初的DNS服务器负责发起请求,而其他涉及到的DNS服务器只负责响应即可,然后一直查找到目标DNS服务器,并将结果返回给客户端。

        DNS是一个网络服务,因此必须要有与其相对应的端口号,DNS的端口号是53,通常在查询的时候是以udp这个快速的数据传输协议来查询的,但是一旦没有查询到完整的信息时就会再次以TCP协议来进行重新查询,因此DNS服务在启动的时候会同时开启tcp的53号端口和udp的53号端口,这个解析记录在DNS中称之为DNS数据库,这个数据库又分为正解和反解,正解就是从主机名到IP的过程,反解就是从IP反向解析到主机名的过程,无论是正解还是反解,每个域名所对应的解析记录我们称之为zone,如baidu.com这个zone。

    2、DNS相关的配置文件

修改/etc/named.conf访问权限

linux下DNS的配置_第1张图片

修改 /etc/named.rfc1912.zones文件,加入正解和反解配置 

linux下DNS的配置_第2张图片

linux下DNS的配置_第3张图片

修改 /etc/named.localhost 文件

linux下DNS的配置_第4张图片

三、DNS测试

除了系统提供的一些名称解析命令外,DNS的软件包当中提供了一些测试命令,这些命令有:dig、host、nslookup。

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

    ##dig命令的语法: dig[-t type]name[@SERVER][query options]

        查询选项:+[no]trace 跟踪解析过程 / +[no]recurse 进行递归解析

        测试反向解析: dig -x IP@SERVER

        模拟区域传送: dig -t axfr ZONE_NAME @SERVER

    ##host命令语法:  host [-a] name [SERVER]

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

        交互式模式:

            nslookup>

                server IP:指明使用哪个DNS server 进行查询;

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

        NAME:要查询的名称;

四、搭建DNS的实验

    1、DNS模拟根实现,及主辅同步

        ##准备六台机器,除client客户端以外,所有机器安装bind,并都清空防火墙和关闭selinux。

linux下DNS的配置_第5张图片

        ##所有安装bind的主机配置name.conf,修改2个any,2个no,除caching-only缓存机以外,都把递归设置为no。

linux下DNS的配置_第6张图片

linux下DNS的配置_第7张图片

        ##除root“.”以外,所有机器修改named.ca

linux下DNS的配置_第8张图片

linux下DNS的配置_第9张图片

        ##配置root“.”机器

        1、/etc/name.conf中删除name.ca的项目

linux下DNS的配置_第10张图片

            2、配置 /etc/named.rfc1912.zones文件

linux下DNS的配置_第11张图片

            3、编辑 /var/named/root.zone文件

linux下DNS的配置_第12张图片

                4、启动named服务

linux下DNS的配置_第13张图片

        ##配置com机器

            1、配置 /etc/named.rfc1912.zones文件

linux下DNS的配置_第14张图片

            2、编辑 /var/named/com.zone文件

linux下DNS的配置_第15张图片

            3、启动named服务

linux下DNS的配置_第16张图片

        ##配置主DNS二级域

            1、配置 /etc/named.rfc1912.zones文件

linux下DNS的配置_第17张图片

            2、编辑 /var/named/magedu.com.zone文件

linux下DNS的配置_第18张图片

            3、编辑/etc/named.conf 文件

linux下DNS的配置_第19张图片

            4、启动named服务

linux下DNS的配置_第20张图片

        ##配置从DNS二级域机器

            1、配置 /etc/named.rfc1912.zones文件

linux下DNS的配置_第21张图片

            2、启动named服务

linux下DNS的配置_第22张图片

        ##配置客户机client

linux下DNS的配置_第23张图片

        ##测试DNS是否搭建成功

            1、在缓存机caching-only上清除缓存

blob.png

            2、在客户机client上测试

#关闭所有防火墙后测试

linux下DNS的配置_第24张图片

#开启主DNS二级域的防火墙后测试

linux下DNS的配置_第25张图片

blob.png

linux下DNS的配置_第26张图片

#将主、从DNS二级域机器的防火墙全部开启后测试

linux下DNS的配置_第27张图片

blob.png

linux下DNS的配置_第28张图片

至此,我们就完成了在Linux下DNS模拟根的搭建,并实现了及主辅同步。