Как установить и настроить PowerDNS с бэкэндом MariaDB в Ubuntu 14.04

Вступление

PowerDNS - это продвинутый, высокопроизводительный авторитетный сервер имен, совместимый с несколькими бэкэндами. PowerDNS может использовать файлы конфигурации BIND, считывать информацию из MariaDB, MySQL, Oracle, PostgreSQL и многих других баз данных. Бэкэнды могут быть легко написаны на любом языке. В этом случае мы будем использовать MariaDB для хранения записей нашего файла зоны.

MariaDB - это форк MySQL, системы управления реляционными базами данных. Будучи ответвлением ведущей системы программного обеспечения с открытым исходным кодом, она известна тем, что ее возглавляют ее первоначальные разработчики. MariaDB сохраняет возможность полной замены с помощью API и команд MySQL.

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

Предпосылки

Прежде чем приступить к обучению, пожалуйста, выполните следующие условия.

Требования к капелькам

  • 512MB капель или больше

  • Ubuntu 14.04 64-bit

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

Корневой доступ

В оставшейся части этого руководства предполагается, что вы подключены к своему серверу с учетной записью пользователя * root * или учетной записью пользователя с привилегиями sudo.

Чтобы войти в оболочку * root * из другой учетной записи:

sudo su

Зарегистрируйте свои серверы имен, установите серверы имен для других доменов

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

_ _ * Примечание: * Когда вы настраиваете DNS-сервер, это помогает сохранить ваши доменные имена прямыми. Скорее всего, вы выберете три субдомена для использования с самим сервером имен. В этом руководстве используются * hostmaster.example-dns.com *, * ns1.example-dns.com * и * ns2.example-dns.com *.

Мы также представим домен, который использует этот сервер имен в качестве SOA. В этом руководстве мы настроим файл зоны для * example.com * на вашем новом сервере имен PowerDNS. _ _

В этом руководстве в качестве примеров используются следующие доменные имена.

У этих трех поддоменов должны быть склеенные записи, указывающие на IP-адрес вашей капли PowerDNS:

  • * Hostmaster.example-dns.com *

  • * Ns1.example-dns.com *

  • * Ns2.example-dns.com *

  • Затем вы должны установить имена серверов * example.com * на три сервера имен, показанные выше.

Шаг 1 - Установите обновления

Всегда полезно убедиться, что у вас установлены последние обновления.

Установить обновления:

apt-get update && apt-get upgrade -y

Шаг 2 - Установите MariaDB

Сначала мы импортируем ключ для репозитория MariaDB:

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db

Далее мы добавим репозиторий MariaDB APT:

add-apt-repository 'deb http://ftp.kaist.ac.kr/mariadb/repo/5.5/ubuntu trusty main'

Теперь мы можем установить пакеты и зависимости MariaDB (прежде всего библиотеки), используя:

apt-get -y install libaio1 libdbd-mysql-perl libdbi-perl libmariadbclient18 libmysqlclient18 libnet-daemon-perl libplrpc-perl mariadb-client-5.5 mariadb-client-core-5.5 mariadb-common mysql-common mariadb-server mariadb-server-5.5 mariadb-server-core-5.5

Во время установки вам будет предложено установить пароль для пользователя MariaDB * root *.

изображение: https: //assets.digitalocean.com/articles/powerdns_mariadb/1.png [Введите пароль для корневой базы данных]

Пожалуйста, введите надежный пароль для пользователя базы данных * root * и нажмите ENTER.

изображение: https: //assets.digitalocean.com/articles/powerdns_mariadb/2.png [Введите тот же пароль для корневой базы данных]

Вам будет предложено подтвердить новый пароль. Введите пароль еще раз и нажмите ENTER, чтобы завершить процесс настройки.

Шаг 3 - Защитите и настройте MariaDB

По умолчанию MariaDB разрешает анонимным пользователям и root-доступ с удаленных клиентов. Мы запустим утилиту безопасной установки, чтобы отключить эти функции.

Запустите мастер безопасной установки:

mysql_secure_installation

