DNS服务器的安装与部署

说明:本文只是大致介绍一下DNS服务的安装与部署流程,以及在安装与部署过程中需要注意的一些事项!!

一、安装DNS软件

命令:yum -y install bind

安装后对DNS服务的一些简单介绍:
    named    DNS服务的系统服务名称
    /etc/named.conf   DNS服务的主配置文件
    /etc/named.rfc1912.zones    定义区域zone的文件
    /etc/rc.d/init.d/named      bind的服务脚本文件
    /etc/rndc.conf      rndc的配置文件
    /usr/sbin/named-checkconf  检测/etc/named.conf文件语法是否正确
    /usr/sbin/named-compilezone  检测zone及其zone文件配置语法是否合法
    /usr/sbin/rndc    远程DNS管理工具
    /usr/sbin/rndc-confgen   生成rndc密钥
    /var/named/named.ca   记录的是根服务器的地址
    /var/named/named.localhost   本地主机解析库
    /var/named/slaves   记录从DNS服务器设置的文件夹

二、启动DNS服务

CentOS 6:service named start
CentOS 7:systemctl start named

三、编辑bind主配置文件/etc/named.conf

[root@CentOS6 ~]# vim /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; };   
            //IPv4的监听端口,可以直接注释掉,表示监听所有的本机IP,
            //也可以直接在大括号里直接写成 {any; }
        listen-on-v6 port 53 { ::1; };  //IPv6的监听端口,一般默认
        directory       "/var/named";   //指明存放区域文件的路径
        dump-file       "/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; };    //允许查询该DNS服务的主机IP
        recursion yes;   //是否允许递归查询

        dnssec-enable yes;   
        dnssec-validation yes;
        //这两处都DNS的扩展安全认证机制,一般情况下不用管他就行,
        //但是在设置主从服务器与转发服务器时需要将这两个选项都设置成 no 。

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {   //定义日志
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {   //定义根区域文件名称
        type hint;   //该类型专指根服务器类型,不能将其用作其他
        file "named.ca";   //根区域文件名,使用的是相对路径,
                           //默认存放的是/var/named/named.ca
};

include "/etc/named.rfc1912.zones";   //定义zone区域的配置文件
include "/etc/named.root.key";    //根区域的key文件,跟事务签名有关
一般来说/etc/named.conf文件只要修改两处地方就可以了:

一处是 listen-on port 53 {} 这行,可以将这行直接注释掉,或在里面添加 localhost(localhost是DNS软件自定义的一个关键字,代表本机的所有IP地址) 或 any (any是DNS软件自定义的一个关键字,代表所有的IP地址)关键字;
还有一处是 allow-qurey {} 行,可以直接将该行注释掉,也可以在大括号里追加允许通过该DNS服务器的IP地址段(最好使用CIDR法)或者 将大括号里的内容改成 any 关键字

该文件修改完成后可以通过 named-checkconf 命令进行语法检查

四、自定义zone(创建自己的DNS服务)

想要创建自己定义的DNS服务,需要在/etc/named.rfc1912.zones文件中添加自己想要设置的zone(区域),
然后在/var/named/目录下添加刚刚添加的区域解析库,该解析库的文件名要与设置zone里file字段定义的文件名一致。

(1)、创建正向解析:
首先在/etc/named.rfc1912.zones中添加要设置的区域名

[root@CentOS6 ~]# vim /etc/named.rfc1912.zones 
zone "qq.com" IN {   //定义域名,IN 是 Internet 的意思,也可以不写。
    type master;   //定义该DNS是主还是从级别
    file "qq.com.zone";   //该区域的解析库文件名,是相对路径,默认存放
                          //在 /var/named/ 目录下,该文件名可以随便定
                          //义,但要与下面在/var/named/ZONE_NAME.zone 文件名一致。
}; 

//然后保存退出。

//然后在/var/named/目录下创建新加的区域解析文件。

注意:创建该区域的解析库文件,该文件名必须要与 named.rfc1912.zones 里 file 字段定义的名称一致,该文件也可以通过将 /var/named/named.localhost 拷贝到该文件中,但是文件创建后必须注意修改文件的所属人、所属组和权限;建议使用 cp /var/named/named.localhost /var/named/ZONE_NAME.zone -p 指令,然后再对文件进行修改。

[root@CentOS6 ~]# vim /var/named/qq.com.zone   //文件名要与在/etc/named.rfc1912.zones设置的zone里file字段定义的文件名一致。 
$TTL 86400   //定义缓存过期时长
$ORIGIN qq.com.  //这一行可以不写,系统会自动从别处继承;若写的话,域名后的“.”不能省略,若省略系统会自动补全,可能会出现问题,比如若不全的就会补成qq.com.qq.com.
@    IN SOA ns1 admin.163.com.( 
    //只有ns1才是定义的域名称,这里使用的是类似变量的方式替代的;
    //后面的那个163是这个DNS服务器管理员的邮箱,邮箱中的 @ 要用 . 来替代。

                2017010101; serial
                //序列号,该序列号定义后,若要在修改只能增,不能减;
                //同时从DNS服务器会根据该序列号是否变化来决定是否从
                //主DNS服务器上进行备份,此时是从服务器向主服务器拉
                //(pull)数据进行数据同步;该序列号最多有10位,
                //超出会报错。

                2H; refresh   //定义多长时间从DNS服务器会从
                              //主DNS服务器上拉(pull)数据。
                5M; retry   //定义主从DNS服务器同步数据时出现问题的话,
                            //要过多长时间再次尝试。
                7D; expire  //定义从DNS服务器多长时间内无法与主DNS服务
                            //器同步数据时,从DNS服务器上的数据会失效。
                1D; MINTTL  //DNS服务器无法返回给客户端正确回答时的
                            //否定回答要保存多久,避免客户端对同一无效
                            //请求在一段时间内发起多次访问。
                )

@  IN  NS  ns1   //定义指定DNS服务器(NS前面的那些项可以不写,
                 //不写的话就会直接从上面继承,也可以只写一个 @ ;
                 //域名写的话就要写全:qq.com.)
@  IN  NS  ns2   //域名可以指定多个域名服务器,如果存在多个的情况下,
                 //此处ns2表示从域名服务器。
ns1  IN  A  172.16.100.10   //指定ns1域名服务器的IP地址。
ns2  IN  A  172.16.100.11   //指定从域名服务器IP地址。
ns1  IN  MX 10 mail1   //定义邮件服务器,此记录也可指定多个,
                       //10表示此记录的优先级别,数字越小优先级越高。
mail1   IN  A  172.16.100.10   //指定邮件服务器IP地址。
www     IN  A  10.20.57.10    //指定该域名下的web服务器主机的IP地址。
ftp     IN  CNAME www   //将ftp主机设置为www别名。
*       IN   CNAME www    //设置泛域名解析,可以使所有符合该域名
                          //后缀的链接都访问到该IP地址,
                          //但是该域名后缀的前面不能为空。
@(也可以直接只写一个域名:qq.com.)  IN  A 172.17.111    //也是一种
                //泛域名解析,允许访问该域名后缀的链接的主机部分为空。
$GENERATE 1-100 server$ A 1.1.1$	//$为一个1-100内的数字,
                   //可以实现server1.qq.com--server100.qq.com之间
                   //100个链接的访问($GENERATE 应该为固定写法!!!)。

//保存退出。

//配置好后可以通过 named-checkzone /var/named/ZONE_NAME.zone 指令
//进行语法检查,若本身就在/var/naned目录下,就不用写绝对路径了。

(2)创建反向解析,和创建正向解析的方式是一样的,都是需要在/etc/named.rfc1912.zones文件中添加要设置的区域,并在/var/named/目录下创建刚刚添加的区域解析库,该解析库的文件名要与设置区域名一致。

//反向解析的过程与正向解析的过程是差不多的,只是反向解析是不需要向根进行解析,
//而是只会解析到根下的一个名为 arpa 的域,由 arpa 域进行处理,
//然后再一级一级的进行处理。

//创建反向解析:
[root@CentOS6 ~]# vim /etc/named.rfc1912.zones 
zone "37.168.192.in-addr.arpa" IN { //定义要解析的IP地址段,
                                //IN 是 Internet 的意思,也可以不写。
        type master;    //定义该DNS是主还是从级别
        file "192.168.37.zone";  //该区域的解析库文件名,是相对路径,
                               //默认存放在/var/named/ 目录下,
                               //该文件名可以随便定义,但最好与定义的
                               //域名相关、好识别。
};

//创建反向解析的zone文件与创建正向解析的zone文件一样,
//也可以通过拷贝范例文件的方式进行创建,不过范例文件变成了
// /var/named/named.loopback,建议使用
// cp -p /var/named/named.loopback /var/named/ZONE_NAME.zone ,
//然后再对该文件进行修改即可。
[root@CentOS6 ~]# vim /var/named/192.168.37.zone 
$TTL 1D
@       IN SOA  dns1 rname.invalid. (
                                    0       ; serial
                                    1D      ; refresh
                                    1H      ; retry
                                    1W      ; expire
                                    3H )    ; minimum
        NS      dns1
dns1    A       192.168.28.136  //这里的IP后面不用加点,因为系统可以
                              //自动识别这是一个IP地址,而不是一个域名。

136(系统会自动补全为:192.168.28.136)        PTR     dns1.qq.com.    
//这里必须要在最后加上点,
//否则系统补全时会自动加上 37.168.192.in-addr.arpa 后缀。

//最后重新加载该服务即可:rndc reload

五、配置从DNS服务器

创建从DNS服务器只需要在从DNS服务器的/etc/named.rfc1912.zones文件里了添加以下内容即可:

zone "ZONE.NAME" IN {   //域名必须要和主DNS服务器里设置的一样。
        type slave;  //因为是从服务器,所以类型要设为 slave。
        masters     { 主DNS服务器的IP地址; };

        file "slaves/ZONE.NAME.zone.slave"  
        //从DNS服务器把从主DNS服务器上复制过来的文件放到了
        // /var/named/slaves 目录下;文件名可以随意定义,
        //复制到从服务器上时,系统会自动将复制来的文件名改为设定好的名称,
        //但建议设置的名称最好能便于理解和识别。
};

设置好后重启服务即可!

最后需要在主DNS服务器上的/var/named/ZONE_NAME.zone 文件里添加将该从服务的NS记录;同时若想要实现主从服务器的数据同步,在修改好主服务器的/var/named/ZONE_NAME.zone 文件时,必须将该文件里的 序列号 增大才行,增大并保存退出后,主服务器会自动向从服务器推送(push)修改后的文件内容;
还以一点就是必须要将 从DNS服务器的 /etc/named.conf 文件中 options 字段中的 listen-on 与 allow-query 选项注释掉。

从服务器也可以作为其他从服务器的主服务器!!!

注意:
为了安全,在创建主从服务器时要在主DNS服务器上的/etc/named.conf 文件里的options内容里添加一个 allow-transfer { 从DNS服务器IP地址;}; ,意思就是只允许该IP地址的从DNS服务器与该主DNS服务器同步数据;在从DNS服务器上也要在相同的地方设置该选项 allow-transfer { none; }; ,意思就是不允许其他的DNS服务器从该从DNS服务器上同步或抓取DNS配置数据了。

从服务器在首次向主服务器拉(pull)数据时,是完全传输(传输整个解析库),其他时候都是增量传输(只传输改变的部分)。

DNS协议走udp协议的 53 端口既影响用户查询,也影响主从服务器的数据同步;而走TCP协议的 53 端口只影响主从服务器的数据同,不影响用户查询。

六、子域的创建

子域的创建分为两种,一种是子域与父域在同一主机上,另一种是子域与父域不在同一主机上。

//(1)子域与父域在同一主机上时:该方式适用于访问量较小的情况。
//直接在/var/named/ZONE_NAME.zone文件上进行修改即可。
[root@CentOS6 ~]# vim /var/named/qq.com.zone 
$TTL 1D  //定义缓存过期时间
@       IN SOA  dns1 rname.invalid. (
                                    0       ; serial
                                    1D      ; refresh
                                    1H      ; retry
                                    1W      ; expire
                                    3H )    ; minimum
        NS      dns1
dns1    A       192.168.28.136 
www.henan   A   192.168.28.137  //子域域名及IP地址

//然后重载该服务即可 rndc reload

说明:此时的子域实际上就是名为 www.henan 的主机,真正的域还是 qq.com 。

//(2)子域与父域不在同一主机上:该情况适用于访问量较大的情况。
//设置方法与设置父域的方式是一样的:
[root@CentOS6 ~]# vim /etc/named.rfc1912.zones 
zone "henan.qq.com" IN {
    type master;
    file "henan.qq.com.zone";
};

//然后再创建/var/named/henan.qq.com.zone文件
[root@CentOS6 ~]# vim /var/named/henan.qq.com.zone 
$TTL 1D
@       IN SOA  dns1 rname.invalid. (
                                    0       ; serial
                                    1D      ; refresh
                                    1H      ; retry
                                    1W      ; expire
                                    3H )    ; minimum
        NS      dns1
dns1    A       192.168.28.136
www     A       22.22.22.22

然后保存退出,并重启该服务:rndc reload即可。

说明:该方法实际是有一个名为 henan.qq.com 的实际域,不是一个以 qq.com 的。

//(3)委派:就是将一个子域交给一个DNS服务器单独进行管理。
//委派的创建就是在主DNS服务器的/var/named/ZONE_NAME.zone 文件里
//添加一些内容即可:
[root@CentOS6 ~]# vim /var/named/qq.com.zone 
$TTL 1D
@       IN SOA  dns1 rname.invalid. (
                                    0       ; serial
                                    1D      ; refresh
                                    1H      ; retry
                                    1W      ; expire
                                    3H )    ; minimum
        NS      dns1
henan   NS      dns2    //该NS记录的意思就是:以qq.com为主域的
                        // henna.qq.com 子域的DNS服务器的域名,
                        //并配合 A 记录解析其IP地址。
dns1    A       192.168.28.136
dns2    A       192.168.28.138
www     A       22.22.22.22

//上面的父域设置好后,就需要在子域主机上的DNS服务配置文件上设置好
// henan.qq.com 域的配置文件即可。
//配置方法与创建 qq.com 域的方法是一样的。
[root@CentOS6 ~]# vim /etc/named.rfc1912.zones 
zone "henan.qq.com" IN {
        type master;
        file "henan.qq.com.zone";
};

//设置完后再重启DNS服务即可:rndc reload 。

七、转发服务器

注意:被转发的服务器需要能够为请求者做递归,否则转发请求不予进行

    //(1) 全局转发: 对非本机所负责解析区域的请求, 全转发给指定的服务器。
    //直接在/etc/named.conf 文件的 options 字段中进行配置即可。
    Options {
            forward first|only;  //如果该选项未显式设置,
                                //则默认为 first ,意为若该DNS服务器
                                //优先向转发服务器查询,若转发服务器
                                //查询不到时,就自己进行递归查询;
                                //若为 only ,意为不做递归,直接将请求
                                //转交给转发列表里的DNS服务器进行查询,
                                //若转发服务器里没有,则直接返回给客户端
                                //查询失败的结果。
            forwarders { ip;};  //转发列表。
    };

    //(2) 特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高。
        //设置方法是直接单独建立一个 zone 文件,
        //但是要在 /etc/named.rfc1912.zones 文件中进行定义。
    zone "ZONE_NAME" IN {
            type forward;  //类型。
            forward first|only; 
            forwarders { IP地址;};
    };

    //注意:要关闭/etc/named.conf 文件中options字段中的dnssec选项:
         //dnssec-enable no;    
         //dnssec-validation no;
         //不使用安全认证机制,若开启服务不能正常进行。

八、智能DNS

(1)创建zone文件,与创建ZONE.NAME.zone文件的方式相同。
    /var/named/qq.com.zone.nehan
    /var/named/qq.com.zone.beijing

(2) 创建ACL
  ACL要定义在 /etc/named.conf 文件中的 options 部分之前。
  acl: 把一个或多个地址归并为一个集合,并通过一个统一的名称调用
    格式:
        acl acl_name {
                ip;     单独的IP地址
                net/prelen; 网段/掩码
                ……
        };

    示例: 
        acl henannet { 
                192.168.37.0/24;
                192.168.38.0/24;
        };
        acl beijingnet {
                172.17.0.0/16;
                172.18.0.0/16;
        };

(3)创建VIEW
    view和ACL一样也都是要定义在 /etc/named.conf 文件中,一旦定义了 view ,则在该文件中定义的其他所有 zone 内容都将会失效,所以最好将这些 zone 内容全部都定义到 /etc/named.rfc1912.zones 文件中,然后再调用 /etc/named.rfc1912.zones 文件即可。

    注意:
        1) 一旦启用了view,所有的zone都只能定义在view中;
        2) 仅在允许递归请求的客户端所在view中定义根区域;
        3) 客户端请求到达时,是自上而下检查每个view所服务的客户端列表。

    view:视图:
        一个bind服务器可定义多个view,每个view中可定义一个或多个zone; 
        每个view用来匹配一组客户端;
        多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件。

    格式:
        view VIEW_NAME {
                match-clients { ACL_File; };  定义好的相应ACL文件,可以放置多个。
                zone “ZONE.NAME” {  指定允许的区域。
                        type master;
                        file “ZONE.NAME.zone”; };
                include “/etc/named.rfc1912.zones”; 
        };

