февраля 23 2009 08:00 дп
Установка DNS сервера PowerDNS с поддержкой MYSQL веб интерфейсом Power admin

В этой статье описана установка и начальная настройка DNS сервера PowerDNS. Вы можете спросить, почему не так популярный нынче Bind? Power Dns отличается от него тем что берет данные о зонах из базы данных, поддерживаются популярные БД, такие как MYSQL, PGSQL, Oracle. Работает как в качестве авторитетного, так и в качестве рекурсивного сервера. Удобством данного решения является удобная панель администрирования с веб интерфейсом, каких для Bind есть несколько, и все они не блещут своей функциональностью и удобством настройки. Power Dns так же предусмартивает возможность миграции с обычного Bind.
Данное руководство написано для использования с Ubuntu Server 8.10, но подойдет и для других Debian based дистрибутивов.
Установим необходимое, для начала MYSQL.
Код:
apt-get install mysql-server mysql-client
Затем отредактируем конфиг файл MYSQL, необходимо настроить его таким образом, что бы он был доступен со всех интерефейсов, для этого необходимо закомментировать строку с параметром bind-address
Код:
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address
[...]
Перезапустим MYSQL командой /etc/init.d/mysql restart и проверим что у нас получилось
Код:
netstat -tap |grep mysql
Мы должны увидеть примерно следующее
Код:
root@server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 6724/mysqld
root@server1:~#
Теперь перейдем к установке сервера PowerDns
Код:
apt-get install pdns-server pdns-backend-mysql
Конфигурация PowerDns хранится в директории /etc/powerdns, мы вернемся к ней чуть позже, а пока создадим базу данных и таблицы в ней для нашего dns сервера. Я использовал для примера имя пользователя для БД power_admin с паролем power_admin_password, не забудьте сменить их на свои. Среди команд приведены краткие комментарии для разъяснения действий и названия таблиц.
Код:
mysql -u root -p
CREATE DATABASE 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;
### Базу создали, права выставили, переходим к созданию таблиц.
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, добавим тип запуска, а именно линию launch=gmysql как показано в примере ниже. Выполните команду vim /etc/powerdns/pdns.conf и вставьте нужный текст в файл.
Код:
[...]
#################################
# launch Which backends to launch and order to query them in
#
# launch=
launch=gmysql
[...]
Затем отредактируйте файл /etc/powerdns/pdns.d/pdns.local до состояния приведенного в примере ниже, не забудьте сменить имя пользователя и пароль от базы данных на те что вы указали при создании базы данных.
Код:
# Here comes the local changes the user made, like configuration of
# the several backends that exists.
gmysql-host=127.0.0.1
gmysql-user=power_admin
gmysql-password=power_admin_password
gmysql-dbname=powerdns
Перезапустите сервер PowerDns командой /etc/init.d/pdns restart, после этого он уже готов к работе. Вы можете ознакомится с документацией по нему по адресу
Установка Poweradmin
Установим все пакет необходимые для нормальной работы пакета.
Код:
apt-get install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-mhash php5-ming php5-mysql php5-xmlrpc gettext
Установим Pear DB
Код:
pear install DB
pear install pear/MDB2#mysql
Затем перезапустите Apache командой /etc/init.d/apache2 restart.
Скачаем дистрибутив Poweradmin
Код:
cd /tmp
wget https://www.poweradmin.org/download/poweradmin-2.1.2.tgz
Ставить будем в директорию /var/www/poweradmin
Код:
tar xvfz poweradmin-2.1.2.tgz
mv poweradmin-2.1.2 /var/www/poweradmin
touch /var/www/poweradmin/inc/config.inc.php
chown -R www-data:www-data /var/www/poweradmin/
Затем открываем в браузере адрес вашего сервера, ( например http://server1.example.com/poweradmin/install или http://192.168.0.100/poweradmin/install). И в открывшемся окне выбираем язык, затем заполняем информацию касательно нашей базы данных, а именно логин, пароль, и название базы, хост базы localhost.
Затем будет окно с вопросами о создании служебного аккаунта для нашего DNS сервера, впишем имя юзера power_admin, и зададим ниже пароль для аккаунта администратора и адрес электронной почты, в котором надо обязательно заменить символ «@» на символ «.«, тоесть если у вас адрес vasya@example.com то он должен быть написан как vasya.example.com.
Далее вам будет предложеновыполнить запрос к вашей БД для установки привелегий, и на этом установка завершена.
Необходимо удалить директорию с файлами инсталляции poweradmin
Код:
rm -fr /var/www/poweradmin/install/
Затем вы можете зайти по адресу вашего сервера, ( например http://server1.example.com/poweradmin или http://192.168.0.100/poweradmin) с логином admin и паролем который вы задали при установке.
На этом все, можете переходить к созданию зон и настроек вашего DNS сервера.
Оригинал статьи (На английском языке, присутствуют скриншоты)
Popularity: 9%
41 Комментариев »
41 Responses to “Установка DNS сервера PowerDNS с поддержкой MYSQL веб интерфейсом Power admin”
Leave a Reply
You must be logged in to post a comment.



on 25 Фев 2009 at 12:56 #
Добрый день.http://192.168.0.100 как следует обработать этот файл» подскажите в какую сторону копать???
Подскажите пожалуйста после всей установки,когда я захожу на допустим мне пишет вот такое вот сообщение «Вы собираетесь открыть файл являющийся PHTML из
Дело в настройках apache, настройте поддержку php и добавьте расширение .phtml к разрешенным файлам индексов и тд.
При заходе наhttp://x.x.x.x/poweradmin
Authentication failed!
вероятно, проблема в связке phpmysql
Возможно, проверьте параметры авторизации.
Здраствуйте помогите решить проблемку после того как вожу команду:https://www.poweradmin.org/download/poweradmin-2.1.2.tgz
wget
Мне в отвект ругается на сертификат вот фото :
помогите преодолеть єту проблемку… очень нужно пожалуйста…
На скриншоте написано что делать, если не понятно то команда man wget прояснит вам как быть в таких случаях.
Спасибо.. за помошь…
Здравствуйте, помогите мне пожалуйста!!!http://192.168.0.100/poweradmin/install то мне пишет что проблема при загрузке??? Что делать??
почему когда я ввожу
Вводить ваш адрес, а не из примера, очевидно же…
В смысле мой IP, просто я делай из виртуальной машины
У меня на виртуалке стоит линукс без графической оболочки, а когда я переключаюсь на винду и ввожу в браузерhttp://10.0.2.15/poweradmin/install — это с моим ip который стоит на виртуалке, я его получил автоматом с помоoью dhclient
всё равно пишет проблема при загрузке
Настраивать нормально сеть в виртуальной машине. Не shared networking, а нормально, bridged
здравствуйте, у меня новая проблема(( что это заошибка??? (Error: _doQuery: [Error message: Could not execute statement] [Last executed query: SELECT id FROM domains WHERE name='example.com'] [Native code: 1146] [Native message: Table 'vofka.domains' doesn't exist])
Проверьте, создана ли база.
Здравствуйте, Помогите мне пожалуйста настроить Chroot
Это блог, в нем размещены статьи. В этой статье нет ничего про chroot, и помогать вам тут не будут. Просите помощи у гугла или на форумах. Можно конечно попросить помощи у меня через контакты, но не бесплатно.
[...] с sudouser.com Теги: DNS, MySQL, Power admin, PowerDNS, [...]
Извеняюсь зарание за тупейший вопрос верней просьбу…
Но вы бы не могли описать как добавлять домен через админку (я понимаю что там все тривиально но все же…) прост я попробовал добавить домен но у меня так нечего и не заработало да не отрицаю возможно руки кривые и мозги не варят вообще после целого дня в универе…
домен зареганый …
Вот тут почитайтеhttps://www.poweradmin.org/trac/wiki/TracGuide
А на русском, не подскажите ? прост я с английским не в ладах… (((
Ну если с английским не в ладах, то в администрировании вам делать нечего, либо администрируйте виндовс, там по русски, а в линуксе серверное ПО на 90% или больше английское.
я с вами согласен что ПО на английском но % 40 мне кажется если не выше сушествует руско язычних имено хелпов… а я просил у вас рускоя зычный хелп…
Ивеняюсь за ошибки *я с вами согласен что 90% ПО на английском но % 40 мне кажется если не выше существует русско язычных именно хелпо, а я просилил у вас русско язычный хелп…
Поищите в сети русское руководство по работе с поверадмином, у меня его, к сожалению нет, писать его я не планирую. Домены не добавлял и не тестировал работу, так что ничем не помогу.
У меня все работает спасибо, большое. Ставил на debian 5. Ток вот проблемка, походу сам Debian при попытке конекта по доменному имени(например debian.org) обращается к себе и не может определить айпи адрес для домена(. Не подскажите как сделать чтоб сама система не обращалась к powerdns? Спасибо.
Извиняюсь за надоедливость, если в host прописать это исправит эту ошибку? Мне надо чтоб он определял все го 2 домена mirror.yandex.ru и security.debian.org.
Пропишите в качестве днс для вашего сервера айпи серверов которые вам выдал провайдер, у вас видимо прописано использовать 127.0.0.1 в качестве днс. Или разрешите рекурсивные запросы на вашем днс сервере.
А не могли вы подробнее сказать где это прописать?
как разрешить рекурсивные запросы или где прописать нсы провайдера(хотя я их при установке дебиан указывал).
Пока времменый вариант в host прописал. Спасибо
В файл /etc/resolv.conf
Я не настраивал сервер PowerDNS, не знаю где там что.
Спасибо.
я вам конфиг скину попозже. Если вас не затруднит подскажите.
Вот конфиг буду очень признателен за помощь.
# Autogenerated configuration file template
#################################
# allow-axfr-ips If enabled, restrict zonetransfers to originate from these
# IP addresses
#
allow-axfr-ips=тут айпи 2 нс
#################################
# allow-recursion List of netmasks that are allowed to recurse
#
allow-recursion=127.0.0.1
#################################
# allow-recursion-override Local data even about hosts that don’t exist will
# override the internet. (on/off)
#
# allow-recursion-override=
#################################
# cache-ttl Seconds to store packets in the PacketCache
#
# cache-ttl=20
#################################
# chroot If set, chroot to this directory for more security
#
# chroot=/var/spool/powerdns
#################################
# config-dir Location of configuration directory (pdns.conf)
#
config-dir=/etc/powerdns
#################################
# config-name Name of this virtual configuration — will rename the binary image
#
# config-name=
#################################
# control-console Debugging switch — don’t use
#
# control-console=no
#################################
# daemon Operate as a daemon
#
daemon=yes
#################################
# default-soa-name name to insert in the SOA record if none set in the backend
#
# default-soa-name=a.misconfigured.powerdns.server
#################################
# disable-axfr Disable zonetransfers but do allow TCP queries
#
disable-axfr=no
#################################
# disable-tcp Do not listen to TCP queries
#
# disable-tcp=no
#################################
# distributor-threads Default number of Distributor (backend) threads to start
#
# distributor-threads=3
#################################
# fancy-records Process URL and MBOXFW records
#
# fancy-records=no
#################################
# guardian Run within a guardian process
#
guardian=yes
#################################
# launch Which backends to launch and order to query them in
#
# launch=
launch=gmysql
#################################
# lazy-recursion Only recurse if question cannot be answered locally
#
lazy-recursion=yes
#################################
# load-modules Load this module — supply absolute or relative path
#
# load-modules=
#################################
# local-address Local IP address to which we bind
#
local-address=тут мой внешний айпи
#################################
# local-ipv6 Local IP address to which we bind
#
# local-ipv6=
#################################
# local-port The port on which we listen
#
local-port=53
#################################
# log-dns-details If PDNS should log failed update requests
#
# log-dns-details=
#################################
# log-failed-updates If PDNS should log failed update requests
#
# log-failed-updates=
#################################
# logfile Logfile to use
#
# logfile=/var/log/pdns.log
#################################
# logging-facility Log under a specific facility
#
# logging-facility=
#################################
# loglevel Amount of logging. Higher is more. Do not set below 3
#
# loglevel=4
#################################
# master Act as a master
#
# master=no
#################################
# max-queue-length Maximum queuelength before considering situation lost
#
# max-queue-length=5000
#################################
# max-tcp-connections Maximum number of TCP connections
#
# max-tcp-connections=10
#################################
# module-dir Default directory for modules
#
module-dir=/usr/lib/powerdns
#################################
# negquery-cache-ttl Seconds to store packets in the PacketCache
#
# negquery-cache-ttl=60
#################################
# out-of-zone-additional-processing Do out of zone additional processing
#
# out-of-zone-additional-processing=no
#################################
# query-cache-ttl Seconds to store packets in the PacketCache
#
# query-cache-ttl=20
#################################
# query-logging Hint backends that queries should be logged
#
# query-logging=no
#################################
# queue-limit Maximum number of milliseconds to queue a query
#
# queue-limit=1500
#################################
# query-local-address The IP address to use as a source address for sending
# queries.
# query-local-address=
#################################
# receiver-threads Number of receiver threads to launch
#
# receiver-threads=1
#################################
# recursive-cache-ttl Seconds to store packets in the PacketCache
#
# recursive-cache-ttl=10
#################################
# recursor If recursion is desired, IP address of a recursing nameserver
#
# recursor=
#################################
# setgid If set, change group id to this gid for more security
#
setgid=pdns
#################################
# setuid If set, change user id to this uid for more security
#
setuid=pdns
#################################
# skip-cname Do not perform CNAME indirection for each query
#
# skip-cname=no
#################################
# slave Act as a slave
#
# slave=no
#################################
# slave-cycle-interval Reschedule failed SOA serial checks once every .. seconds
#
# slave-cycle-interval=60
#################################
# smtpredirector Our smtpredir MX host
#
# smtpredirector=a.misconfigured.powerdns.smtp.server
#################################
# soa-minimum-ttl Default SOA mininum ttl
#
# soa-minimum-ttl=3600
#################################
# soa-refresh-default Default SOA refresh
#
# soa-refresh-default=10800
#################################
# soa-retry-default Default SOA retry
#
# soa-retry-default=3600
#################################
# soa-expire-default Default SOA expire
#
# soa-expire-default=604800
#################################
# soa-serial-offset Make sure that no SOA serial is less than this number
#
# soa-serial-offset=0
#################################
# socket-dir Where the controlsocket will live
#
socket-dir=/var/run
#################################
# strict-rfc-axfrs Perform strictly rfc compliant axfrs (very slow)
#
# strict-rfc-axfrs=no
#################################
# urlredirector Where we send hosts to that need to be url redirected
#
# urlredirector=127.0.0.1
#################################
# use-logfile Use a log file
#
# use-logfile=yes
#################################
# webserver Start a webserver for monitoring
#
# webserver=no
#################################
# webserver-address IP Address of webserver to listen on
#
# webserver-address=127.0.0.1
#################################
# webserver-password Password required for accessing the webserver
#
# webserver-password=
#################################
# webserver-port Port of webserver to listen on
#
# webserver-port=8081
#################################
# webserver-print-arguments If the webserver should print arguments
#
# webserver-print-arguments=no
#################################
# wildcard-url Process URL and MBOXFW records
#
# wildcard-url=no
#################################
# wildcards Honor wildcards in the database
#
# wildcards=
#################################
# version-string What should PowerDNS return for version
# allowed methods are anonymous / powerdns / full / custom
version-string=powerdns
include=/etc/powerdns/pdns.d
Рекурсивные запросы разрешены для 127.0.0.1, больше никому нельзя. Можете связаться со мной в аське, или в джаббере. Аська в разделе контакты, джабберsudouser@sudouser.com
Спасибо вам огромное вам webmoney или смс копилку на сайт надо)) для благодарностей. Думаю желающих много будет. Обязательно свяжусь с вами завтра днем, на ночь не буду вас тревожить.
Статья не полная на самом деле, Спасибо администратору блога он подсказал где искать, порылся я пару часов по нету и нашел замечательную вешь:
Чтобы все неизвестные запросы переадресовывал на другие сервера в инете (внешние), с чем я столкнулся, если вам это не надо можете не ставить, и так работает проверено на дебиан 5.0, но он лишнем не будет и мне он нужен. Так вот надо доставить Power DNS recursor. Буду пробывать если получиться выложу сюда. Если кто-то раньше настроить милости прсим в паблик))
Все отлично заработало. Ставил на debian 5.0
Вот мануальчик:
Устанавливаем PowerDNS recursor:
aptitude install pdns-recursor
Теперь настраиваем:
Сначала сам pdns:
mcedit /etc/powerdns/pdns.conf
# Разрешить передачу с …
allow-axfr-ips=0.0.0.0/0
#Разрешить запросы с..
allow-recursion=0.0.0.0/0
# Указываем какие ИП слушать
# если вы не используете recursor то можно поставить 0.0.0.0 (все интерфейсы)
local-address=свои адреса или адрес
# Порт который надо слушать
local-port=53
# Указываем на наш Recursor,
recursor=127.0.0.1
Теперь настраиваем PowerDNS-Recursor
mcedit /etc/powerdns/recursor.conf
allow-from=127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fe80::/10
# Указываем Hint файл, его можно взять из BIND /var/named/etc/namedb /named.root,ftp://ftp.rs.internic.net/domain/root.zone.gz
# или скачать
hint-file=/usr/local/etc/pdns/root.zone
# Адрес который надо слушать указываем только 127.0.0.1, и нечего лишнего
local-address=127.0.0.1
# Порт который надо слушать, по умолчанию 53
local-port=53
max-tcp-clients=128
version-string=
PowerDNS Recursor 3.1.7 $Id: pdns_recursor.cc 1200 2008-06-14 21:11:33Z ahu $
Раскаментируйте если не будете менять ее, по умолчанию она закоментирована
Теперь все перезапустим
/etc/init.d/pdns restart
/etc/init.d/pdns-recursor restart
Делаем проверку
на машине клиентов выполняем команду
nslookup вашдомен
попытался добавить зону в punycode, админка ругается на неправильность ввода. Бьюсь второй день, как понял надо в список корневых серверов добавить сервера отвечающие за зоны .рф .ру … В какую сторону гуглить ..?
Вообщем закоментировал в файлике ../poweradmin/inc/dns.inc.php условия проверки
if ($dns_strict_tld_check == «1″ && !in_array($hostname_labels[$label_count-1], $valid_tlds)) {
error(ERR_DNS_INV_TLD); return false;
}
и все добавилось. Неграмотно конечно, но работоспособно, теперь проверку надо самому делать.
доброго времени суток, у меня возникла ткая трабла на 5 шаге
Error: connect: [Error message: Access denied for user 'admindns'@'localhost' (using password: YES)] [Native code: 1045] [Native message: Access denied for user 'admindns'@'localhost' (using password: YES)]
подскажитеможет знаете в чем может быть дело…
з.ы. предплагаю что проблема с б/д но логин и пароль правильные…
Либо не правилный, либо привелегии не сброшены.