专栏首页前端之心如何搭建主从架构的 DNS 服务器
原创

如何搭建主从架构的 DNS 服务器

前面我们介绍了如何搭建 DNS 服务器以及如何往 DNS 服务器添加反向解析记录,本文将在前面的基础上告诉大家如何搭建主从架构的 DNS 服务器。

DNS 服务器集群架构

DNS 服务器通常以集群的方式提供服务,一台主服务器和多台从服务器,从服务器启动时从主服务器进行解析库的完全同步,运行时以一定的时间间隔进行增量刷新同步,从而保证记录的一致性,若从服务器超过一定的时间无法与主服务器同步刷新则从服务器记录会过期失效,无法提供解析服务。

动手前的准备

为方便讲解起见,我们以搭建一主一从的 DNS 服务器集群为例进行介绍。为搭建集群,需要准备两台 centos 的机器,我们可以通过腾讯云开发者实验室领取免费实验机器。假设我们领取到的机器分别为主服务器(外网 IP 为182.254.232.147/内网 IP 为10.135.45.55),从服务器(外网 IP 为123.207.40.140/内网 IP 为10.186.8.20),现在我们可以开始动手实践了。

部署 DNS 服务

在两台备用机器上分别通过如下步骤部署 DNS 服务,详细部署过程可以参考快速搭建 DNS 服务器

  • 通过 yum 命令安装 BIND 软件包:yum install -y bind*;
  • 执行 systemctl start named.service 启动 DNS 服务;

配置主 DNS 服务器

  • 修改 /etc/named.conf 配置文件,将监听 IP 修改为主服务器 IP 地址10.135.45.55,allow-query 取值修改为 any,如截图所示;
  • 修改 /etc/named.rfc1912.zones 配置文件,将正向解析域和反向解析域的配置加入配置文件,其中 type 为 master 表示主服务器,allow-transfer 取值为从服务器 123.207.40.140,表示允许指定的从服务器同步 zone;
zone "qq.com" IN {
        type master;
        file "data/qq.com.zone";
        allow-transfer {123.207.40.140;};
};

zone "8.168.192.in-addr.arpa" IN {
        type master;
        file "data/192.168.8.zone";
        allow-transfer {123.207.40.140;};
};
  • 新增 /var/named/data/qq.com.zone 配置文件,配置内容如下所示;
$TTL 1D
@       IN SOA  dns1.qq.com. webmaster.qq.com. (
                                        20181124      ; serial
                                        30S      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@                       IN      NS      dns1.qq.com.
dns1.qq.com.          IN      A       182.254.232.147
@                       IN      NS      dns2.qq.com.
dns2.qq.com.          IN      A       123.207.40.140
www.qq.com.           IN      A       192.168.8.8
  • 新增 /var/named/data/192.168.8.zone 配置文件,配置内容如下所示;
$TTL 1D
@       IN SOA  dns1.qq.com. webmaster.qq.com. (
                                        20181124      ; serial
                                        30S      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@               IN      NS      dns1.qq.com.
@               IN      NS      dns2.qq.com.
8              IN      PTR     www.qq.com.
  • 执行命令 systemctl  restart  named.service,重启主 DNS 服务器;

配置从 DNS 服务器

  • 修改 /etc/named.conf 配置文件,将监听 IP 修改为从服务器 IP 地址10.186.8.20,allow-query 取值修改为 any,如截图所示;
  • 修改 /etc/named.rfc1912.zones 配置文件,将正向解析域和反向解析域的配置加入配置文件,其中 type 为 slave 表示从服务器,allow-transfer 取值为主服务器 IP 182.254.232.147,表示从主服务器同步 zone;
zone "qq.com" IN {
        type slave;
        file "data/qq.com.zone";
        masters { 182.254.232.147; };
        allow-transfer {182.254.232.147;};
};

zone "8.168.192.in-addr.arpa" IN {
        type slave;
        file "data/192.168.8.zone";
        masters { 182.254.232.147; };
        allow-transfer {182.254.232.147;};
};
  • 执行命令 systemctl  restart  named.service,重启从 DNS 服务器;

验证 DNS 服务器有效性

  • 在从服务器上执行命令 ll /var/named/data/,发现从主 DNS 服务器同步了两个 zone 配置文件;
  • 通过修改 PC 电脑的 /etc/resolv.conf 配置文件指定 nameserver,将 PC 的默认 DNS 服务器设置为我们搭建的 DNS 服务器;
  • 通过 PC 电脑执行命令 dig -t a www.qq.com 查看解析情况,如我们所预期的,域名www.qq.com 被解析到8.8.8.8,同时 qq.com的权威服务器变成了 dns.qq.com(指向 IP 为123.207.8.164);
  • 修改主服务器正向解析域和反向解析域的配置中 www.qq.com 对应的 IP,等待30秒后,通过 dig @182.254.232.147 -t a www.qq.com 查看从服务器的解析情况,可以看到主服务器的修改已经增量同步到从服务器;

到目前为止,我们已经可以构建一套完整的 DNS 服务,具备主从架构和正反向域名解析能力,我们也从中详细了解了 域名解析的系列知识点。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 域名解析详解

    我们知道网络通讯基本上是基于TCP/IP的,而TCP/IP以IP地址为基础,而域名仅仅是为了方便人类的记忆而设计的名称,计算机在网络中进行通讯时不能识别域名,只...

    9527
  • 快速搭建 DNS 服务器

    前面几篇文章我们介绍了域名解析,介绍了如何通过 dig 命令洞察 DNS 解析的过程,并从 DNS 协议的层面分析了全球为什么只有13组根域名服务器,本文向大家...

    9527
  • dig 命令洞察 DNS 解析过程

    在上一篇文章,我们介绍了域名解析的过程,本章我们将介绍一个实用的工具---dig命令,通过dig命令我们可以查看 DNS 解析的过程,以便我们更好的理解 DNS...

    9527
  • Tuning a random forest model调试随机森林模型

    In the previous recipe, we reviewed how to use the random forest classifier. In ...

    到不了的都叫做远方
  • What do we mean by “understanding” something?

    In this chapter, we shall examine the most fundamental ideas that we have about ...

    一个会写诗的程序员
  • Visual Studio Code环境变量配置

    Setup will add Visual Studio Code to your %PATH%, so from the console you can ty...

    Jerry Wang
  • 数据仓库专题(23):总线矩阵的另类应用-Drill Down into a More Detailed Bus Matrix

    Many of you are already familiar with the data warehouse bus architecture and m...

    数据饕餮
  • 具有魔力感的正式方法(cs.LO)

    机器学习和正式方法有互为补充的优点和缺点。在这项工作中,我们结合两个领域的技术来解决控制器设计问题。在深度强化学习(深度RL)中使用黑盒神经网络对这种组合提出了...

    Donuts_choco
  • How AI is Changing the Future of Web Development?

    How Artificial Intelligence is changing the future of web development? What is t...

    用户4822892
  • Using many Decision Trees – random forests使用多棵决策树--随机森林

    In this recipe, we'll use random forests for classification tasks. random forest...

    到不了的都叫做远方

扫码关注云+社区

领取腾讯云代金券