
Установка PowerDNS с MySQL/MariaDB и Poweradmin в CentOS/Fedora/RHEL
PowerDNS был создан в конце 1990-х и является ведущим поставщиком программного обеспечения с открытым исходным кодом для работы с DNS.
Я хотел бы рассказать в своей статье «Установка PowerDNS с MySQL/MariaDB и Poweradmin в CentOS/Fedora/RHEL» как установить PowerDNS с MySQL или MariaDB и Poweradmin в CentOS/Fedora/RHEL на примере CentOS 6/7.
Установка PowerDNS с MySQL/MariaDB и Poweradmin в CentOS/Fedora/RHEL
Первое что нужно сделать, так это добавить репозитории:
Как включить EPEL репозиторий на CentOS
Как добавить Remi репозиторий на CentOS / RHEL
Далее, обновим систему:
# yum update
После чего, установим MySQL с помощью следующей команды:
# yum install mysql-server mysql -y
или можно выполнить установку и установить mariaDB:
# yum install MariaDB-client MariaDB-common MariaDB-compat MariaDB-devel MariaDB-server MariaDB-shared -y
Запускаем службу MySQL и добавляем ее в автозапуск ОС (чтобы загружалась при каждой перезагрузке ОС):
# service mysqld start chkconfig mysqld on
Проверяем, работает ли MySQL на нужном порту:
# netstat -tap | grep mysql
Для улучшенной безопасности, запускаем скрипт который настроит mysql:
# mysql_secure_installation
Я завершил установку.
Можно добавить в автозагрузку ОС:
Для CentOS 5/6:
# service mysqld start # chkconfig mysqld on
Для CentOS 7 ( на примере mariaDB, mysql на CentOS 7 не вижу смысла ставить):
# systemctl enable mariadb.service # systemctl start mariadb.service
Далее, я буду устанавливать PowerDNS.
Установка PowerDNS
Выполните следующую команду, чтобы установить PowerDNS:
# yum install pdns pdns-backend-mysql bind-utils -y
После установки PowerDNS, запустим и включить службу PowerDNS автоматический запуск ОС:
Для CentOS 5/6:
# service pdns start # chkconfig pdns on
Для CentOS 7:
# systemctl enable pdns.service # systemctl start pdns.service
PowerDNS установлен.
Проверяем, запустился ли он:
# netstat -tap | grep pdns
Создание базы данных и пользователя в MySQL для PowerDNS.
Следующим шагом необходимо создать базу данных и учетную запись пользователя для PowerDNS.
Войдите в MySQL с помощью команды:
# mysql -u root -p
Создать базу данных, а именно «powerdns. Вы можете использовать любое другое имя:
# CREATE DATABASE powerdns;
Создать пользователя базы данных, а именно ‘poweruser’:
# GRANT ALL ON powerdns.* TO 'poweruser '@'localhost' IDENTIFIED BY 'centos';
Где,
- powerdns – это база данных;
- poweruser – это пользователь;
- centos – это пароль от пользователя ‘poweruser’.
Я рекомендую вам использовать любой надежный пароль для улучшения безопасности.
Введите следующую команду, чтобы обновить пользовательские настройки:
# FLUSH PRIVILEGES;
Теперь, выполните команду чтобы назначить использования базы:
# 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) );
Создать уникальный индекс для областей таблице:
# CREATE UNIQUE INDEX name_index ON domains(name);
Создайте записи таблицы:
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;
Настройка PowerDNS
Теперь, необходимо настроить PowerDNS используя MySQL для хранения файлов зоны и записей.
Переименую файл конфигурации:
# mv /etc/pdns/pdns.conf /etc/pdns/pdns.conf.bak
После чего, открываем файл и вносим изменения:
# vim /etc/pdns/pdns.conf
Добавьте следующие строки. Установите правильное имя базы данных и пользователя базы данных, которые создали ранее:
# MySQL Configuration # # Launch gmysql backend launch=gmysql # gmysql parameters gmysql-host=localhost gmysql-dbname=powerdns gmysql-user=poweruser gmysql-password=centos
Далее вам нужно иметь recursor, который будет открыт на другом порту, PowerDNS будет уже использовать 53-й UDP-порт. Но для начала, установим его:
# yum install pdns-recursor -y
Открываем конфиг и вносим изменения:
# vim /etc/pdns/pdns.conf
Раскомментируйте следующую строку (если ее нет, то пропишите):
[...] recursor=127.0.0.1:5300 [...]
Эта строка говорит PowerDNS направлять рекурсивные запросы к PowerDNS-recursor сервера, который будет слушать на порту 5300.
И редактируем конфиг с recursor:
# vim /etc/pdns-recursor/recursor.conf
И устанавливаем на каком порту будет он висеть:
[...] local-port=5300 [...]
Так же, определяем сеть:
#allow-from=127.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 169.254.0.0/16, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fe80::/10 allow-from=127.0.0.0/8
И добавляем pdns-recursor в автозагрузку ОС и запускаем его:
# chkconfig pdns-recursor on # service pdns-recursor start
PS: Я его не ставил, но если есть нужда — используйте его!
Наконец, перезагрузите PowerDNS:
# service pdns restart
Установка PowerAdmin для работы с PowerDNS
Я для примера, буду использовать apache (вы можете использовать любой другой веб сервер, например nginx):
# 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 -y
Добавляем апаче в автозапуск ОС:
# chkconfig --levels 235 httpd on
Для CentOS 7 :
# systemctl enable httpd.service # systemctl start httpd.service
Запускаем службу apache:
# service httpd start
Установите следующие пакеты PEAR:
# yum -y install php-pear-DB php-pear-MDB2-Driver-mysql -y
Загружаем PowerAdmin:
# cd /usr/local/src && wget http://skylink.dl.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz && tar zxvf poweradmin-*.tgz -C /var/www/html/
Для удобства, переименовуем папку:
# mv /var/www/html/poweradmin* /var/www/html/poweradmin
Выставляем права:
# chown -R apache:apache /var/www/html/poweradmin/
Копируем конфиг:
# cp /var/www/html/poweradmin/inc/config-me.inc.php /var/www/html/poweradmin/inc/config.inc.php
Отредактируйте конфигурационный файл:
# vim /var/www/html/poweradmin/inc/config.inc.php
Приведите записи к такому виду (замените все на свои значения):
$db_host = 'localhost'; $db_port = '3306'; $db_user = 'poweruser'; $db_pass = 'centos'; $db_name = 'powerdns'; $db_type = 'mysql'; [...] $session_key = 'session_key';
После чего, перезапускаем службу httpd:
# service httpd restart
Перезапустите демон PowerDNS:
# service pdns restart
После чего, необходимо создать учетную запись для PowerAdmin, для этого, откройте свой IP (домен), например:
http://192.168.103.130/poweradmin/install/
И приступаем к настройке:

