Как установить PowerDNS и Poweradmin на CentOS 7
На этой странице
- Предпосылки
- Что мы будем делать:
- Шаг 1. Установите репозитории EPEL и Remi
- Шаг 2. Установите и настройте MariaDB
- Шаг 3. Установите PowerDNS
- Шаг 4. Установите Poweradmin
- Шаг 5. Послеустановочная установка Poweradmin
- Шаг 6. Создание пробной зоны и записей DNS
- Справочник
PowerDNS (pdns) — это DNS-сервер с открытым исходным кодом, написанный на C++ и выпущенный под лицензией GPL. Он стал хорошей альтернативой традиционному DNS-серверу Bind, разработанному с более высокой производительностью и низкими требованиями к памяти. PowerDNS предоставляет два продукта: авторитетный сервер и рекурсор. Авторитативный сервер PowerDNS можно настроить с помощью другого бэкенда, включая простые файлы зоны привязки, СУБД, такие как 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
И вам будет предложено настроить корневой пароль сервера базы данных. Введите 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