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

介绍

在本教程中,我们将学习如何在主/从配置中设置PowerDNS,并从主DNS服务器到从设备进行自动复制。本教程是我们的第二个教程 PowerDNS系列的Ubuntu。 主/从配置提供额外的可靠性。如果您的一个PowerDNS服务器关闭,您将有一个辅助服务器来处理请求。 我们建议在独立的数据中心配置这些服务器。如果它们在两个物理位置,则即使数据中心中断也不会影响您的DNS服务。 在本教程结束时,我们将有两个使用主/从复制的功能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 (从属服务器)
请注意,您应该在注册器中为Nameservers本身设置的域中设置胶合记录和SOA记录。另一方面,对于您希望在自定义Nameservers上托管区域文件的其他域,您只需要SOA记录。

第1步 - 在两个服务器上安装PowerDNS

首先,我们需要有两个功能PowerDNS服务器。一个服务器将成为我们的主服务器,而第二个将成为我们的从服务器。 如果你还没有这样做的话,请按照前面的教程, 如何在Ubuntu 14.04安装和配置与MariaDB的后端PowerDNS 。 您应按照您的 主服务器上的完整的教程。 您可以按照刚才第1步-7的 从服务器上,因为我们不需要辅助服务器上Poweradmin。 当您有两个功能PowerDNS服务器,至少有一个运行Poweradmin,您可以继续下一步。

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

我们现在准备配置我们的主PowerDNS服务器。 这应该是已经安装Poweradmin的服务器,将被视为您的 主DNS服务器 。 如果在两台服务器上都安装了Poweradmin,则可以使用其中一个。 如果你在下面这个例子中,这应该是 ns1.example-dns.com。 备份原始配置文件。
cd /etc/powerdns
sudo mv pdns.conf pdns.conf.orig
创建我们的新配置文件。
sudo nano pdns.conf
以下详细信息适用于具有单个从属服务器的标准主服务器配置。我们将输入从服务器的IP地址,允许它与这个主服务器通信。请记住以下替换自己的 从属服务器的IP地址注意:/ 32是单个IP子网,并且是此配置所需的。
/etc/powerdns/pdns.conf
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服务以使更改生效。
sudo service pdns restart

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

现在,我们已经准备好来配置我们 从服务器 。 此服务器将从我们刚配置的主服务器复制DNS区域。 如果你使用的示例进行操作,这应该是 ns2.example-dns.com。 备份原始配置文件。
cd /etc/powerdns
sudo mv pdns.conf pdns.conf.orig
创建新的配置文件。
sudo nano pdns.conf
以下详细信息适用于具有60秒刷新间隔的标准从服务器配置。您可以完全复制配置。
/etc/powerdns/pdns.conf
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
mysql -u powerdns_user -p
在提示符下输入密码:
OutputEnter password:
更改到您在上一教程中配置的PowerDNS数据库。我们的建议是 powerdns
USE powerdns;
接下来我们将箱子中的一个新行 supermasters表。 该行会指定 主服务器的IP地址,我们目前 配置从属服务器的完全限定域名 (FQDN)。
insert into supermasters values ('111.111.111.111', 'ns2.example-dns.com', 'admin');
我们现在可以退出MariaDB shell了。
exit;
重新启动PowerDNS服务以使更改生效。
sudo service pdns restart

第4步 - 测试主/从连接

这一步需要 ns1.example-dns.com是指向你的主服务器,并 ns2.example-dns.com将指向你从服务器。 如果你的胶水记录,SOA记录和A记录尚未传播,可以一个覆盖添加到您的 /etc/hosts的文件。 你会想这样做 两台服务器上。 打开 /etc/hosts使用纳米。
sudo nano /etc/hosts
条目添加到您的 /etc/hosts的文件。
/ etc / hosts
111.111.111.111 ns1.example-dns.com
222.222.222.222 ns2.example-dns.com
让我们确保我们的两个服务器现在可以沟通。 从你的 主服务器 ,ping通两个主机名。
ping ns1.example-dns.com
您的结果应如下所示:
Output64 bytes from ns1.example-dns.com (111.111.111.111): icmp_seq=1 ttl=64 time=0.061 ms
Ping从服务器:
ping ns2.example-dns.com
预期结果:
Output64 bytes from ns2.example-dns.com (222.222.222.222): icmp_seq=1 ttl=64 time=48.8 ms
现在,从您的 从服务器 ping通两个主机名,使用相同的命令。一旦您可以从两个服务器ping两个服务器,请继续。

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

如果两个服务器都正常通信,我们就可以创建我们的第一个带有主/从复制的DNS区域。 登录到您的Poweradmin主服务器上由visitng http:// 111.111.111.111 /poweradmin/在浏览器中。 Poweradmin登录屏幕 使用您之前设置的管理员凭据登录。 点击 添加主区域链接创建一个新的区域文件。 你可以用原来的名字还是一个新的领域 ,test.com测试。 单击添加主区域链接 输入您的顶级域名,并单击 Add按钮 创建区域。 在区域名称字段中输入您的域名 你的Nameservers创建 NS条目:
  • hostmaster.example-dns.com
  • ns1.example-dns.com
  • ns2.example-dns.com
至少创建一个测试复制 记录。 添加您的NS和A记录 注意:如果您的从属服务器未列为区域的Nameservers,则它不会复制区域。 几秒钟后,新的条目应传播到您的从服务器。 测试使用在 ns1.example-dns.com保存DNS记录 dig
dig test.com A @ns1.example-dns.com
它应该响应类似下面的结果。
Outputroot@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

测试使用在 ns2.example-dns.com保存DNS记录 dig
dig test.com A @ns2.example-dns.com
它应该响应类似下面的结果。
Outputroot@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
请记住 ,test.com的设置将在您的注册设置你的域名服务器 ns1.example-dns.comns2.example-dns.com后才生效。

结论

我们现在有两个功能PowerDNS服务器在主/从配置中使用MariaDB后端。 任何时候更改了主服务器上的主区域制成,它会通知自己的 NS记录 列出的任何从属服务器。 从服务器将自动向主服务器查询最近未更新的记录,确保您的DNS记录在您的PowerDNS节点之间保持同步。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