一、安装DNS服务器

    DNS服务的安装包为bind,使用yum直接安装即可:

DNS服务器之配置_dns配置

    安装完成后,查看DNS服务相关的文件:

DNS服务器之配置_dns配置_02

二、配置正向区域

    1、在配置正向区域之前,先来看下主配置文件中的内容:

    全局配置段

DNS服务器之配置_dns配置_03

    其中:

        listen-on port 53:监听端口,默认是本机,即只允许本机进行DNS查询,可以使用any开放给所有用启。

        direcoryt:指明正、反向解析区域的配置文件的存放路径。

        dump-file、statistics-file、memstatistics-file:这三个文件为统计信息文件,可以不设置。

        allow-query:定义哪些客户端可发送DNS查询请求。

        recursion:开启递归查询。

DNS服务器之配置_dns配置_04

        logging表示定义的日志的相关信息。

        zone表示区域设置,主配置文件中默认定义了根域。

        include表示后面的文件是此配置文件的组成部分。

        打开/etc/named.rfc1912.zone2文件,里面已经定义了许多默认的zone。

DNS服务器之配置_dns配置_05

    说明:我们手动添加正、反向区域时,可以直接在主配置文件(/etc/named.conf)中定义,也可以在/etc/named.rfc1912.conf文件中定义。

    2、配置正向区域

        1)修改主配置文件

DNS服务器之配置_dns配置_06

        2)添加区域记录

DNS服务器之配置_dns配置_07

        3)创建区域文件

DNS服务器之配置_dns配置_08

            格式说明: Name   [TTL]   IN     RRType    VALUE

                Name:资源记录的名称。

                TTL:缓存时间,可以在文件开头统一定义。

                IN:固定格式。

                RRType:资源记录的类型。

                VALUE:资源记录所对应的值。

            针对不同的资源记录,格式中各字段的内容也不尽相同:

                (1)SOA

                    任何解析库文件的第一个库文件必须是SOA。

                    Name:当前区域名称,通常可以简写为@。

                    VALUE:通常是主DNS服务器的FQDN,也可以是当前区域的区域名称。

                    以上图为例,说明SOA各字段的含义:

                    @     IN     SOA    ns.test.com.    admin.test.com. (

                                    serial number       ;解析库的版本号,最长不超过10位;

                                    refresh time        ;周期性同步时长;

                                    expire time         ;过期时长;从服务器放弃解析之前所用的时长;

                                    negative answer ttl ;否定答案的统一缓存时长,对于没有解析到的记录的缓存时间;

                            )

                    注意:admin.test.com.是邮件地址,由于此文件中@已有特定的含义,所以使用.来代替@。

                (2)NS:Name Server

                    Name:区域名称。

                    VALUE:DNS服务器的FQDN。

                    注意:

                        1、如果有多台NS服务器,每一台都必须有对应的NS记录;

                        2、对于正向解析文件来讲,每一个NS的FQDN都有一个A记录。

                (3)MX:Mail Exchanger

                    Name:区域名称。

                    VALUE:邮件服务器的FQDN。

                    注意:

                        1、如果有多台MX服务器,每一台都必须有对应的MX记录;

                        2、对于正向解析文件来讲,每一MX的FQDN都有一个A记录。

                (4)A:Address

                    Name:FQDN。

                    VALUE:IP。

                (5)CNAME

                    Name:别名,新FQDN。

                    VALUE:原FQDN。

                (6)PTR

                    Name:逆向的主机IP地址(不包含网络地址)加后缀.in-addr.arpa。

                        例如:172.16.100.7/16其name为7.100.in-addr.arpa

                    VALUE:FQDN。

    3、启动服务

DNS服务器之配置_dns配置_09

    4、测试DNS服务器

        下面分别使用三个工具来测试DNS服务器。

        1)host

            命令格式:host -t [A|NS|SOA|MX|PRT] NAME DNS服务器

DNS服务器之配置_dns配置_10

        2)nslookup

            命令格式:

                server [DNS服务器]

                set type=[A|NS|SOA|MX]

                <Name>

DNS服务器之配置_dns配置_11

        3)dig

            命令格式:dig -t [A|NS|SOA|MX|AXFR] @DNS服务器

                其它常用选项:

                    +trace:启动跟踪;

                    +notrace:关闭跟踪;

                    +recurse:启动递归;

                    +norecurse:关闭递归;

                    -x PTR:测试反向记录。

DNS服务器之配置_dns配置_12

三.配置反向区域

    1)添加反向区域记录

DNS服务器之配置_dns配置_13

    2、创建反向区域文件

DNS服务器之配置_dns配置_14

    3、重新加载DNS服务

DNS服务器之配置_dns配置_15

    4、测试DNS服务器