示例:
    view  beijingview {
            match-clients { beijingnet;};
            zone "qq.com" {
                    type master;
                    file "qq.com.zone.beijing";
            };

            zone "." IN {
                    type hint;
                    file "named.ca";
            };
    };

    view  henanview {
            match-clients {henannet;};
            include "/etc/named.rfc1912.zones.henan"; 
            //将zone内容定义到该文件中,再对该文件进行调用,
            //该文件可以被多次调用。

            zone "." IN {
                    type hint;
                    file "named.ca";
            };
    };

    view otherview {  //为其他未被ACL包含的地址设置默认访问。
            match-clients {any;};   
            include "/etc/named.rfc1912.zones";
    };

(4)配置好 /var/named/ZONE_NAME.zone 文件即可,该文件名的命名规则与上面要求的一样,配置方式与普通的一样。

(5)最后重启服务进行测试即可。

九、关闭SELinux与防火墙策略。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
部署备份DNS服务器可以通过构建从域名服务器来实现。从域名服务器作为备份服务提供域名解析服务,当主域名服务器出现故障、关闭或负载过重时,从域名服务器会提供解析结果。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。这样,在主域名服务器无法正常工作时,备份DNS服务器可以提供域名解析服务。 具体部署备份DNS服务器的步骤如下: 1. 在辅助服务器上备份区域:选中所要备份的区域,右键点击属性,进入区域复制设置,只允许下列服务器(辅助服务器)进行复制。 2. 在辅助服务器上新建正向区域:创建辅助区域并填入名称(例如baidu.com),同时添加主服务器的IP地址。这样辅助服务器就能通过同步主服务器的数据来备份域名解析信息。 3. 完成创建,备份DNS服务器即可使用。 通过以上步骤,您可以成功部署备份DNS服务器,以提供域名解析服务当主服务器出现故障时。请注意,备份DNS服务器在主服务器恢复正常后会自动同步数据,确保数据的一致性和可靠性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [DNS概述和DNS服务器部署(详细正向解析)](https://blog.csdn.net/weixin_46514551/article/details/125422321)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [windows dns服务器部署](https://blog.csdn.net/weixin_64021833/article/details/127987404)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值