Оригинал: 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
[ad name="Google Adsense"]
Уважайте труд автора, сохраняйте копирайты.
Реклама на сайте висит не просто так и если статья Вам понравилась, с ее помощью Вы можете отблагодарить автора за проделанную работу. Спасибо!