前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 14.04上的从属PowerDNS服务器上配置DNS复制 ###

如何在Ubuntu 14.04上的从属PowerDNS服务器上配置DNS复制 ###

原创
作者头像
陈树丶
修改2018-09-25 10:23:31
1.8K0
修改2018-09-25 10:23:31
举报
文章被收录于专栏:云计算教程系列

介绍

在本教程中,我们将学习如何在主/从配置中设置PowerDNS,并从主DNS服务器到从服务器进行自动复制。

主/从配置提供额外的可靠性。如果其中一个PowerDNS服务器出现故障,您将拥有一个辅助服务器来处理请求。

我们建议在单独的数据中心中配置这些服务器。如果它们位于两个物理位置,那么即使数据中心中断也不会影响您的DNS服务。

在本教程结束时,我们将使用两个功能强大的PowerDNS服务器,使用主/从复制。

要完成本教程,您需要具备一台已经设置好可以使用sudo命令的非root账号的Ubuntu服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

准备

请完成以下要求:

  • 两个512 MB Droplet或更大的64位Ubuntu 14.04服务器。运行具有中等数量区域/记录的PowerDNS服务器应该足够512 MB
  • 一个拥有sudo权限的用户
  • 在Ubuntu 14.04上使用MariaDB后端安装和配置PowerDNS
  • 针对在注册商处配置的域的胶水记录和名称服务器设置

在我们之前的教程中,我们将三个子域指向单个PowerDNS服务器。我们现在将使用其中一个子域指向我们的从属服务器。在我们的示例中,我们的主服务器IP将是111.111.111.111,我们的从服务器IP将是222.222.222.222

您需要相应地更新胶粘记录。请使用以下信息作为指导。有关配置DNS记录的详细信息,请参阅以前的PowerDNS教程。

  • hostmaster.example-dns.com 111.111.111.111 (主服务器)
  • ns1.example-dns.com 111.111.111.111(主服务器)
  • ns2.example-dns.com 222.222.222.222 (从服务器)

请注意,您应该在注册商处为名称服务器本身使用的域设置粘合记录和SOA记录。另一方面,对于要在自定义名称服务器上托管其区域文件的其他域,您只需要SOA记录。

步骤1 - 在两台服务器上安装PowerDNS

首先,我们需要有两个功能强大的PowerDNS服务器。一台服务器将成为我们的主服务器,而另一台服务器将成为我们的从服务器。

如果您还没有这样做,请在Ubuntu 14.04上使用MariaDB后端安装和配置PowerDNS。

当您有两个功能强大的PowerDNS服务器(其中至少有一个运行Poweradmin)时,您可以继续执行下一步。

步骤2 - 配置主服务器(ns1.example-dns.com)

我们现在准备配置我们的主PowerDNS服务器。

这应该是安装了Poweradmin的服务器,并且将被视为您的主DNS服务器。如果在两台服务器上都安装了Poweradmin,则可以使用其中一台服务器。如果您按照此示例操作的,则这应为ns1.example-dns.com

备份原始配置文件。

代码语言:javascript
复制
cd /etc/powerdns
sudo mv pdns.conf pdns.conf.orig

创建我们的新配置文件。

代码语言:javascript
复制
sudo nano pdns.conf

以下详细信息适用于具有单个从属服务器的标准主服务器配置。我们将输入从服务器IP地址,允许它与该主服务器通信。请记住在下面替换您自己的从属服务器IP地址

注意:/ 32是单个IP子网,是此配置所必需的。

代码语言:javascript
复制
allow-recursion=0.0.0.0/0
allow-axfr-ips=222.222.222.222/32
config-dir=/etc/powerdns
daemon=yes
disable-axfr=no
guardian=yes
local-address=0.0.0.0
local-port=53
log-dns-details=on
log-failed-updates=on
loglevel=3
module-dir=/usr/lib/powerdns
master=yes
slave=no
setgid=pdns
setuid=pdns
socket-dir=/var/run
version-string=powerdns
include-dir=/etc/powerdns/pdns.d

重新启动PowerDNS服务以使更改生效。

代码语言:javascript
复制
sudo service pdns restart

步骤3 - 配置从属服务器(ns2.example-dns.com)

现在我们准备配置我们的从服务器了。此服务器将从我们刚刚配置的主服务器复制DNS区域。如果您跟随示例操作的,则这应该是ns2.example-dns.com

备份原始配置文件。

代码语言:javascript
复制
cd /etc/powerdns
sudo mv pdns.conf pdns.conf.orig

创建新配置文件。

代码语言:javascript
复制
sudo nano pdns.conf

以下详细信息适用于标准从服务器配置,刷新间隔为60秒。您可以完全复制配置。

代码语言:javascript
复制
allow-recursion=0.0.0.0/0
config-dir=/etc/powerdns
daemon=yes
disable-axfr=yes
guardian=yes
local-address=0.0.0.0
local-port=53
log-dns-details=on
log-failed-updates=on
loglevel=3
module-dir=/usr/lib/powerdns
master=no
slave=yes
slave-cycle-interval=60
setgid=pdns
setuid=pdns
socket-dir=/var/run
version-string=powerdns
include-dir=/etc/powerdns/pdns.d

每隔60秒,从服务器将向主服务器查询区域更新。通常,在更新区域时,主服务器将向分配给该区域的从属服务器发送通知。但是,如果在区域更新期间出现连接问题,则可确保更新最终在再次联机时推送到从属服务器。

接下来,我们需要告诉PowerDNS如何与主服务器通信。

使用您创建的PowerDNS用户名和密码登录MariaDB。我们的例子用的是powerdns_user

代码语言:javascript
复制
mysql -u powerdns_user -p

在提示符下输入您的密码:

