Установка PowerDNS (с использованием MySQL) и Poweradmin на Fedora 10

Опубликовано – 10.01.2010

Оригинал: Installing PowerDNS (With MySQL Backend) And Poweradmin On Fedora 10
Перевод: Сгибнев Михаил

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

 Как обычно, не дается никаких гарантий!

(1) Входные данные:

 В этом примере используется хост с установленной на него ОС Fedora 10, имя хоста — server1.example.com и
IP адрес 192.168.0.100. Процесс установки описан в главе 6 руководства The Perfect Server — Fedora 10.

 Устанавливается один сервер PowerDNS (master). Добавление вторичных серверов PowerDNS реализуется через репликацию базы данных MySQL с первичного сервера, поэтому нет необходимости в зонных пересылках (аналогично MyDNS). Процесс репликации хорошо описан в статье How To Set Up Database Replication In MySQL. PowerDNS также поддерживает традиционную зонную пересылку, для получения дополнительной информации, обратитесь к документу http://downloads.powerdns.com/documentation/html/replication.html

(2) Установка MySQL:

 Для установки MySQL выполните следущие действия:

yum install mysql mysql-server

 Создадим скрипт автозапуска и запустим сервер:

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

 Проверяем:

netstat -tap | grep 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

 Для установки пароля root MySQL необходимо выполнить команду:

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

 Если выполнение команды повлекло за собой ошибку:

[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 -u root -p

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:

mysql> SELECT * FROM user;
mysql> FLUSH PRIVILEGES;
mysql> quit;

(3) Устанавливаем PowerDNS:

 Для установки PowerDNS выполните следующие нехитрые действия:

yum install pdns pdns-backend-mysql

 Файлы конфигурации лягут в каталог /etc/pdns, нам они понадобятся несколько позже.

 Подключаемся к MySQL:

mysql -u root -p

 И создаем базу данных:

CREATE DATABASE powerdns;

 Создаем пользователя, который будет работать с этой базой данных (в поле power_admin_password рекомендуется указать тот пароль, который вам более приятен):

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;

 Создаем таблицы, необходимые для работы 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
);

quit;

 Теперь нам необходимо увязать PowerDNS и MySQL. Для этого, открываем файл /etc/pdns/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 готов к работе. Для получения дополнительной информации, обратитесь к документации.

(4) Устанавливаем Poweradmin

 Poweradmin написан на PHP, поэтому нам портебуется установить и web-сервер (в данном примере 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

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

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

 Теперь, когда все зависимости разрешены, приступаем к установке Poweradmin (я установил его в /var/www/html — каталог по умолчанию для документов Apache на Fedora. Если вы устанавливаете данное ПО в vhost, с путем, отличным от умолчания, то соответственно измените путь установки.). Пройдите по ссылке для получения последней версии 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)

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

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

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

 Переходим на следующий этап.

 Завершаем установку.

 Теперь нам необходимо удалить каталог install:

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

 После этого идем по адресу http://server1.example.com/poweradmin или http://192.168.0.100/poweradmin
и вводим логин admin и пароль, указанный нами выше.

 Рассмотрим интерфейс Poweradmin во всех подробностях:

 Для создания зоны, выбираем пункт Add master zone и указываем имя создаваемого домена (e.g. example.com).
Вы можете сразу указать IP адрес для записи A хоста www и запись MX для этой зоны.
Если такого желания нет, то установите крыжик Create zone without applying records-template.

 После этого, проследуйте к пункту List zones, в котором выберите редактирование зоны.

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

 Если при создании зоны, вы убрали галочку с Create zone without applying records-template

 То процесс создания записей будет полностью под вашим контролем. Сделаем же это!

 После создания зоны, перейдем в List zones и воспользуемся пунктом Add record.

 После чего можем добавить записи NS

 И записи A records (например, для mydomain.com (оставьте поле Name пустым!) и www.mydomain.com)

 И записи MX

 Для создания записей PTR необходимо перейти на страницу Add master zone и создать зону с именем
in-addr.arpa

 Завершив наши молодецкие забавы, проверим результат:

[root@server1 ~]# dig @localhost mx example.com

; <<>> DiG 9.5.1b2-RedHat-9.5.1-0.8.b2.fc10 <<>> @localhost mx example.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6561 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;example.com. IN MX ;; ANSWER SECTION: example.com. 86400 IN MX 10 mail.example.com. ;; ADDITIONAL SECTION: mail.example.com. 86400 IN A 1.2.3.4 ;; Query time: 39 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Jan 14 15:47:01 2009 ;; MSG SIZE rcvd: 66 [root@server1 ~]#

 Ссылки по теме:
PowerDNS: http://www.powerdns.com/
PowerDNS documentation: http://downloads.powerdns.com/documentation/html/index.html
Poweradmin: http://www.poweradmin.org/
Fedora: http://fedoraproject.org




 Уважайте труд автора, сохраняйте копирайты.
Реклама на сайте висит не просто так и если статья Вам понравилась, с ее помощью Вы можете отблагодарить автора за проделанную работу. Спасибо!

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

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


*