天天看点

马哥linux学习笔记:DNS相关配置

 域名系统

        (英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

    下边以使用最为广泛的BIND软件来说明DNS在Centos7中的基本配置:

    这里将用到三台centos7.x的虚机来配置实现DNS的正向解析,反向解析,主从配置,子域授权以及基本的安全控制配置等功能。

    用到的三台服务器安装完毕后都先要关闭firewalld服务和selinux功能,其IP的相关配置为:

        A:192.168.0.108    这里我将用这台主机做为正向解析的主DNS服务器,反向解析的从DNS服务器

        B:192.168.0.106    做为正向解析的从DNS服务器,反向解析的主DNS服务器

        C:192.168.0.107    做为子域

        三台主机都通过yum安装好BIND,开始配置:

        准备工作:三台主机的BIND安装后都需要将主配置文件/etc/named.conf中的option段中的默认字段做出修改:

马哥linux学习笔记:DNS相关配置

        后边的配置都以我刚申请的新域名mengxl.com做出说明

    配置正向解析(在192.168.0.108主机上配置):

        (1)定义区域:

                在主配置文件中或主配置文件辅助配置文件中配置,这里使用主配置文件的包含文件/etc/named.rfc1912.zones配置,在文件的底部加入下面几行:

            zone "mengxl.com" IN {

                    type master;

                    file "mengxl.com.zone";

                    allow-update { none; };

            };

        (2)建立区域数据文件:

                在/var/named目录下创建文件mengxl.com.zone,文件名要与配置文件指定的文件名相同,文件内容为:

马哥linux学习笔记:DNS相关配置

            (3)修改配置好的区域数据文件/var/named/mengxl.com.zone的权限和数组

                chown     :named    /var/named/mengxl.com.zone

                chmod     o=    /var/named/mengxl.com.zone

马哥linux学习笔记:DNS相关配置

            (4)检查配置文件及区域数据文件的语法错误

                named-checkconf

                named-checkzone    mengxl.com /var/named/mengxl.com.zone

            (5)语法无误后让服务器重载配置文件和区域数据文件

                rndc    reload或者 systemctl    reload    named

    至此,DNS服务的正向区域配置完毕,我们可以用dig工具来测试配置是否已经生效

马哥linux学习笔记:DNS相关配置

    配置反向解析(用192.168.0.106主机配置)

        (1)定义区域

                在主配置文件或主配置文件的辅助配置文件中配置,这里在辅助文件/etc/named.rfc1912.zones中配置,添加下面几行:

                zone "0.168.192.in-addr.arpa" IN {

                        type master;

                        file "192.168.0.zone";

                        allow-update { none; };

                };                                                                    注意,反向区域的区域名字书写格式;

        (2)定义区域解析库文件(主要记录为PTR)

                其新建位置为/var/named/192.168.0.zone文件,内容如下:

马哥linux学习笔记:DNS相关配置

         一下步骤跟配置正向解析时相同了

       (3)修改配置好的区域数据文件/var/named/192.168.0.zone的权限和数组

                chown     :named    /var/named/192.168.0.zone

                chmod     o=    /var/named/192.168.0.zone

       (4)检查配置文件及区域数据文件的语法错误

                named-checkzone 0.168.192.in-addr.arpa /var/named/192.168.0.zone

        (5)语法无误后让服务器重载配置文件和区域数据文件

    至此,反向解析区域配置完成;

马哥linux学习笔记:DNS相关配置

    DNS主从配置

        192.168.0.108为正向解析mengxl.com的主服务器,192.168.0.106为其从服务器;

        192.168.0.106为反向解析0.168.192.in-addr.arpa的主服务器,而192.168.0.108为其从服务器;

    注意:配置主从时, 确保区域数据文件中为每个从服务配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A后面的地址为真正的从服务器的IP地址;

        (1)首先配置正向解析的从服务器,即在192.168.0.106上进行配置,在/etc/named.rfc1912.zones中加入下面几行:

                    type slave;

                    file "slaves/mengxl.com.zone";

                    masters { 192.168.0.108; };

                注意,该区域文件同步到从服务器的/var/named/slaves目录下,查看该目录权限可以看到named用户在该目录下有写权限,而其他文件的属主为root,named用户没有写权限;

马哥linux学习笔记:DNS相关配置

        (2)检查配置文件语法,重载配置使修改生效;

                rndc reload或者systemctl reload named

         正向解析的从机配置完成

        (3)配置反向解析,在192.168.0.108主机上配置,在/etc/named.rfc1912.zones中加入下边几行:

                        type slave;

                        file "slaves/192.168.0.zone";

                        masters { 192.168.0.106; };

                };

        (2)检查配置文件语法,重载配置使修改生效;

         反向解析的从机配置完成

