Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> POWERDNS

POWERDNS

Автор: salimk.


Статья о том как мигрировать с ISC Bind на POWERDNS

1.Предисловие
В большинство компаний (фирм, контор), есть наверняка ДНС Сервера
Обычно это MS DNS на Windows 2000/2003 server или BIND на UNIX систем,
У меня как раз стоял BIND, и на внутреннем и наружном сервере,
Потом я увидел вот это http://www.opennet.ru/opennews/art.shtml?num=16872
Думаю все хватит пора переходит на что то новое и не глучное.
Я давно присматривался на PowerDNS. Думаю сойдет, тем более что это уязвимость ее не коснулась.
По мозговав не много пошарил по мануалу, и оказал не плохая вещь, то что надо

И так что мы имеем 2 сервака, внутренний и наружный, оба на FreeBSD 6.2 у обоих поднять BIND ISC 9.3
a. Внутренний – на нем крутится ISC DHCP+DDNS, его пока трогать не будем.

b. Наружный он у меня играет в роли мастера, на нем завидены три мастер домена, и один слейв
   domain1.net
   domain2.net
   domain3.net

   slavedomain.com
(Скорым времени будет еще пару доменов.)

ОС FreeBSD 6.2. amd64
MySQL 5.0.41
BIND ISC 9.3
Apache/2.2.4 (FreeBSD) mod_ssl/2.2.4 OpenSSL/0.9.8e DAV/2 PHP/5.2.2 with Suhosin-Patch
и куча другого софта типа: SQUID, Postfix, Dovecot, OpenWebmail, ProFTP
Два сетевых интерфейса
em1 – 10.10.10.5 (внешний)
em0 – 192.168.0.254 (внутренний)

2. Установка Power DNS
Установка из портов
сd /usr/ports/dns/powerdns
make install clean

Я выбрал MYSQL, т.к. он был уже поднять, на нем крутятся POSTFIX, SPAMASSISGN, ProFTP,

3.  Установка Power DNS recursor
Он мне нужен для того чтобы все неизвестные запросы переадресовывал на другие сервера в инете (внешние), если вам это не надо можете не ставит, но он лишнем не будет

сd /usr/ports/dns/powerdns-recursor
make install clean


4. Создаем БД

cd /usr/local/share/examples/powerdns/
mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6965
Server version: 5.0.41 FreeBSD port: mysql-server-5.0.41

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>  CREATE DATABASE IF NOT EXISTS powerdns;

mysql>  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE,
mysql>  DROP, INDEX, ALTER on ' powerdns '.* to
mysql>  powerdns @localhost IDENTIFIED BY ' powerdns ';

mysql>  use powerdns;

mysql>  \. tables-mysql.sql

5. Конфигурируем PowerDNS
Добавляем следующие строки в
#/usr/local/etc/pdns/pdns.conf

# Разрешить передачу с …
allow-axfr-ips=0.0.0.0/0

#Разрешить запросы с..
allow-recursion=0.0.0.0/0

# cache-ttl	Seconds to store packets in the PacketCache
cache-ttl=20

# Папка с конфигом
config-dir=/usr/local/etc

# Отключаем control-console, режим откладки
control-console=no

# Включаем  daemon
daemon=yes

# Указываем наш сервер 
default-soa-name=ns1.domain1.net

# default-ttl	Seconds a result is valid if not set otherwise
default-ttl=3600

# Отключаем guardian
guardian=no

# Запускаем и настр. модуль Mysql
launch=gmysql

gmysql-host=127.0.0.1
## можна gmysql-socket=/tmp/mysql.sock
gmysql-port=3306
gmysql-user=powerdns
gmysql-dbname=powerdns
gmysql-password=powerpass

# Указываем какие ИП слушать 
# если вы не используете recursor то можно поставить 0.0.0.0 (все интерфейсы)
local-address=10.10.10.5, 192.168.0.254

# IPv6 я не использую, по этому не ставлю
# local-ipv6=

# Порт который надо слушать
local-port=53

# Логим все
logfile=/var/log/pdns/pdns.log
loglevel=9

# Включаем подержу Master, он же у нас мастер
master=yes

# max-queue-length	Maximum queuelength before considering situation lost
max-queue-length=5000

# Макс. кол-во подключении TCP соед.
max-tcp-connections=10

# Указываем на наш Recursor,
# если вы не ставили PowerDNS-Recursor, то пропускаем 
recursor=127.0.0.1

# Не забудьте создать Юзера pdns принадлежащий группе pdns
setgid=pdns
setuid=pdns

