Установка ПО · 5 min read · Oct 02, 2025

Установка PowerDNS (с MySQL бэкендом) и Poweradmin на Fedora 10

Установка PowerDNS (с MySQL бэкендом) и Poweradmin на Fedora 10

Версия 1.0
Автор: Фалко Тимме

Эта статья показывает, как установить сервер имен PowerDNS (с MySQL бэкендом) и панель управления Poweradmin для PowerDNS на системе Fedora 10. PowerDNS — это высокопроизводительный сервер имен только с авторитетом — в описанном здесь настройке он будет считывать DNS записи из базы данных MySQL (аналогично MyDNS), хотя поддерживаются и другие бэкенды, такие как PostgreSQL. Poweradmin — это веб-панель управления для PowerDNS.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

В этом примере я использую хост Fedora 10 с именем сервера server1.example.com и IP-адресом 192.168.0.100, настроенным в соответствии с первыми 6 главами этого руководства: Идеальный сервер - Fedora 10.

Я настрою только один сервер PowerDNS в этом примере (мастер); добавление слейвов PowerDNS можно легко осуществить с помощью репликации базы данных MySQL от мастера к слейвам, поэтому передача зон не требуется (это снова похоже на MyDNS). Репликацию базы данных MySQL можно настроить в соответствии с этим руководством: Как настроить репликацию базы данных в MySQL (PowerDNS также поддерживает нативные передачи зон (для сценариев, когда вы не можете использовать репликацию MySQL) - см. http://downloads.powerdns.com/documentation/html/replication.html).

2 Установка MySQL

Чтобы установить MySQL, мы делаем следующее:

yum install mysql mysql-server

Затем мы создаем системные ссылки для автозагрузки MySQL (чтобы MySQL запускался автоматически при загрузке системы) и запускаем сервер MySQL:

chkconfig –levels 235 mysqld on
/etc/init.d/mysqld start

Теперь проверьте, что сеть включена. Выполните

netstat -tap | grep mysql

Это должно показать что-то вроде этого ( *:mysql означает, что MySQL слушает на всех интерфейсах, что важно для репликации MySQL!):

[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 :mysql :* LISTEN 2407/mysqld
[root@server1 ~]#

Если этого не происходит, отредактируйте /etc/my.cnf и закомментируйте опцию skip-networking:

vi /etc/my.cnf

| [...] #skip-networking [...] |

и перезапустите сервер MySQL:

/etc/init.d/mysqld restart 

Выполните

mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

чтобы установить пароль для пользователя root (в противном случае любой сможет получить доступ к вашей базе данных MySQL!).

Если последняя команда выдает вам ошибку…

[root@server1 named]# mysqladmin -h server1.example.com -u root password yourrootsqlpassword
mysqladmin: connect to server at ‘server1.example.com’ failed
error: ‘Access denied for user ‘root’@’localhost’ (using password: NO)’
[root@server1 named]#

… мы можем установить пароль следующим образом: подключитесь к MySQL:

mysql -u root -p

Введите пароль для пользователя root MySQL. Затем, в оболочке MySQL, выполните следующее:

mysql> USE mysql;
mysql> UPDATE user SET Password = password('yourrootsqlpassword') WHERE Host = 'server1.example.com' AND User = 'root';
mysql> UPDATE user SET Password = password('yourrootsqlpassword') WHERE Host = '127.0.0.1' AND User = 'root';

Выполните

mysql> SELECT * FROM user;

чтобы убедиться, что все строки, где пользователь root, имеют пароль.

Если все выглядит нормально, выполните

mysql> FLUSH PRIVILEGES;

… и выйдите из оболочки MySQL:

mysql> quit;

3 Установка PowerDNS

Чтобы установить PowerDNS, мы выполняем

yum install pdns pdns-backend-mysql

Конфигурация PowerDNS находится в каталоге /etc/pdns - я к этому вернусь через мгновение.

Теперь мы подключаемся к MySQL:

mysql -u root -p

Введите ваш пароль root MySQL, и вы должны оказаться в оболочке MySQL. В оболочке MySQL мы создаем базу данных для PowerDNS:

CREATE DATABASE powerdns;

Затем мы создаем пользователя базы данных (powerdns) для PowerDNS:

GRANT ALL ON powerdns. TO ‘power_admin’@’localhost’ IDENTIFIED BY ‘power_admin_password’;
GRANT ALL ON powerdns.
TO ‘power_admin’@’localhost.localdomain’ IDENTIFIED BY ‘power_admin_password’;
FLUSH PRIVILEGES;

(Замените power_admin_password на пароль по вашему выбору.)

Теперь мы создаем таблицы, необходимые для PowerDNS…

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);

CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);

