介绍
在本教程中,我们将学习如何在主/从配置中设置PowerDNS,并从主DNS服务器到从设备进行自动复制。本教程是我们的第二个教程 PowerDNS系列的Ubuntu。 主/从配置提供额外的可靠性。如果您的一个PowerDNS服务器关闭,您将有一个辅助服务器来处理请求。 我们建议在独立的数据中心配置这些服务器。如果它们在两个物理位置,则即使数据中心中断也不会影响您的DNS服务。 在本教程结束时,我们将有两个使用主/从复制的功能PowerDNS服务器。先决条件
请完成以下要求:- 两个512 MB或更大的Ubuntu 14.04 64位。 512 MB应该有足够的运行具有中等数量的区域/记录的PowerDNS服务器
- 一个sudo的用户
- 如何安装和在Ubuntu 14.04配置与MariaDB的后端PowerDNS (在第1步中详细说明)
- 在您的注册商配置的域的胶点记录和Nameservers设置
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
(从属服务器)
第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主服务器上由visitnghttp:// 111.111.111.111 /poweradmin/
在浏览器中。
使用您之前设置的管理员凭据登录。 点击
添加主区域链接创建一个新的区域文件。 你可以用原来的名字还是一个新的领域
,test.com测试。
输入您的顶级域名,并单击
Add按钮
区创建区域。
你的Nameservers创建
NS条目:
- hostmaster.example-dns.com
- ns1.example-dns.com
- ns2.example-dns.com
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.com和
ns2.example-dns.com后才生效。