Вам будет предложено пройти аутентификацию с помощью пароля пользователя MariaDB * root *, который вы создали при установке MariaDB. Затем нажмите ENTER, чтобы продолжить. Записи показаны в.

You already have a root password set, so you can safely answer **n**.

Change the root password? [Y/n]

В нашем примере мы не хотим менять пароль root; хотя, если вы не установили пароль при установке MariaDB, сейчас самое время сделать это. В противном случае введите N и нажмите ENTER.

Remove anonymous users? [Y/n]

Рекомендуется отключить анонимных пользователей. Нажмите ENTER, чтобы принять ответ по умолчанию Y.

Disallow root login remotely? [Y/n]

Рекомендуется не использовать root для администрирования удаленного сервера базы данных. Нажмите ENTER, чтобы принять ответ по умолчанию Y.

Remove test database and access to it? [Y/n]

Вы можете сохранить тестовую базу данных, если хотите поэкспериментировать с MariaDB. В нашем примере мы решили удалить его. Нажмите ENTER, чтобы принять ответ по умолчанию Y.

Reload privilege tables now? [Y/n]

Перезагрузка таблиц привилегий в мастере спасет нас на шаг. Нажмите ENTER, чтобы принять ответ по умолчанию Y.

Далее мы увеличим размер файла журнала InnoDB до 64 МБ. Это поможет, если вам придется отлаживать проблемы в будущем.

Сначала нам нужно остановить сервис MariaDB:

service mysql stop

Удалите все существующие файлы журналов (если это не новая установка MariaDB, вы можете вместо этого сделать их резервную копию):

rm -f /var/lib/mysql/ib_logfile*

Откройте файл конфигурации с помощью nano:

nano /etc/mysql/my.cnf

Нажмите CTRL + W, чтобы найти файл. Войдите в поле поиска, затем нажмите ENTER, чтобы продолжить. Вы попадете в часть InnoDB файла конфигурации. Вам нужно будет добавить строку, выделенную ниже.

# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!



#
# * Security Features

Нажмите CTRL + X, нажмите Y, чтобы сохранить файл, и нажмите ENTER, чтобы перезаписать.

Наконец, запустите сервис MariaDB снова:

service mysql start

Если сценарий запуска возвращает состояние [OK], размер файла журнала был успешно обновлен, и вы готовы перейти к следующему разделу.

Шаг 4 - Создайте базу данных PowerDNS и учетную запись пользователя в MariaDB

В этом разделе и в оставшейся части руководства мы будем использовать рекомендуемые имена, такие как «powerdns» и «powerdns_user». Не стесняйтесь подставлять свою собственную базу данных и имена пользователей базы данных, и убедитесь, что вы используете обновленные имена повсюду.

Вам обязательно нужно сменить пароль. Обязательно замените выделенный текст своей собственной информацией.

_ * Примечание: * Оболочка MySQL не будет обрабатывать команду до тех пор, пока вы не завершите строку *; *. Вы заметите, что наши команды таблиц используют несколько строк; это нормально. _

Сначала выполните аутентификацию пользователя MariaDB * root *:

mysql -u root -p

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

Создайте базу данных. Вы можете использовать любое имя, какое захотите, но мы будем использовать powerdns:

CREATE DATABASE powerdns;

Создайте нового пользователя с именем «powerdns_user» и предоставьте доступ к базе данных. Вам следует заменить на уникальный пароль:

GRANT ALL ON powerdns.* TO 'powerdns_user'@'localhost' IDENTIFIED BY '';

Сбросьте привилегии для обновления пользовательских настроек:

FLUSH PRIVILEGES;

Используйте новую базу данных:

USE powerdns;

Далее мы добавим в базу данных несколько таблиц, которые PowerDNS может использовать для хранения записей своего файла зоны.

Создайте таблицу * domains *:

CREATE TABLE domains (
id INT auto_increment,
name VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
primary key (id)
);

Установите уникальный индекс:

CREATE UNIQUE INDEX name_index ON domains(name);

Создайте таблицу * records *:

CREATE TABLE records (
id INT auto_increment,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(6) DEFAULT NULL,
content VARCHAR(255) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id)
);

Установите индексы:

CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);

Создайте таблицу * supermasters *:

CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);

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

quit;

Шаг 5 - Установите PowerDNS

Как уже упоминалось ранее, MariaDB является заменой MySQL. Итак, мы установим основной модуль PowerDNS, а также соответствующий внутренний модуль MySQL.

Установите PowerDNS:

apt-get install -y pdns-server pdns-backend-mysql

_ _ * Примечание: * Если вы получите сообщение об ошибке зависимости, следующая команда удалит конфликтующий пакет и принудительно установит пакеты PowerDNS.

apt-get -f purge -y mysql-client

_ _

Вам будет предложено настроить бэкэнд MySQL. Мы выполним этот процесс вручную через мгновение, поэтому с помощью клавиш со стрелками выберите * <Нет> * и нажмите ENTER, чтобы завершить установку.

изображение: https: //assets.digitalocean.com/articles/powerdns_mariadb/3.png [Выбрать <Нет>]

Шаг 6 - Настройка PowerDNS

Мы должны настроить PowerDNS для использования нашей новой базы данных.

Сначала удалите существующие файлы конфигурации:

rm /etc/powerdns/pdns.d/*

Теперь мы можем создать файл конфигурации MariaDB:

nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf

Введите следующие данные в файл. Не забудьте добавить свои собственные настройки базы данных, и особенно.

# MySQL Configuration file

launch=gmysql

gmysql-host=localhost
gmysql-dbname=powerdns
gmysql-user=powerdns_user
gmysql-password=

Перезапустите PowerDNS, чтобы применить изменения:

service pdns restart

Шаг 7 - Тестирование PowerDNS

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

Проверьте, слушает ли PowerDNS:

netstat -tap | grep pdns

Вы должны увидеть вывод, похожий на:

root@ns1:~# netstat -tap | grep pdns
tcp        0      0 *:domain                *:*                     LISTEN      5525/pdns_server-in

Проверьте, отвечает ли PowerDNS правильно:

dig @127.0.0.1

Вы должны увидеть вывод, похожий на:

root@ns1:~# dig @127.0.0.1

; <<>> DiG 9.9.5-3-Ubuntu <<>> @127.0.0.1
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27248
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 2800
;; QUESTION SECTION:
;.              IN  NS

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Nov 02 18:58:20 EST 2014
;; MSG SIZE  rcvd: 29

Все проверили? Большой! Давайте продолжим.

Шаг 8 - Установите Poweradmin

Poweradmin - это веб-инструмент администрирования DNS для PowerDNS. Он полностью поддерживает все типы зон (master, http://downloads.powerdns.com/documentation/html/replication.html#native- репликация [native], и ​​http://downloads.powerdns.com/documentation/html/slave.html[slave]). Он имеет полную поддержку supermaster для автоматической подготовки подчиненных зон, полную поддержку IPv6 и несколько языков. Вы можете просмотреть feature list для более подробной информации.

Установите Apache и необходимые зависимости для Poweradmin:

apt-get install -y apache2 gettext libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap  php5-ming php5-mysql php5-xmlrpc php5-mhash php5-mcrypt

Установите необходимые модули PEAR:

pear install DB
pear install pear/MDB2#mysql

Включить Mcrypt:

php5enmod mcrypt

Перезапустите Apache, чтобы применить изменения:

service apache2 restart

Перейдите в свой домашний каталог:

cd ~

Загрузите сжатые файлы Poweradmin:

wget https://github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz

Распакуйте архив:

tar xvzf poweradmin-2.1.6.tgz

Переместите каталог + poweradmin + в веб-каталог Apache:

mv poweradmin-2.1.6 /var/www/html/poweradmin

Создайте файл конфигурации:

touch /var/www/html/poweradmin/inc/config.inc.php

Дайте пользователю Apache право собственности на каталог:

chown -R www-data:www-data /var/www/html/poweradmin/

Шаг 9 - Настройте Poweradmin

Для завершения установки Poweradmin мы будем использовать веб-мастер настройки.

Откройте веб-браузер и перейдите по указанному ниже URL-адресу, подставив собственный IP-адрес или имя хоста сервера:

  • + Http: /// poweradmin / установить / +

изображение: https: //assets.digitalocean.com/articles/powerdns_mariadb/4.png [выберите предпочитаемый язык]

Выберите нужный язык и нажмите кнопку * Перейти к шагу 2 *.

изображение: https: //assets.digitalocean.com/articles/powerdns_mariadb/5.png [прочитать эту информацию]

На странице * step 2 * есть некоторая ценная информация, особенно для нескольких установок Poweradmin. Эта информация не имеет прямого отношения к данному учебнику. Когда вы закончите читать страницу, нажмите кнопку * Перейти к шагу 3 *.

image: https: //assets.digitalocean.com/articles/powerdns_mariadb/6.png [Введите информацию о соединении с базой данных и создайте новый пароль, как описано ниже]

На странице * Установка шага 3 * нам потребуется ввести следующую информацию:

  • * Имя пользователя *: или любое другое имя пользователя, которое вы создали для MariaDB

  • * Пароль *: пароль базы данных, который вы создали ранее

  • * Тип базы данных *: выберите * MySQL * из выпадающего меню; помните, что MariaDB действует как MySQL

  • * Имя хоста *: потому что мы подключаемся с локального хоста

  • * Порт БД *:; оставить по умолчанию

  • * База данных *: или имя базы данных, которую вы создали ранее

  • * Пароль администратора Poweradmin *: Пожалуйста, установите уникальный пароль, который вы будете использовать для входа в панель управления Poweradmin позже; имя пользователя будет * admin *

Нажмите кнопку * Перейти к шагу 4 *.

image: https: //assets.digitalocean.com/articles/powerdns_mariadb/7.png [Введите сведения о базе данных и сервере имен, как описано ниже]

На странице * Установка шага 4 * у вас есть выбор между удобством и безопасностью. Вы можете повторно использовать те же настройки базы данных или создать нового менее привилегированного пользователя базы данных для Poweradmin. В этом примере показаны те же настройки пользователя базы данных. Вы также выберете свои домены имен.

  • * Имя пользователя *: использовать нового или существующего пользователя базы данных; в этом случае мы используем + powerdns_user +

  • * Пароль *: установите новый пароль или используйте существующий пароль базы данных

  • * Hostmaster : установка хост-мастера по умолчанию, например *

  • * Основной сервер имен : установите основной сервер имен, например *

  • * Вторичный сервер имен : установите дополнительный сервер имен, например *

Нажмите кнопку * Перейти к шагу 5 *.

image: https: //assets.digitalocean.com/articles/powerdns_mariadb/8.png [Если вы создали нового пользователя, добавьте нового пользователя базы данных с помощью команды, показанной на странице, начиная с GRANT]

Убедитесь, что информация базы данных верна. Если вы решили создать нового пользователя и пароль, вам следует войти в базу данных MariaDB и добавить нового пользователя, скопировав и вставив блок кода, показанный на экране, начиная с GRANT. Затем нажмите кнопку * Перейти к шагу 6 *.

image: https: //assets.digitalocean.com/articles/powerdns_mariadb/9.png [Программа установки смогла записать в файл "../inc/config.inc.php". . .]

Вы должны увидеть сообщение типа * Установщик смог записать в файл «../inc/config.inc.php»… *. Если у вас есть проблемы с записью в файл конфигурации, это означает, что вы пропустили шаг в процессе установки.

  • Если этот шаг не удался *, вернитесь на свой сервер и создайте файл:

touch /var/www/html/poweradmin/inc/config.inc.php

Затем снова запустите процесс установки, обновив страницу.

В противном случае нажмите кнопку * Перейти к шагу 7 *, чтобы завершить установку.

image: https: //assets.digitalocean.com/articles/powerdns_mariadb/10.png [Теперь мы закончили настройку. . .]

Вам дадут имя пользователя * admin * и пароль панели управления Poweradmin.

Мы закончили с настройкой Poweradmin.

Для очистки вернитесь на свой сервер и удалите каталог установки. Poweradmin требует от нас сделать это прежде, чем мы сможем войти:

rm -rf /var/www/html/poweradmin/install/

Изменения конфигурации Poweradmin

Если вам нужно внести изменения в настройки Poweradmin после завершения установки, отредактируйте этот файл:

nano /var/www/html/poweradmin/inc/config.inc.php

Здесь вы можете обновить параметры подключения к базе данных и другие параметры конфигурации для Poweradmin.

Шаг 10 - Создайте свою первую запись DNS

Доступ к панели управления Poweradmin:

  • + Http: /// poweradmin / +

изображение: https: //assets.digitalocean.com/articles/powerdns_mariadb/11.png [страница входа в Poweradmin]

Войдите в свою панель управления Poweradmin, используя учетные данные, которые вы указали при настройке. Имя пользователя - * admin *, а пароль - * пароль администратора Poweradmin * с шага * установки 3 *.

изображение: https: //assets.digitalocean.com/articles/powerdns_mariadb/12.png [домашняя страница Poweradmin]

Нажмите на ссылку * Добавить мастер-зону *.

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

Нажмите на ссылку * Список зон * в верхнем меню.

изображение: https: //assets.digitalocean.com/articles/powerdns_mariadb/13.png [Добавить страницу главной зоны]

Нажмите кнопку редактирования файла зоны, которая выглядит как маленький карандаш слева от входа в зону.

изображение: https: //assets.digitalocean.com/articles/powerdns_mariadb/14.png [страница списка зон]

Добавьте запись DNS для вашего домена.

изображение: https: //assets.digitalocean.com/articles/powerdns_mariadb/15.png [Добавить страницу записи]

  • Вы можете добавить поддомен в поле * Имя * или оставить его пустым для основного домена.

  • Выберите * Тип * записи из выпадающего меню.

  • Добавьте IP-адрес, имя домена или другую запись в поле * Содержимое *.

  • Установите * Приоритет * при необходимости.

  • Установите * TTL * в секундах.

Нажмите кнопку * Добавить запись *.

Вы можете добавить дополнительные записи или вернуться на страницу * Список зон * и кнопку редактирования для своего домена, чтобы просмотреть все текущие записи для этого домена.

Помните, что для того, чтобы эта запись действительно функционировала, вам необходимо:

  • Зарегистрируйте домены серверов имен с помощью склеенных записей

  • Установите для серверов имен для этого домена новые домены серверов имен PowerDNS.

  • Ждать распространения

Тем не менее, мы можем проверить, что записи верны локально.

Шаг 11 - Проверьте запись DNS

Примечание: замените свой собственный домен или запись субдомена.

На вашем сервере найдите запись для вашего домена:

dig  A @127.0.0.1

Вы должны увидеть вывод, похожий на:

root@ns1:~# dig example.com A @127.0.0.1

; <<>> DiG 9.9.5-3-Ubuntu <<>> example.com A @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20517
;; 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:
;example.com.           IN  A

;; ANSWER SECTION:


;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Nov 02 19:14:48 EST 2014
;; MSG SIZE  rcvd: 56

Вы также можете проверить все остальные записи, если вы добавили несколько записей зоны.

Если они верны, это означает, что этот сервер имен имеет правильную информацию!

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

Заключение

Мы настроили сервер PowerDNS с бэкэндом MariaDB. Мы настроили панель управления Poweradmin для управления бэкендом. Мы создали нашу первую DNS-зону и создали запись A для этой зоны.

Куда мы отправимся отсюда

Если вы еще этого не сделали, вам необходимо зарегистрировать свои серверы имен.

Вам также необходимо выбрать эти серверы имен в качестве SOA для любых доменов, для которых вы хотите разместить DNS.

Если вам нужна помощь в настройке вашего домена (доменов), приведенные ниже учебники помогут вам начать работу. Вам также может понадобиться проверить инструкции от вашего регистратора.

Related