代码语言:javascript
复制
Output
Enter password:

切换到您配置的PowerDNS数据库。我们的建议是powerdns

代码语言:javascript
复制
USE powerdns;

接下来,我们将在supermasters表格中创建一个新行。此行将指定主服务器IP地址以及我们当前正在配置的从属服务器的完全限定域名(FQDN)

代码语言:javascript
复制
insert into supermasters values ('111.111.111.111', 'ns2.example-dns.com', 'admin');

我们现在可以退出MariaDB shell。

代码语言:javascript
复制
exit;

重新启动PowerDNS服务以使更改生效。

代码语言:javascript
复制
sudo service pdns restart

第4步 - 测试主/从连接

此步骤要求ns1.example-dns.com指向主服务器,ns2.example-dns.com指向您的从服务器。

如果胶水记录,SOA记录和A记录尚未传播,则可以向/etc/hosts文件添加覆盖。您将希望在两台服务器上执行此操作。

使用nano打开/etc/hosts

代码语言:javascript
复制
sudo nano /etc/hosts

将条目添加到您的/etc/hosts文件中。

代码语言:javascript
复制
111.111.111.111 ns1.example-dns.com
222.222.222.222 ns2.example-dns.com

让我们确保我们的两台服务器现在可以通信。

主服务器 ping两个主机名。

代码语言:javascript
复制
ping ns1.example-dns.com

您的结果应如下所示:

代码语言:javascript
复制
Output
64 bytes from ns1.example-dns.com (111.111.111.111): icmp_seq=1 ttl=64 time=0.061 ms

Ping从服务器:

代码语言:javascript
复制
ping ns2.example-dns.com

预期结果:

代码语言:javascript
复制
Output
64 bytes from ns2.example-dns.com (222.222.222.222): icmp_seq=1 ttl=64 time=48.8 ms

现在,使用相同的命令从您的从服务器 ping两个主机名。当您可以从两个服务器ping两个服务器时,继续下一步。

步骤5 - 使用复制配置DNS区域

如果两台服务器都正常通信,我们就可以创建第一个具有主/从复制的DNS区域。

通过访问浏览器中的http://111.111.111.111/poweradmin/登录主服务器上的Poweradmin 。

使用您之前设置的管理员凭据登录。

单击“ 添加主区域”链接以创建新的区域文件。您可以使用原始名称或新域test.com对此进行测试。

输入您的顶级域名,然后单击“ 添加区域”按钮以创建区域。

为您的名称服务器创建NS条目:

  • hostmaster.example-dns.com
  • ns1.example-dns.com
  • ns2.example-dns.com

创建至少一条A记录以测试复制。

注意:如果未将Slave Server列为区域的名称服务器,则不会复制该区域。

几秒钟后,新条目应传播到从属服务器。

使用dig测试保存在ns1.example-dns.com的DNS记录。

代码语言:javascript
复制
dig test.com A @ns1.example-dns.com

它应该回应类似于下面的结果。

代码语言:javascript
复制
Output
root@ns1:/etc/powerdns# dig test.com A @ns1.example-dns.com
​
; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> test.com A @ns1.example-dns.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44833
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
​
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 2800
;; QUESTION SECTION:
;test.com.                      IN      A
​
;; ANSWER SECTION:
test.com.               86400   IN      A       104.131.174.138
​
;; Query time: 2 msec
;; SERVER: 45.55.217.94#53(45.55.217.94)
;; WHEN: Tue Apr 28 18:06:54 EDT 2015
;; MSG SIZE  rcvd: 53

使用dig测试保存在ns2.example-dns.com的DNS记录。

代码语言:javascript
复制
dig test.com A @ns2.example-dns.com

它应该回应类似于下面的结果。

代码语言:javascript
复制
Output
root@ns1:/etc/powerdns# dig test.com A @ns2.example-dns.com
​
; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> test.com A @ns2.example-dns.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11530
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
​
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 2800
;; QUESTION SECTION:
;test.com.                      IN      A
​
;; ANSWER SECTION:
test.com.               86400   IN      A       104.131.174.138
​
;; Query time: 3 msec
;; SERVER: 45.55.217.132#53(45.55.217.132)
;; WHEN: Tue Apr 28 18:08:06 EDT 2015
;; MSG SIZE  rcvd: 53

请记住,只有在注册商处将名称服务器设置为ns1.example-dns.comns2.example-dns.com后,test.com的设置才会生效

结论

我们现在有两个功能强大的PowerDNS服务器,在主/从配置中使用MariaDB后端。

任何时候对主服务器上的主区域进行更改时,它都会通知列出自己的NS记录的所有从属服务器。

从服务器将自动向主服务器查询最近未更新的记录,确保您的DNS记录在PowerDNS节点之间保持同步。

想要了解更多关于配置DNS复制的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Configure DNS Replication on a Slave PowerDNS Server on Ubuntu 14.04》

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 步骤1 - 在两台服务器上安装PowerDNS
  • 步骤2 - 配置主服务器(ns1.example-dns.com)
  • 步骤3 - 配置从属服务器(ns2.example-dns.com)
  • 第4步 - 测试主/从连接
  • 步骤5 - 使用复制配置DNS区域
  • 结论
相关产品与服务
云数据库 MariaDB
腾讯云数据库 MariaDB(TencentDB for MariaDB) 让您轻松在云端部署、使用 MariaDB 数据库。MariaDB 是在 MySQL 版权被 Oracle 收购后,由 MySQL 创始人 Monty 创立,其版权授予了“MariaDB基金会(非营利性组织)”以保证 MariaDB 永远开源,良好的开源策略,是企业级应用的最优选择,主流开源社区系统/软件的数据库系统,均已默认配置 MariaDB。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档