前面我们介绍了如何搭建 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 服务,具备主从架构和正反向域名解析能力,我们也从中详细了解了 域名解析的系列知识点。