DNS的简介和BIND实现

DNS简介数据库

    DNS其实你们都不陌生,由于这个是咱们访问互联网必不可少的一个东西,全称:Domain Name System。在当今计算机网络中是经过IP地址来进行主机之间互联的,可是咱们知道IP地址有32位,之后还会普及IPv6,128位。对于人类来记忆实在太痛苦了。DNS的做用就是为了解决域名到IP之间的转换。这样你们就恍然大悟了吧,咱们天天都在享受着DNS带来的便捷。centos

    DNS是一个分布式、分层次的主机名管理架构,经过配置DNS服务器地址,主机不须要知道对应的IP地址就能经过主机名的形式访问互联网。那么你要想了,全球这么多IP地址,都在一台DNS服务器上,万一宕机了咋办?天天这么多访问量,配置得多高啊!前辈们早就想好解决方法了。DNS利用相似倒状树的目录结构将主机名的管理分配在不一样层级的DNS服务器当中,通过分层管理,每一级DNS服务器负责部分域名信息,这就减轻了DNS服务器的负载。具体结构参考下图:缓存

wKiom1nGUs3QUpCUAABMoT0Y6Ak169.png-wh_50

DNS解析过程bash

    第一种:递归查询。递归查询通常是客户机和服务器之间的查询,即只发送一块儿请求,其余的工做交给上层服务器去解决,而后一层一层的反馈结果到客户端;
服务器

    第二种:迭代查询。通常是DNS服务器与DNS服务器之间的方式,最初的服务器负责发起请求,一层层的找到目标服务器,在返回给客户端,这个过程叫迭代。网络

一次完整的查询请求通过的流程:架构

Client --> hosts文件 -->DNS service tcp

       Local DNS cache --> DNS server(recursion递归)-->server cache -->iteration(迭代) -->根--> 顶级域名DNS-->二级域名DNS…分布式

DNS服务器的类型   ide

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

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

    缓存DNS服务器:提升DNS的访问速度,实现快速解析,在安装完成DNS软件后就已经实现了简单的缓存服务器,一般在/etc/named.conf当中的forward only设定;

    转发器:经过区域传送,将所须要的域名解析传送给其余DNS服务器进行解析            

                    区域传输:

                            彻底传输:传送整个解析库

                            增量传输:传递解析库变化的那部份内容

DNS监听的端口

    DNS是一个网络服务,端口号是53.一般DNS在查询的时候是以udp这个快速的数据传输协议来查询的, 可是一旦没有办法查询到完整的信息时就会再次以TCP协议来进行从新查询,所以DNS服务在启动的时候会同时开启tcp的53号端口和udp的53号端口。

安装DNS服务

    一、DNS服务程序包:bind,程序名:named

        使用yum list all bind* 查看相关安装包:

                            bind:服务器;

                            bind-libs:于bind相关的库文件;

                            bind-utils:客户端相关命令文件;

                            bind-chroot:bind主目录禁锢程序,就是将bind程序禁锢在家目录中,centos6以后的系统已经默认在/var/named目录下了;

                            补充:若是你的程序是centos以前,那么还有一个软件包caching-nameserver:做用是为bind提供简单的配置文件模版,centos5以后的系统这个软件功能都被包含在bind主程序软件包当中。
        *根据需求使用yum安装bind软件

    二、DNS服务器配置文件

                第一步:修改主配置文件:/etc/named.conf                      <==主配置文件通常用来定义全局配置和根zone

~]#cat /etc/named.conf 
options {                          <==在options包含的是全局配置
                listen-on port 53 { any; };       <==监听的端口,即哪些主机能够进行访问解析;
                directory       "/var/named";     <==对应数据库文件的目录位置;       
                dump-fi    le       "/var/named/data/cache_dump.db";
                statistics-file "/var/named/data/named_stats.txt";
                memstatistics-file "/var/named/data/named_mem_stats.txt";
                allow-query     { any; };       <==运行哪些主机请求查询,这里修改成any运行全部;
                recursion yes;                <==将本身视为客户端的一种查询方式;
                dnssec-enable no;              <==测试环境建议先关闭;
                dnssec-validation no;
};

             第二步:配置/etc/named.rfc1912.zones              <==主配置文件之一,通常用来存放zone,就是定义解析的域

zone "ZONE_NAME" IN {                      <==ZONE_NAME表示要解析的域名,正解时就是域名自己,如:jd.com;反解的时候:ip网段反写.in-addr.arpa;
        type {master|slave|hint|forward};  <==定义zone的类型:master主DNS服务器,slave从服务器,hint根服务器,forward转发域
        file "ZONE_NAME.zone";             <==标明解析域名的数据库文件名
};

             第三步:解析库文件:/var/named/ZONE_NAME.ZONE          <==与zone中file相对应,文件名必须一致   

                            区域解析库:由众多资源记录RR组成:

                            资源记录类型:

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

                                 格式:name       [TTL]      IN        rr_type          value

                                                一、TTL表示该记录被其余dns服务器查询到后保留到对方服务器上的缓存当中保持多少秒,可全局继承;

                                                二、name:当前区域的名字

                                                三、value: 有多部分组成:

$TTL 1D
@    IN  SOA  dns1   admin.xiaomage.com. (          <==@可用于引用当前区域的名字,dns1当前区域的主DNS服务器,admin.xiaomage.com.
                                                            当前区域管理员的邮箱地址;但地址中不能使用@符号,通常用.替换;
                                  31     ;序列号 
                                 1D     ;刷新时间
                                 1H     ;重试时间
                                 1W     ;过时时间
                                 3H )    ;否认答案的TTL值
dns1    IN  A                       *.*.*.*             <==主机名对应主机的IP地址

                                二、A :internet Address,做用,FQDN --> IP

                                三、AAAA: FQDN --> IPv6 

                                四、PTR: 反向解析:有特定格式,把IP地址反过来写,1.2.3.4  要写出4.3.2.1;并且有特定后缀:in-addr.arpa.,因此完整写法为:4.3.2.1.in-addr.arpa.

                                        例如:4.3.2.1.in-addr.arpa. IN PTR www.jd.com.       <==注意每一个后面必需要加“.”做为结束符,否则系统会自动补上当前域名

                                五、NS: Name Server,专用于标明当前区域的DNS服务器,对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录

                                        例如:jd.com    IN     NS    ns1.jd.com

                                六、CNAME:Canonical Name,别名记录

                                七、MX:Mail eXchanger,邮件交换器,对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

测试命令

    一、dig 只用于测试dns系统,不会查询hosts文件进行解析

        语法:dig [-t type] name [@SERVER]

        例如:dig -t a www.hxsd.com @1.1.1.1

                    +trace:跟踪解析过程

                    +recurse:进行递归解析

    二、host [-t type] name [SERVER]

          例如:host –t NS hxsd.com 172.16.0.1

    三、nslookup命令:nslookup[-option] [name | -] [server]

        交互式模式:

            nslookup>

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

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

            NAME: 要查询的名称

        非交互式模式:·

            nslookup www.hxsd.com 172.18.0.1 

相关文章
相关标签/搜索