… и наконец выйдите из оболочки MySQL:

quit;

Теперь мы должны настроить PowerDNS так, чтобы он использовал MySQL бэкенд:

vi /etc/pdns/pdns.conf

Добавьте следующие строки в pdns.conf:

| [...] ################################# # launch Which backends to launch and order to query them in # # launch= launch=gmysql gmysql-host=127.0.0.1 gmysql-user=power_admin gmysql-password=power_admin_password gmysql-dbname=powerdns [...] |

Затем создайте системные ссылки для автозагрузки PowerDNS и запустите его:

chkconfig –levels 235 pdns on
/etc/init.d/pdns start

Вот и все, PowerDNS теперь готов к использованию. Чтобы узнать больше об этом, пожалуйста, обратитесь к его документации: http://downloads.powerdns.com/documentation/html/index.html

4 Установка Poweradmin

Теперь давайте установим Poweradmin, веб-панель управления для PowerDNS. Poweradmin написан на PHP, поэтому нам нужно установить веб-сервер (в этом примере я использую Apache2) и PHP:

yum 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 

Создайте системные ссылки для автозагрузки Apache2 и запустите его:

chkconfig –levels 235 httpd on
/etc/init.d/httpd start

Poweradmin также требует следующие два пакета PEAR:

yum install php-pear-DB php-pear-MDB2-Driver-mysql

Теперь все предварительные условия для Poweradmin установлены, и мы можем начать установку Poweradmin (я установлю его в подкаталог /var/www/html - /var/www/html является корневым каталогом документа по умолчанию для веб-сайта Apache на Fedora; если вы создали виртуальный хост с другим корневым каталогом документа, пожалуйста, скорректируйте пути).

Перейдите на https://www.poweradmin.org/trac/wiki/GettingPoweradmin и загрузите последний пакет Poweradmin, например, следующим образом:

cd /tmp
wget https://www.poweradmin.org/download/poweradmin-2.1.2.tgz

Затем установите его в каталог /var/www/html/poweradmin следующим образом:

tar xvfz poweradmin-2.1.2.tgz
mv poweradmin-2.1.2 /var/www/html/poweradmin
touch /var/www/html/poweradmin/inc/config.inc.php
chown -R apache:apache /var/www/html/poweradmin/

Теперь откройте браузер и запустите веб-установщик Poweradmin ( http://server1.example.com/poweradmin/install или http://192.168.0.100/poweradmin/install).

Выберите ваш язык (английский или голландский):

Нажмите кнопку Перейти к шагу 3, чтобы продолжить:

Теперь заполните данные вашей базы данных. Важно, чтобы вы заполнили данные для пользователя root MySQL, а не для пользователя MySQL powerdns, которого мы создали ранее! Также укажите пароль для администратора для веб-интерфейса Poweradmin (это пароль, который пользователь admin будет использовать для входа в Poweradmin позже):

На следующей странице заполните данные для пользователя MySQL power_admin, которого мы создали в главе 3. Также заполните два основных сервера имен, которые будут использоваться в ваших зонах, если вы не укажете другие серверы имен при создании зоны (обычно это имена текущей системы и слейв-сервера (для которого вы можете настроить репликацию MySQL, см. мои предварительные заметки в главе 1)):

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.