# Включаем подержу slave, у нас есть один slave домен
slave=yes
slave-cycle-interval=600

# smtpredirector	Our smtpredir MX host
smtpredirector=

# soa-expire-default	Default SOA expire
soa-expire-default=604800

# 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-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

# use-logfile	Use a log file
use-logfile=yes

# Показываем версию POWERDNS в пакетах - full, anonymous, powerdns or custom
version-string=powerdns

# Включаем ВЕБ сервер для мониторинга
webserver=yes

# ИП каторую надо слушать я указал на локальную сеть
webserver-address=192.168.0.254

# Пасс на веб сервер он мне не нужен
# webserver-password=

# Порт на веб сервер, смотрите чтобы он не был занять другой ПО, например
# Apache
webserver-port=8081

webserver-print-arguments=yes

################################

#


6.  Конфигурируем я PowerDNS-Recursor

Добавляем следующие строки в
#/usr/local/etc/pdns/recursor.conf


allow-from=127.0.0.0/8, 10.0.0.0/8

# Указываем Hint файл, его можно взять из BIND /etc/namedb/named.root,
# или скачать  ftp://ftp.rs.internic.net/domain/named.root
hint-file=/usr/local/etc/pdns/named.root

# Адрес который надо слушать указываем только 127.0.0.1, и нечего лишнего
local-address=127.0.0.1
# Порт который надо слушать, по умолчанию 53
local-port=53

max-tcp-clients=128

# Не забудьте создать Юзера pdns_recursor принадлежащий группе pdns
setgid=pdns
setuid=pdns_recursor

socket-dir=/var/run/

version-string=PowerDNS Recursor

7.  Импорт зон из BIND
Теперь на вытянуть все записи из BIND

/usr/local/bin/zone2sql --named-conf=/var/named/etc/namedb/named.conf \
? --gmysql > domains.sql

и сливаем их Mysql

mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6965
Server version: 5.0.41 FreeBSD port: mysql-server-5.0.41

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


mysql>  use powerdns;

mysql>  \. domains.sql

8. Запуск

Правим скрипт запуска

Добовляем в /usr/local/etc/rc.d/pdns

# REQUIRE: DAEMON mysql pdns_recursor

Добовляем в /usr/local/etc/rc.d/pdns
# REQUIRE: DAEMON mysql pdns_recursor

Добовляем в /usr/local/etc/rc.d/pdns-recursor
# REQUIRE: SERVERS cleanvar DAEMON mysql

Добовляем в /usr/local/etc/rc.d/mysql-server (не обязательно но иногда полезно)
# BEFORE:  DAEMON

#########

Пробуем запустить PowerDNS
ns1# /usr/local/etc/rc.d/pdns start

Вроде ОК

Пробуем запустить PowerDNS-recursor

ns1# /usr/local/etc/rc.d/pdns-recursor start

Starting pdns_recursor.
Aug 01 12:57:02 PowerDNS recursor 3.1.7 (C) 2001-2008 PowerDNS.COM BV (Jul 24 20
08, 19:22:16, gcc 3.4.6 [FreeBSD] 20060305) starting up
Aug 01 12:57:02 PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free softwar
e, and you are welcome to redistribute it according to the terms of the GPL vers
ion 2.
Aug 01 12:57:02 Operating in 64 bits mode
Aug 01 12:57:02 Reading random entropy from '/dev/urandom'
Aug 01 12:57:02 Only allowing queries 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
Aug 01 12:57:02 Will not send queries to: 127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/1
6, 172.16.0.0/12, ::1/128, fe80::/10
Aug 01 12:57:02 Inserting rfc 1918 private space zones
Aug 01 12:57:02 Listening for UDP queries on 127.0.0.1:5353
Aug 01 12:57:02 Not decreasing socket buffer size from 65535 to 65000
Aug 01 12:57:02 Listening for TCP queries on 127.0.0.1:5353
Aug 01 12:57:02 Done priming cache with root hints
Aug 01 12:57:02 Calling daemonize, going to background

Вроде ОК