Настройка PowerAdmin в CentOS
Выбираем нужный вам язык и нажимаем «Go to step 2». Я выбрал английский язык. На 2-м шаге, не нужно ничего выбирать, по этому, нажимаем на «Go to step 3». На 3-м шаге, создаем имя пользователя и пароль для входа в PowerAdmin:

Настройка PowerAdmin
После вода данных, нажимаем на «Go to step 4». На 4-м шаге, необходимо прописать нового пользователя для входа в
PowerAdmin, пароль для этого пользователя, а так же, Hostmaster и Primary nameserver/Secondary nameserver:
Далее, нажимаем на «Go to step 5» -> «Go to step 6». На 6-м шаге, показывают как будут выглядеть настройки:
<?php $db_host = 'localhost'; $db_user = 'poweruser'; $db_pass = 'centos'; $db_name = 'powerdns'; $db_type = 'mysql'; $db_layer = 'PDO'; $session_key = 'LuP(iBPk#E32F70pzqqJm3+b#x(yrxV{+b_DUENyuJ}Csd'; $iface_lang = 'en_EN'; $dns_hostmaster = 'home.dnsserver'; $dns_ns1 = 'ns1.home.dnsserver'; $dns_ns2 = 'ns2.home.dnsserver';
Нажимаем «Go to step 7». На этом, настройка PowerAdmin завершена.
Так же, вы можете включить использование URLs (URL-адресов) другими динамическими DNS, выполнив:
# cp /var/www/html/poweradmin/install/htaccess.dist /var/www/html/poweradmin/install/.htaccess
Но для этого нужно включить mod_rewrite в конфигурации Apache.
По завершению шаг «Step 7», удалите папку с установщиком:
# rm -rf /var/www/html/poweradmin/install
После удаления, нужно прописать session_key в конфигурационном файле:
# vim /var/www/html/poweradmin/inc/config.inc.php
Находим поле с «session_key» и прописываем свой ключ, который был определен на шаге 6. У меня это -LuP(iBPk#E32F70pzqqJm3+b#x(yrxV{+b_DUENyuJ}Csd
Измините на свой и после чего выполните перезапуск powerdns.
Открываем доменное имя или IP, например:
http://powerdns.server/poweradmin/
или
http://192.168.103.130/poweradmin
Для входа мне говорят использовать пользователя «admin» с паролем «centos». Сейчас, можно создать тестовую DNS-запись, для этого открываем «Add master zone» и указать имя, владельца, тип и шаблон записи.
Добавить, отредактировать и удалять DNS зону в PowerDNS
PS: Не забываем изменить пароль для пользователя admin!
Я завершил установку и настройку. Теперь, нужно проверить, работает ли PowerDNS или нет. Но для начала, откроем 53-й порт для работы DNS в брандмауэре (iptables):
# iptables -A INPUT -p tcp -m state --state NEW --dport 53 -j ACCEPT # iptables -A INPUT -m tcp -p tcp --sport 80 -j ACCEPT
Сохраните и закройте файл. Затем перезагрузите Iptables:
# service iptables restart
Тестирование работы PowerDNS
Чтобы убедиться, что сервер PowerDNS работает должным образом, используйте команду dig:
# dig ns home.dnsserver @localhost ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.5 <<>> ns home.dnsserver @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21470 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;home.dnsserver. IN NS ;; ANSWER SECTION: home.dnsserver. 86400 IN NS ns1.home.dnsserver. home.dnsserver. 3 IN NS 8.8.8.8. ;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Jan 19 23:49:58 2016 ;; MSG SIZE rcvd: 71
Полезные статьи:
Я успешно установил и настроил PowerDNS. Моя статья «Установка PowerDNS с MySQL/MariaDB и Poweradmin в CentOS/Fedora/RHEL» завершена.