DNS服务器之配置_dns配置_16

四、主从复制

    1、网络拓扑

        DNS服务器之配置_dns配置_17

    2、配置主、从DNS服务器

        1)在主DNS服务器的配置文件中添加NS记录    

DNS服务器之配置_dns配置_18

DNS服务器之配置_dns配置_19        2)在从DNS服务器上安装bind。(略)

        3)修改从DNS服务器的区域定义配置文件。

DNS服务器之配置_dns配置_20

        4)重新启动服务

DNS服务器之配置_dns配置_21DNS服务器之配置_dns配置_22

        5)验证

        由于CentOS不允许查看从服务器的区域配置文件,所以只能通过日志来了解同步情况。

DNS服务器之配置_dns配置_23

        上图为从服务器的日志信息,其信息表明区域传送成功。

DNS服务器之配置_dns配置_24

        在DNS主目录中已经可以看到自动同步过来的区域文件,此时就可以使用从DNS服务器进行域名解析了。

DNS服务器之配置_dns配置_25

五、子域授权

    1、网络拓扑

        DNS服务器之配置_dns配置_26

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

DNS服务器之配置_dns配置_27

    3、在父DNS服务器的区域中添加子服务顺的信息

DNS服务器之配置_dns配置_28

    4、配置子域的区域定义文件

DNS服务器之配置_dns配置_29

    5、创建区域配置文件

DNS服务器之配置_dns配置_30

    6、重新加载服务

        两台DNS服务器都要重新加载服务配置。

DNS服务器之配置_dns配置_31

    7、测试

        使用父域的DNS服务器可以解析到子域的域名记录。

DNS服务器之配置_dns配置_32

六、转发器

    在上面的实例中,可以能过父域解析到子域的记录,那么通过子域能否解析到父域上的记录?如下图所示:

DNS服务器之配置_dns配置_33

    结果是解析不到的,不过我们可以通过配置转发器把test.com域的请求发送到父域DNS服务器上。

    转发器的配置有两种方式:

        1)配置转发区域,指明将哪个区域的请求转发到指定的服务器进行解析,如下图所示:

DNS服务器之配置_dns配置_34

         2)在/etc/named.conf的全局配置中指定转发,这样会把所有本地无法解析的请求都发送给指定服务器,如下图所示:

DNS服务器之配置_dns配置_35

        解释:

            forward {only|first}

                only:表示只要对指定的服务器发起递归查询,如果依然查询不到就认为请求资源无效。

                first:对指定服务发起查询无果后,会继续从根服务进行的迭代查询。          

七、DNS视图

    1、网络拓扑

       DNS服务器之配置_dns配置_36

    2、定义视图并创建区域文件

DNS服务器之配置_dns配置_37DNS服务器之配置_dns配置_38

    上图中共定义了三个视图,分别为inter、outer、other。每个视图都为特定的客户端提供解析服务,inter专门为192.168.253.0/24网络内的主机提供解析;outer专门为192.168.2.0/24网络内的主机提供解析;其它的主机全部由other视图提供服务。

    每个视图中定义的相同的正向区域test.com,但是它们的区域配置文件又各不相同,如下图所示:

DNS服务器之配置_dns配置_39DNS服务器之配置_dns配置_40DNS服务器之配置_dns配置_41

    这些不同的配置文件保证同样的域名能够解析出不同的IP地址。

    3、重新启动服务

    4、验证

        分别使用3台客户端解析www.test.com,得到了不同的IP地址,如下图所示:

DNS服务器之配置_dns配置_42DNS服务器之配置_dns配置_43  

DNS服务器之配置_dns配置_44

    使用view的注意事项:

1、  通常只为内网客户端提供递归功能,提供根区域等,将所有的zone全都放到view中。

2、  通常只为外网客户端提供本机所负责的区域,在view中只定义本地的zone。 

八、DNS访问控制和ACL

    1、访问控制

        allow-tranfer {}:允许向哪些服务器进行区域传送。

        allow-query {}:接受哪些客户端发起的查询请求。

        allow-update {}:是否允许动态更新A记录和PTR记录。

       allow-recursion {}:允许哪些客户端进行递归查询。

        recursion yes|no;:是否允许递归查询。

 

    2、ACL

        1)CentOS内置了一些ACL范围:

            none:没有任何对象。

            any:所有对象。

            localhost:本机。

            localnet:本机所在网络。

         2)自定义acl

                格式:

                   acl ACL_NAME

                            ip;

                            network;

                   };

                例如:

                   acl test {

                            192.168.253.0/24;

                            10.0.0.0/16;

                   };

                   allow-recursion { test; }  允许ACL中定义的主机可以递归。

                注意:acl通常定义在主配置文件中的option的前面。