9. Веб-морда
Для Power-DNS есть куча Морд
вот они
- PDNS Admin (http://freshmeat.net/projects/pdns-admin/)
- PowerAdmin (http://www.poweradmin.org/)
- PowerDNS Administration (http://sourceforge.net/projects/powerdnsadmin/)
- TUPA (http://www.tupa-dns.org/)
- WebDNS (http://freshmeat.net/projects/webdns/)
- ZoneAdmin (http://freshmeat.net/projects/zoneadmin/)

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

Больше всего мне понравился PowerAdmin

можно ставит из порта
cd /usr/ports/dns/poweradmin
make install clean

или сделать как я
Качаем файл poweradmin-2.1.1.tgz (на данный момент последняя версия была Poweradmin 2.1.1, не забываем посмотреть посвежее)
https://www.poweradmin.org/download/poweradmin-2.1.0.tgz
пока качается устанавливаем необходимые проги
а нам нужно
Apache 1.3 или 2.0 и выше
expat
libiconv
libxml2
mysql-client-5.0
gettext
pear-1.5
pear-DB-1.7
pear-MDB2
pear-MDB2_Driver_mysql
perl-5.8.8 php5
php5-mysql
php5-pcre
php5-xml
pkg-config


это есть в портах, все это уже стояла у меня, тем более тут ничего сложного нету так что я не буду зацикливатся на этом.

теперь распакавыем poweradmin-2.1.0.tgz, ну например в /usr/local/www/data, тут разницы нет куда, если честно я распаковал в другую папку, на моем серваке есть отдельная страница АДМИНА, но не важно идем дальше

tar –zxf poweradmin-2.1.0.tgz –C  /usr/local/www/data

идем в папку /usr/local/www/data/poweradmin-2.1.0

для начало сливаем MYSQL в базу powerdns, следующий файлик
poweradmin-mysql-db-structure.sql, он находится в папке docs

Затем идем в папку inc (предварительно делаем chmod –R 0777)
cp config-me.inc.php config.inc.php

и добавляем следующие строки
poweradmin-2.1.0/inc/config.inc.php

$db_host		= "127.0.0.1";
$db_user		= "powerdns";
$db_pass		= "powerdnspass";
$db_name		= "powerdns";
$db_type		= "mysql";

Добавляем следующие строки в апач

Alias /poweradmin/      /usr/local/www/data/poweradmin-2.1.0/

<Directory "/usr/local/www/data/poweradmin-2.1.0/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

В браузере переходим по адресу http://example.net/poweradmin/install
где example.net имя ваше сервера

логин и пароль "admin"

Следуя инструкциям выполняем все условия, после успешного завершения,
удаляем папку install

И опять в браузере переходим по адресу http://example.net/poweradmin/
где example.net имя ваше сервера

логин и пароль "admin"
10. Делаем проверку
на машине клиентов



размещено: 2008-09-03,
последнее обновление: 2011-03-29,
автор: salimk


freeman, 2008-08-17 в 4:53:32

ОС FreeBSD 6.2. amd62 - это что пару ножек отпилиленых попалось ? :) Исправь, а то могут не понять

ProFTP, 2008-08-19 в 10:27:55

морда не плохая
http://www.nictool.com/docs/

kamazee, 2008-08-19 в 15:08:05

Это на каком языке написано? Читать невозможно ):

salimk, 2008-08-20 в 10:47:21

ProFTP, 2008-08-19 в 10:27:55

морда не плохая
http://www.nictool.com/docs/


Ладно спасибо попробую...

GR, 2008-09-03 в 17:08:07

IMHO чтоб не пришлось переписывать стартовый скрипт надо в
/usr/local/etc/pdns/pdns.conf
daemon=yes
у меня так получилось

www2, 2008-09-04 в 7:29:55

И только админы корневых серверов ещё не в курсе, что PowerDNS лучше ISC BIND и NSD
http://ru.wikipedia.org/wiki/...

arksu, 2008-09-11 в 19:44:33

из статьи не понятно как запускать recursor.
а делать надо так:
вешать recursor на отличный от 53 порт, т.к. на 53 уже будет висеть pdns, например 5353, как сделал автор, только в конфиге у него указан 53 порт
а в конфиге pdns указывать адрес рекурсора:
recursor=127.0.0.1:5353

тогда все заводится супер

arksu, 2008-09-11 в 22:10:29

PDNS-Admin
ставится из архива за 5 минут (может даже меньше=))
имхо это лучшая админка =)

arksu, 2008-09-12 в 11:45:30

[url=http://www.lissyara.su/scripts/downloads.php?file=23d9d8f68067948f66b33babb0b7f5f6]

arksu, 2008-09-12 в 14:21:28

Перевел админку PDNS-Admin 1.1.7 (текущая версия на русский полностью) потратил 1 день =)

скачать тут:
http://www.ark.su/ru.rar

godlike, 2008-09-12 в 17:47:17

Жжош:) Меня когдато хватило только на перевод админки pure-ftpd:)