注意,做主从配置时,要确保两台服务器的时间必须同步。

    DNS子域授权

        这里只对正向解析子域授权做出简单介绍:

       (1)首先要在父域主服务的配置文件中添加子域的相关记录,这里以子域ops.mengxl.com为例,在父域主服务器的域数据文件/var/named/mengxl.com.zone中添加NS和其A记录;

马哥linux学习笔记:DNS相关配置

        (2)配置子域服务器(192.168.0.107),配置过程与父域的正向解析配置过程相同,这里就不做过多表述:

            这里只贴出子域的数据配置文件/var/named/ops.mengxl.com.zone的内容:

马哥linux学习笔记:DNS相关配置

    配置完子域后,我们可以发现子域可以直接解析其所负责的域名解析(如www.ops.mengxl.com),而不能直接解析父域的域名(如:www.mengxl.com)需要寻找根进行迭代查询,这是我们所不想的,这就需要进行转发了

        (1)区域转发配置:仅对特定的区域进行转发,这里配置对子域对父域的解析请求转发个父域主DNS进行解析

            在192.168.0.107的/etc/named.rfc1912.zones配置文件中添加下边一段

                    type forward;

                    forward only;

                    forwarders { 192.168.0.106; 192.168.0.108; };

            这样,子域对父域的相关解析就会直接转发到父域的DNS服务器进行解析了

            注意,配置的转发器必须允许对当前主机进行递归查询

        (2)全局转发配置,针对凡本地没有通过zond定义的区域查询请求,全部转给某转发器;

            此配置需要在/etc/named.conf中的option字段中加入下边两段:

                forward    {only|first};        //only表示只是转发给指定DNS转发服务器等待查询结果;first表示首先转发,没响应则进行迭代查询;

                forwarders    { SERVER_IP; };            //SERVER_IP指转发器的IP地址;

    bind中的安全配置,按需求在每台DNS主机中进行配置

        dns配置文件中主要依靠acl访问控制列表与访问控制指令来进行安全限制了:

            acl:就是访问控制列表,把一个或多个地址归并为一个命名的集合,随后通过此名称即可对此集合内的所有主机进行统一的访问控制了;

            一般在/etc/named.conf主配置文件的options字段的外部上边进行定义

            如:acl  mynet {

                    192.168.0.0/24;

                    127.0.0.1/8;

            在bind中内置4个acl:

                none:没有一个主机;

                any:任意主机;

                local:本机;

                localnet:本机所在的IP所属的网络;

            注意,此处定义中,可以是ip地址,也可以是网段,子网掩码表示时只能是/数字格式;

        dns配置文件中的访问控制指令,主要有下边几个:

            allow-query    {};    允许查询的主机,白名单;

            allow-transfer    {};    允许向哪些主机做区域传送,默认为所有主机,应该配置为仅允许从服务器;

            allow-recursion    {};    允许哪些主机向当前DNS服务器发起递归查询请求;默认为允许所有,请按需求进行配置

            allow-update    {};    DDNS,允许动态跟新区域数据库文件中的内容;没有相关功能需求,最好都设置为allow-update { none; };

            注意,该访问控制,可以写入区域定义中,只对指定区域生效,也可以定义到options的字段中,对所有的区域生效;

            如:在192.168.0.108中设置,只允许本机与从机进行正向解析的区域传送:

                先在主配置文件/etc/named.conf中配置acl

                    acl slaves {

                        192.168.0.106;

                        127.0.0.1;

                    };

                然后在/etc/named.rfc1912.zones中的mengxl.com的区域定义段中加入控制字段;

                   zone "mengxl.com" IN {

                        file "mengxl.com.zone";

                        allow-transfer { slaves; };

继续阅读