Поиск по сайту:

Как установить PowerDNS и Poweradmin на CentOS 7


На этой странице

  1. Предпосылки
  2. Что мы будем делать:
  3. Шаг 1. Установите репозитории EPEL и Remi
  4. Шаг 2. Установите и настройте MariaDB
  5. Шаг 3. Установите PowerDNS
  6. Шаг 4. Установите Poweradmin
  7. Шаг 5. Послеустановочная установка Poweradmin
  8. Шаг 6. Создание пробной зоны и записей DNS
  9. Справочник

PowerDNS (pdns) — это DNS-сервер с открытым исходным кодом, написанный на C++ и выпущенный под лицензией GPL. Он стал хорошей альтернативой традиционному DNS-серверу Bind, разработанному с более высокой производительностью и низкими требованиями к памяти. PowerDNS предоставляет два продукта: авторитетный сервер и рекурсор. Авторитативный сервер PowerDNS можно настроить с помощью другого бэкенда, включая простые файлы зоны привязки, СУБД, такие как MySQL, PostgreSQL, SQLite3 или LDAP.

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

Предпосылки

  • Сервер CentOS 7
  • Привилегии root

Что мы будем делать:

  1. Установите репозитории EPEL и Remi
  2. Установка и настройка MariaDB
  3. Установите PowerDNS
  4. Установите Poweradmin
  5. После установки Poweradmin
  6. Создать пробную зону

Шаг 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

И вам будет предложено настроить корневой пароль сервера базы данных. Введите 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 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 использует привязку в качестве серверной части. Итак, введите комментарий # перед конфигурацией запуска=привязки и вставьте конфигурацию бэкэнда 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-скрипт на странице.

<?php

$db_host                = 'localhost';
$db_user                = 'hakase';
$db_pass                = 'hakase-labs123';
$db_name                = 'powerdns';
$db_type                = 'mysql';
$db_layer               = 'PDO';

$session_key            = '=uetwJeD2#uApgO)2Ekj+S#oN1Khhoj';

$iface_lang             = 'en_EN';

$dns_hostmaster         = 'server.hakase-labs.io';
$dns_ns1                = 'ns1.hakase-labs.io';
$dns_ns2                = 'ns2.hakase-labs.io';

Сохраните и закройте, затем вернитесь в браузер и нажмите кнопку.

И установка завершена.

По выбору:

Если вы хотите поддерживать URL-адреса, используемые другими динамическими провайдерами, скопируйте файл htaccess.

cd /var/www/html/poweradmin
cp install/htaccess.dist .htaccess

После этого вы ДОЛЖНЫ удалить каталог установки.

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

Снова вернитесь в свой веб-браузер и войдите в панель управления Poweradmin, используя URL-адрес, как показано ниже.

http://10.9.9.10/poweradmin/

Войдите в систему с пользователем admin по умолчанию и паролем, нажмите кнопку «Перейти».

В результате вам будет показана панель управления Poweradmin, и установка будет завершена.

Шаг 6. Создайте пробную зону и записи DNS

На этом этапе мы собирались протестировать установку PowerDNS и Poweradmin, создав новую зону DNS для домена с именем emma.io.

На панели управления Poweradmin щелкните меню Добавить основную зону.

Задайте имя зоны с доменным именем emaa.io и нажмите кнопку Добавить зону.

Нажмите меню «Список зон», чтобы получить все доступные зоны. И нажмите кнопку редактирования для зоны emma.io.

Нажмите меню «Список зон», чтобы получить все доступные зоны. И нажмите кнопку редактирования для зоны emma.io.

Теперь нажмите кнопку «Добавить запись», и мы успешно добавим зону DNS и запись DNS для домена с именем emma.io.

Далее собирались протестировать домен emma.io с помощью команды утилиты dig DNS.

Проверьте сервер имен или запись ns домена emma.io.

dig NS emma.io @10.9.9.10

Проверьте DNS-запись домена emma.io.

dig A emma.io @10.9.9.10

И вам будет показано, что домен emma.io имеет сервер имен с нашего DNS-сервера ns1.hakase-labs.io, и A этого доменного имени соответствует нашей конфигурации вверху с IP-адресом сервера 10.9.9.11.

Наконец, установка и настройка PowerDNS и Poweradmin на CentOS 7 успешно завершены.

Ссылка

  • https://github.com/poweradmin/poweradmin