arksu, 2008-09-13 в 12:27:46

сама админка тут:
http://www.ark.su/pdnsadmin1.1.7.tgz

salimk, 2008-09-15 в 16:06:59

из статьи не понятно как запускать recursor.
а делать надо так:
вешать recursor на отличный от 53 порт, т.к. на 53 уже будет висеть pdns, например 5353, как сделал автор, только в конфиге у него указан 53 порт
а в конфиге pdns указывать адрес рекурсора:
recursor=127.0.0.1:5353

тогда все заводится супер


Разницы нет на каком порту он может вешать
хоть на 25, будет работать
если хочешь можеш поменять порт у recursor'а, например на 5353, не забудь поменять в pdns.conf
recursor=127.0.0.1:5353

в моем случай
POWERDNS вешает только на следующих адресах
10.10.10.5:53
192.168.0.254:53
recursor только
127.0.0.1:53
и все работает и даже не конфликтует

Aug 01 12:57:02 Inserting rfc 1918 private space zones
Aug 01 12:57:02 Listening for UDP queries on 127.0.0.1:5353

- а на это не обращай внимание когда писал статью я проста экспериментировал с recursor-ом
в данный момент PDNS и recursor у меня работает на 53 порту

salimk, 2008-09-15 в 16:14:56

Кстати я где-то вычитал не помню где :(
что вместо recursor-а можна воткнуть BIND
пока не пробовал что получатся...

arksu, 2008-09-16 в 10:25:36

Разницы нет на каком порту он может вешать
хоть на 25, будет работать
если хочешь можеш поменять порт у recursor'а, например на 5353, не забудь поменять в pdns.conf
recursor=127.0.0.1:5353


так в том то все и дело! что в конфиге автора recursor=127.0.0.1 - без указания порта =) почему и уточнил (у самого сначала не завелось и не мог понять почему:))

можно воткнуть и BIND. по сути recursor - это тот же днс сервер (резолвит рекурсивно и кеширует)

кстати. чтобы корректо запускался pdns нужно добавить в секцию REQUIRE скрипта /usr/local/etc/rc.d/pdns
строку mysql

получится типа такого:
# REQUIRE: DAEMON mysql

это нужно для того чтобы мускул 100% стартовал раньше pdns

arksu, 2008-09-16 в 10:27:27

еще раз по поводу BIND - а смысл ставить его вместо родного recursor???
имхо BIND - жутко дырявая "весчь" и лучше использовать "правильный" pdns_recursor - не подверженный атакам кэша

banec, 2008-10-10 в 16:46:23

>>При первом запуске я заметил после PDNS, ни что не запускается
в rc.conf добавить pdn_enable="YES"
чтоб в фоне запускалась то daemon=yes

burzum, 2008-10-23 в 16:38:15

А базу сложить в LDAP можно? Может кто-то пробывал...

arksu, 2008-10-24 в 18:51:07

базу в LDAP не положить штатными методами. только править код ручками.

Salimk, 2008-11-19 в 7:53:04

Базу в LDAP самому интересно...
кстати pdns работает с LDAP

Salimk, 2008-11-19 в 8:06:33

Вот нашел ссылку
http://www.linuxnetworks.de/doc/index.php/PowerDNS_ldapbackend

YuryRelax, 2009-10-29 в 20:49:21

Автору респект написано все нормально и понятно,
Поднял на Дебиан 5.0 все отлично работает

brooke, 2009-11-03 в 13:08:01

