Установка PowerDNS с MySQL/MariaDB и Poweradmin в CentOS/Fedora/RHEL

Установка 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

Настройка PowerAdmin в CentOS

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

Насстройка PowerAdmin

Настройка PowerAdmin

После вода данных, нажимаем на «Go to step 4». На 4-м шаге, необходимо прописать нового пользователя для входа в

PowerAdmin, пароль для этого пользователя, а так же, Hostmaster и Primary nameserver/Secondary nameserver:

PowerAdmin

Далее, нажимаем на «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

Полезные статьи:

Установка и использование dig

Установка nslookup на CentOS

Я успешно установил и настроил PowerDNS. Моя статья «Установка PowerDNS с MySQL/MariaDB и Poweradmin в CentOS/Fedora/RHEL» завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.