Как настроить репликацию DNS на подчиненном сервере PowerDNS в Ubuntu 14.04

Вступление

В этом уроке мы узнаем, как настроить PowerDNS в конфигурации master / slave с автоматической репликацией с главного DNS-сервера на slave. Этот учебник является вторым учебником в нашем https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-powerdns-with-a-mariadb-backend-on-ubuntu-14-04 [ PowerDNS] серия для Ubuntu.

Конфигурация ведущий / ведомый обеспечивает дополнительную надежность. Если один из ваших серверов PowerDNS выйдет из строя, у вас будет дополнительный сервер для обработки запросов.

Мы рекомендуем предоставлять эти серверы в отдельных дата-центрах. Если они находятся в двух физических местах, то даже перерыв в работе центра обработки данных не повлияет на вашу службу DNS.

К концу этого урока у нас будет два функциональных сервера PowerDNS, использующих репликацию master / slave.

Предпосылки

Пожалуйста, заполните эти требования:

  • Две капли объемом 512 МБ или более с 64-разрядной версией Ubuntu 14.04. 512 МБ должно хватить для запуска сервера PowerDNS с умеренным количеством зон / записей

  • Https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-an-ubuntu-14-04-vps[sudo user]

  • Как установить и настроить PowerDNS с помощью MariaDB Backend в Ubuntu 14.04 (подробности в шаге 1)

  • Склейте записи и настройки сервера имен для доменов, настроенных у вашего регистратора

В нашем предыдущем уроке мы указали три субдомена на одном сервере PowerDNS. Теперь мы будем использовать один из этих поддоменов для указания на наш подчиненный сервер. В наших примерах нашим * IP * главного сервера будет `, а нашим * IP * подчиненного сервера * будет `.

Вам необходимо будет обновить склеенные записи с вашим провайдером соответственно. Пожалуйста, используйте информацию ниже в качестве руководства. См. Предыдущее руководство по PowerDNS для получения дополнительной информации о настройке записей DNS.

  • * hostmaster.example-dns.com * ++ (главный сервер)

  • * ns1.example-dns.com * ++ (главный сервер)

  • * ns2.example-dns.com * ++ (подчиненный сервер)

Обратите внимание, что вы должны настроить как клейкие записи, так и записи SOA у своего регистратора для домена, используемого для самих серверов имен. С другой стороны, вам нужны только записи SOA для других доменов, файлы зон которых вы хотите разместить на своих пользовательских серверах имен.

Шаг 1 - Установите PowerDNS на обоих серверах

Во-первых, нам нужно иметь два функциональных сервера PowerDNS. Один сервер станет нашим главным сервером, а второй станет нашим подчиненным сервером.

Если вы этого еще не сделали, следуйте предыдущему руководству: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-powerdns-with-a-mariadb-backend-on -ubuntu-14-04 [Как установить и настроить PowerDNS с бэкэндом MariaDB в Ubuntu 14.04].

Вы должны следовать полному руководству на вашем * главном сервере *.

Вы можете выполнить только шаги 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=/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, как связаться с главным сервером.

Войдите в MariaDB с именем пользователя и паролем PowerDNS, которые вы создали в предыдущем руководстве. В нашем примере использовалось + powerdns_user +.

mysql -u  -p

Введите пароль в командной строке:

OutputEnter password:

Перейдите в базу данных PowerDNS, настроенную в предыдущем руководстве. Наша рекомендация была + powerdns +.

USE powerdns;

Далее мы создадим новую строку в таблице + super master. В этой строке указывается * IP-адрес главного сервера * и Полное доменное имя * (FQDN) подчиненного сервера *, который мы в настоящее время настраиваем.

insert into supermasters values ('', '', 'admin');

Теперь мы можем выйти из оболочки MariaDB.

exit;

Перезапустите службу PowerDNS, чтобы изменения вступили в силу.

sudo service pdns restart

Шаг 4 - Тест соединения Master / Slave

Этот шаг требует, чтобы * ns1.example-dns.com * указывал на ваш главный сервер, а * ns2.example-dns.com * указывал на ваш подчиненный сервер.

Если ваши склеенные записи, записи SOA и записи A еще не распространены, вы можете добавить переопределение в ваш файл + / etc / hosts +. Вы хотите сделать это на * обоих серверах *.

Откройте + / etc / hosts + с помощью nano.

sudo nano /etc/hosts

Добавьте записи в ваш файл + / etc / hosts +.

/ и т.д. / хосты

Давайте удостоверимся, что наши два сервера могут общаться сейчас.

С вашего * главного сервера * пропингуйте оба имени хоста.

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 ns2.example-dns.com

Ожидаемый результат:

Output64 bytes from ns2.example-dns.com (222.222.222.222): icmp_seq=1 ttl=64 time=48.8 ms

Теперь пропингуйте оба имени хоста с вашего * подчиненного сервера *, используя те же команды. Как только вы сможете пропинговать оба сервера с обоих серверов, продолжайте.

Шаг 5 - Настройте зону DNS с репликацией

Если оба сервера взаимодействуют должным образом, мы готовы создать нашу первую зону DNS с репликацией master / slave.

Войдите в Poweradmin на своем главном сервере, посетив + http: /// poweradmin / + в вашем браузере.

изображение: https: //assets.digitalocean.com/articles/poweradmin-slave/SMepFsRh.png [экран входа Poweradmin]

Войдите с учетными данными администратора, которые вы установили ранее.

Нажмите на ссылку * Добавить главную зону *, чтобы создать новый файл зоны. Вы можете проверить это с оригинальным именем или новым доменом, * test.com *.

изображение: https: //assets.digitalocean.com/articles/poweradmin-slave/AVTowJ0h.png [Нажмите ссылку Добавить мастер-зону]

Введите имя домена верхнего уровня и нажмите кнопку * Добавить зону *, чтобы создать зону.

изображение: https: //assets.digitalocean.com/articles/poweradmin-slave/DLbU5kMh.png [Введите имя своего домена в поле Имя зоны]

Создайте * NS * записи для ваших серверов имен:

  • * Hostmaster.example-dns.com *

  • * Ns1.example-dns.com *

  • * Ns2.example-dns.com *

Создайте хотя бы одну запись * A * для проверки репликации.

изображение: https: //assets.digitalocean.com/articles/poweradmin-slave/ftZDoc7h.png [Добавить записи NS и A]

  • Примечание. Если ваш подчиненный сервер не указан в качестве сервера имен для зоны, он не будет реплицировать зону. *

Через несколько секунд новые записи должны распространиться на ваш подчиненный сервер.

Проверьте запись DNS, сохраненную на * ns1.example-dns.com *, используя + dig +.

dig  A @

Он должен ответить с результатом, аналогичным приведенному ниже.

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:


;; 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

Проверьте запись DNS, сохраненную на * ns2.example-dns.com *, используя + dig +.

dig  A @

Он должен ответить с результатом, аналогичным приведенному ниже.

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:


;; 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 * у вашего регистратора.

Заключение

Теперь у нас есть два функциональных сервера PowerDNS, использующих бэкэнд MariaDB в конфигурации master / slave.

Каждый раз, когда вносятся изменения в главную зону на главном сервере, он уведомляет любые подчиненные серверы, перечисленные в списке, с их собственными записями * NS *.

Подчиненный сервер автоматически запрашивает у главного сервера записи, которые не были недавно обновлены, обеспечивая синхронизацию записей DNS между узлами PowerDNS.

Related