Друзья, киньте плз перевод, [http://www.ark.su/ru.rar - not found]

Андрей, 2009-11-29 в 7:37:35

В качестве рекурсора использую dnsmasq. в /var/log/messages постоянно валится нечто вроде Nov 29 09:32:41 noc pdns[740]: Recursive query for remote 127.0.0.1 with internal id 1 was not answered by backend within timeout, reusing id
Править тайм-аут?

arksu, 2009-12-18 в 2:47:04

по просьбе трудящихся перезалил перевод.
ссылка рабочая
[url=http://ark.su/ru.rar]

dima, 2009-12-20 в 22:11:05

Не могу понять,может кто сталкивался,при запуске выдаёт ошибку
/usr/local/etc/rc.d/pdns start
Starting pdns.
Dec 21 04:00:53 Reading random entropy from \'/dev/urandom\'
Dec 21 04:00:53 Unable to load module \'/usr/local/lib/libqmysqlbackend.so\': Cannot open \"/usr/local/lib/libqmysqlbackend.so\"
Dec 21 04:00:53 dnsbackend unable to load module in qmysql
/usr/local/etc/rc.d/pdns: WARNING: failed to start pdns

зрук, 2009-12-29 в 18:27:21

И эти люди советуют не использовать bind. Я в шоке.

clamath, 2009-12-30 в 14:38:44

1. gmysql-host=127.0.0.1 у меня не заработало
изменил на gmysql-host=localhost

2.logfile    /var/log/pdns.log    Logfile to use (Windows only)
Во фре все логи PDNS сыпятся в /var/log/messages. Чтоб логи писались в /var/log/pdns.log надо в /etc/syslog.conf вбить следующее:
!pdns
*.*      /var/log/pdns.log
!pdns_recursor
*.*     /var/log/pdns.log
и перечитать конфиг сислога: /etc/rc.d/syslogd reload

Vadim, 2010-03-19 в 0:42:28

А кто разобрался, что такое supermaster и для чего он нужен?

Dwolfix, 2010-06-16 в 12:49:14

Там, где MySQL запущен с опцией skip-networking, нужно в конфиге PowerDNS указать:
gmysql-socket=/tmp/mysql.sock
При работе с мускульными базами из прилагаемых скриптов наблюдается неправильное формирование SOA, в результате чего внешние сервера видят все время одну и ту же версию зоны и не считают нужным обновляться. Исправленные скрипты выложу на форуме. Вот только веточки нет для PowerDNS )))

Виталий, 2010-07-12 в 16:06:36

Пытаюсь создать базу.
ввожу>>>mysql>  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE,
mysql>  DROP, INDEX, ALTER on ' powerdns '.* to
mysql>  powerdns @localhost IDENTIFIED BY ' powerdns ';

Почему это не одна строка?!?!?!
После мне гордо кидают >>>> ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' powerdns '.* to powerdns@localhost IDENTIFIED BY ' powerdns '' at line 1
mysql 5.0.86. Где ветка форума?

Dwolfix, 2010-07-13 в 7:26:39

Попробуй так:
mysql> CREATE DATABASE IF NOT EXISTS powerdns;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,
    > INDEX, ALTER on powerdns.* TO 'powerdns'@'localhost'
    > IDENTIFIED BY 'powerdns';
mysql> FLUSH PRIVILEGES;

Виталий, 2010-07-13 в 11:46:22

Пытаюсь создать базу.
ввожу>>>mysql>  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE,
mysql>  DROP, INDEX, ALTER on ' powerdns '.* to
mysql>  powerdns @localhost IDENTIFIED BY ' powerdns ';

Почему это не одна строка?!?!?!
После мне гордо кидают >>>> ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' powerdns '.* to powerdns@localhost IDENTIFIED BY ' powerdns '' at line 1
mysql 5.0.86. Где ветка форума?

Виталий, 2010-07-13 в 16:55:39

Пытаюсь создать базу.
ввожу>>>mysql>  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE,
mysql>  DROP, INDEX, ALTER on ' powerdns '.* to
mysql>  powerdns @localhost IDENTIFIED BY ' powerdns ';

Почему это не одна строка?!?!?!
После мне гордо кидают >>>> ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' powerdns '.* to powerdns@localhost IDENTIFIED BY ' powerdns '' at line 1
mysql 5.0.86. Где ветка форума?

Рекурсия не проходит.Я так понимаю рекурсор должен обращаться к корневым серверам, если хинт файл указан?

Dwolfix, 2010-07-13 в 21:56:57

Предлагаю дальнейшее обсуждение перенести на форум PDNS +Poweradmin
http://forum.lissyara.su/viewtopic.php?f=4&t=17666

dasknix, 2011-02-06 в 4:42:42

опеч. "1.Предисловие
В большинство компаний"

после правки комент потрите =]

dasknix, 2011-02-06 в 5:05:58

про "Потом я увидел вот это http://www.opennet.ru/opennews/art.shtml?num=16872
Думаю все хватит пора переходит на что то новое и не глучное.
Я давно присматривался на PowerDNS. Думаю сойдет, тем более что это уязвимость ее не коснулась." наткнулся в этих ваших нифига не читабельных и полунеадекватных опеннетах

http://www.kb.cert.org/vuls/id/CRDY-7FFQZ6

btw ещё опеч. ..
"хватит пора переходит "

аннонниммус, 2012-02-10 в 20:15:16

grammar nazi негодуэ!



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0446 секунд
Из них PHP: 34%; SQL: 66%; Число SQL-запросов: 77 шт.
Исходный размер: 62029; Сжатая: 14119