Установка DNS · 8 min read · Oct 01, 2025
Как установить PowerDNS и Poweradmin на CentOS 7

PowerDNS (pdns) — это сервер DNS с открытым исходным кодом, написанный на C++ и выпущенный под лицензией GPL. Он стал хорошей альтернативой традиционному серверу DNS Bind, разработанному с лучшей производительностью и низкими требованиями к памяти. PowerDNS предоставляет два продукта: авторитетный сервер и рекурсор. Авторитетный сервер PowerDNS можно настроить через различные бэкенды, включая обычные файлы зон Bind, RDBMS, такие как MySQL, PostgreSQL, SQLite3 или LDAP.
В этом руководстве я покажу вам, как установить и настроить авторитетный сервер PowerDNS с сервером баз данных MariaDB в качестве бэкенда и использовать Poweradmin для простого управления DNS.
Предварительные требования
- Сервер CentOS 7
- Привилегии root
Что мы будем делать:
- Установить репозитории EPEL и Remi
- Установить и настроить MariaDB
- Установить PowerDNS
- Установить Poweradmin
- Постустановка Poweradmin
- Создать образец зоны
Шаг 1 - Установить репозитории EPEL и Remi
Прежде всего, нам нужно установить зависимости для установки PowerDNS. Мы собираемся установить репозиторий EPEL и REMI для установки PHP 7.2.
Установите репозиторий EPEL и PHP Remi с помощью следующих команд.
yum -y install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpmПосле добавления этих репозиториев в систему установите пакет ‘yum-utils’.
yum -y install yum-utilsИ активируйте репозиторий PHP 7.2 Remi с помощью следующей команды.
yum-config-manager --enable remi-php72Шаг 2 - Установить и настроить MariaDB
Авторитетный сервер PowerDNS поддерживает различные бэкенды, включая сервер баз данных MySQL/MariaDB. Термин ‘бэкенд’ — это хранилище данных, к которому сервер будет обращаться и которое содержит DNS записи (и некоторые метаданные). В этом руководстве мы будем использовать MariaDB в качестве бэкенда.
Установите MariaDB с помощью следующей команды yum.
yum -y install mariadb mariadb-serverПосле завершения установки запустите службу MariaDB и добавьте ее в автозагрузку.
systemctl start mariadb
systemctl enable mariadbДалее мы собираемся настроить пароль root для MariaDB с помощью интерактивного инструмента под названием ‘mysql_secure_installation’.
Запустите команду ниже.
mysql_secure_installationИ вам будет предложено настроить пароль root для сервера баз данных. Введите ‘Y’, чтобы установить пароль root, и введите надежный пароль.
Set root password? [Y/n] Y
New password:
Re-enter new password: Для остальных просто введите ‘Y’, чтобы подтвердить.
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] YВ результате вы установили сервер баз данных MariaDB и настроили пароль root для аутентификации.
Далее мы создадим новую базу данных и пользователя для установки PowerDNS. Войдите в оболочку MySQL с пользователем root и вашим паролем.
Запустите команду MySQL ниже.
mysql -u root -p
PASSWORDТеперь создайте новую базу данных с именем ‘powerdns’ и предоставьте все привилегии базы данных новому пользователю с именем ‘pdns’ с паролем ‘pdnspassword2018’.
create database powerdns;
grant all privileges on powerdns.* to pdns@localhost identified by 'pdnspassword2018';
flush privileges;
После этого создайте структуры таблиц для базы данных PowerDNS, запустив следующие запросы MySQL ниже.
use powerdns;
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)
) Engine=InnoDB;
CREATE UNIQUE INDEX name_index ON domains(name);
CREATE TABLE records (
id BIGINT AUTO_INCREMENT,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(10) DEFAULT NULL,
content VARCHAR(64000) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
disabled TINYINT(1) DEFAULT 0,
ordername VARCHAR(255) BINARY DEFAULT NULL,
auth TINYINT(1) DEFAULT 1,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX recordorder ON records (domain_id, ordername);
CREATE TABLE supermasters (
ip VARCHAR(64) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) NOT NULL,
PRIMARY KEY (ip, nameserver)
) Engine=InnoDB;
CREATE TABLE comments (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
type VARCHAR(10) NOT NULL,
modified_at INT NOT NULL,
account VARCHAR(40) NOT NULL,
comment VARCHAR(64000) NOT NULL,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX comments_domain_id_idx ON comments (domain_id);
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
CREATE TABLE domainmetadata (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
kind VARCHAR(32),
content TEXT,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
CREATE TABLE cryptokeys (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
flags INT NOT NULL,
active BOOL,
content TEXT,
PRIMARY KEY(id)
) Engine=InnoDB;
CREATE INDEX domainidindex ON cryptokeys(domain_id);
CREATE TABLE tsigkeys (
id INT AUTO_INCREMENT,
name VARCHAR(255),
algorithm VARCHAR(50),
secret VARCHAR(255),
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
quit;В результате была создана база данных MySQL/MariaDB и пользователь для установки PowerDNS.
Шаг 3 - Установить PowerDNS
Установите PowerDNS и все необходимые пакеты с помощью следующей команды.
yum -y install pdns pdns-backend-mysql bind-utilsПосле установки пакетов PowerDNS перейдите в директорию ‘/etc/pdns/‘ и отредактируйте файл конфигурации ‘pdns.conf’ с помощью редактора vim.
cd /etc/pdns/
vim pdns.confПо умолчанию PowerDNS использует ‘bind’ в качестве бэкенда. Поэтому введите комментарий ‘#’ перед конфигурацией ‘launch=bind’ и вставьте конфигурацию MySQL бэкенда, как показано ниже.
#launch=bind
launch=gmysql
gmysql-host=localhost
gmysql-user=pdns
gmysql-password=pdnspassword2018
gmysql-dbname=powerdnsСохраните и закройте.

Теперь запустите службу pdns и добавьте ее в автозагрузку.
systemctl start pdns
systemctl enable pdnsПосле этого добавьте службу DNS в брандмауэр.
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
И служба PowerDNS работает, проверьте с помощью следующей команды.
netstat -tap | grep pdns
netstat -tulpn | grep 53
dig @10.9.9.10В результате вы получите, что служба pdns работает на порту 53 и получаете ответ от сервера PowerDNS.

Шаг 4 - Установить Poweradmin
На этом этапе мы собираемся установить управление DNS для PowerDNS, называемое ‘Poweradmin’. Это веб-приложение на основе PHP, поэтому нам нужно установить PHP и веб-сервер, чтобы запустить приложение.
Установите веб-сервер httpd и пакеты PHP с помощью следующей команды.
yum -y install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettextПосле установки нам нужно установить дополнительные пакеты PHP Pear. Запустите следующую команду.
yum -y install php-pear-DB php-pear-MDB2-Driver-mysqliПосле завершения установки httpd и PHP запустите службу httpd и добавьте ее в автозагрузку.
systemctl start httpd
systemctl enable httpdДалее перейдите в директорию ‘/var/www/html’ и загрузите исходный код poweradmin.
cd /var/www/html/
wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgzИзвлеките сжатый файл poweradmin и переименуйте его.
tar xvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7/ poweradmin/После этого добавьте протоколы HTTP и HTTPS в брандмауэр.
firewall-cmd --add-service={http,https} --permanent
firewall-cmd --reloadИ мы готовы к постустановке poweradmin.
Шаг 5 - Постустановка Poweradmin
Откройте веб-браузер и введите IP-адрес сервера плюс URL-адрес /poweradmin/install/ для установки. Мой адрес:
http://10.9.9.10/poweradmin/install/
Выберите предпочитаемый язык и нажмите кнопку ‘Перейти к шагу 2’.
Теперь просто нажмите кнопку ‘Перейти к шагу 3’.
И вам будет показана конфигурация базы данных. Введите данные базы данных PowerDNS, которые мы создали, и пароль администратора для PowerDNS.

Нажмите кнопку ‘Перейти к шагу 4’.
После этого вам нужно будет создать нового пользователя с ограниченными правами. Введите данные, как показано ниже, и измените пользователя, пароль и т. д. на свои собственные.
Теперь нажмите кнопку ‘Перейти к шагу 5’.
И вам будет показана страница, как ниже.
Откройте снова терминал сервера, войдите с пользователем root и паролем. Затем выполните запросы MySQL, как на странице.
mysql -u root -p
PASSWORD
GRANT SELECT, INSERT, UPDATE, DELETE
ON powerdns.*
TO 'hakase'@'localhost'
IDENTIFIED BY 'hakase-labs123';
Теперь вернитесь в веб-браузер и нажмите кнопку ‘Перейти к шагу 6’.
И вам будет показана страница, как ниже.

Установщик не смог создать новую конфигурацию ‘../inc/config.inc.php’. Поэтому нам нужно создать ее вручную.
Вернитесь в терминал сервера, перейдите в директорию ‘/var/www/html/poweradmin’ и создайте новый файл конфигурации ‘inc/config.inc.php’.
cd /var/www/html/poweradmin
vim inc/config.inc.phpТеперь вставьте PHP-скрипт со страницы в него.
Сохраните и закройте, затем вернитесь в браузер и нажмите кнопку.

И установка завершена.
Опционально:
Если вы хотите поддерживать URL-адреса, используемые другими динамическими провайдерами, скопируйте файл htaccess.
cd /var/www/html/poweradmin
cp install/htaccess.dist .htaccessПосле этого вы ДОЛЖНЫ удалить директорию ‘install’.
rm -rf /var/www/html/poweradmin/installВернитесь в веб-браузер и войдите в панель управления Poweradmin, используя URL-адрес ниже.
Войдите с помощью пользователя по умолчанию ‘admin’ и пароля, нажмите кнопку ‘Перейти’.
И в результате вам будет показана панель управления Poweradmin, и установка завершена.
Шаг 6 - Создать образец зоны и DNS записи
На этом этапе мы собираемся протестировать установку PowerDNS и Poweradmin, создав новую DNS-зону для домена с именем ‘emma.io’.
На панели управления Poweradmin нажмите меню ‘Добавить мастер-зону’.
Установите имя зоны с именем домена ‘emaa.io’ и нажмите кнопку ‘Добавить зону’.
Нажмите меню ‘Список зон’, чтобы получить все доступные зоны. И нажмите кнопку ‘редактировать’ для зоны ‘emma.io’.
Нажмите меню ‘Список зон’, чтобы получить все доступные зоны. И нажмите кнопку ‘редактировать’ для зоны ‘emma.io’.

Теперь нажмите кнопку ‘Добавить запись’, и мы успешно добавили DNS-зону и DNS-запись для домена с именем ‘emma.io’.
Далее мы собираемся протестировать домен ‘emma.io’ с помощью команды утилиты DNS ‘dig’.
Проверьте запись имен сервера или ns для домена ‘emma.io’.
dig NS emma.io @10.9.9.10
Проверьте A DNS запись домена ‘emma.io’.
dig A emma.io @10.9.9.10
И вам будет показано, что домен ‘emma.io’ имеет nameserver от нашего DNS-сервера ‘ns1.hakase-labs.io’, и ‘A’ этого доменного имени соответствует нашей конфигурации выше с IP-адресом сервера ‘10.9.9.11’.
В конечном итоге установка и настройка PowerDNS и Poweradmin на CentOS 7 были успешно завершены.
Ссылки
Get new posts in your inbox
No spam. Unsubscribe anytime.