Документация по ОС FreeBSD Пятница, 19.04.2024, 09:55
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » DNS

POWERDNS [2008]
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=no

# Указываем наш сервер 
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-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, 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

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

socket-dir=/var/run/

version-string=PowerDNS Recursor 3.1.7 $Id: pdns_recursor.cc 
 1200 2008-06-14 21:11:33Z ahu $

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. Запуск

При первом запуске я заметил после PDNS, ни что не запускается
Тогда я создал свой скрипт для запуска, только сильно не пенайти, создал как мог.

mkdir /usr/local/etc/rc_old
cd /usr/local/etc/rc.d
mv pdns /usr/local/etc/rc_old/
touch /usr/local/etc/rc.d/pdns
chmod /usr/local/etc/rc.d/pdns

Содержимое /usr/local/etc/rc.d/pdns
#!/bin/sh
#
# PROVIDE: pdns
# REQUIRE: LOGIN

. /etc/rc.subr

# set defaults
pdns_enable=${pdns_enable:-"NO"}
#Указываем UID и GID pdns
pdns_uid=1007
pdns_gid=1007

name=pdns
rcvar=`set_rcvar`
start_cmd="pdns_start"
stop_cmd="pdns_stop"

load_rc_config ${name}

pdns_start ()
{
 echo "Starting PowerDNS server"
 /usr/local/sbin/pdns_server --setgid=${pdns_gid} \
 --setuid=${pdns_gid} --daemon=no --guardian=no \
 --control-console --loglevel=9 > /dev/null &
}

pdns_stop ()
{
 echo "Stopping PowerDNS server"
 pidfile=/var/run/pdns.pid
 kill `cat $pidfile`
}


run_rc_command "$1"

#########

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

Starting PowerDNS server
ns1# Aug 01 12:54:10 This is module gmysqlbackend.so reporting
Aug 01 12:54:10 This is a standalone pdns
Aug 01 12:54:10 UDP server bound to 10.10.10.5:53
Aug 01 12:54:10 UDP server bound to 192.168.0.254:53
Aug 01 12:54:10 TCP server bound to 10.10.10.5:53
Aug 01 12:54:10 TCP server bound to 192.168.0.254:53
Aug 01 12:54:10 PowerDNS 2.9.21 (C) 2001-2006 PowerDNS.COM BV (Jul 24 2008, 19:18:54, gcc 3.4.6 [FreeBSD] 20060305) starting up
Aug 01 12:54:10 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:54:10 Set effective group id to 1007
Aug 01 12:54:10 Set effective user id to 1007
Aug 01 12:54:10 DNS Proxy launched, local port 26807, remote 127.0.0.1:5353
Aug 01 12:54:10 Creating backend connection for TCP
Aug 01 12:54:10 Master/slave communicator launching
Aug 01 12:54:10 Launched webserver on 192.168.0.254:8081
Aug 01 12:54:10 Fatal error in control listener: Guardian exited - going down as
well
Aug 01 12:54:10 gmysql Connection succesful
Aug 01 12:54:10 About to create 3 backend threads for UDP
Aug 01 12:54:10 gmysql Connection succesful
Aug 01 12:54:10 gmysql Connection succesful
Aug 01 12:54:10 All slave domains are fresh
Aug 01 12:54:10 No master domains need notifications
Aug 01 12:54:11 gmysql Connection succesful
Aug 01 12:54:11 gmysql Connection succesful
Aug 01 12:54:11 Done launching threads, ready to distribute questions

Вроде ОК

Пробуем запустить 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, не забываем посмотреть посвежее)
http://freebsd.3dn.ru/введите_адрес
пока качается устанавливаем необходимые проги
а нам нужно
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. Делаем проверку
на машине клиентов выполняем команду
# nslookup www.domain1.net

Server: UnKnown
Address: 192.168.0.254

Name: www.domain1.net
Address: 10.10.10.5

# nslookup www.lissyara.su

Server: UnKnown
Address: 192.168.0.254

Non-authoritative answer:
Name: hosting.lissyara.su
Address: 77.221.149.162
Aliases: www.lissyara.su

И радуемся мы все таки не лузере


P.S. Во время импорта зон из BIND, все зоны не зависимо от slave или master, они переводится в режим "native", надо в MySQL в базе powerdns, таблица domains, в графе type, по менять значения native на slave или master, или можно еще проще
в PowerAdmin в List zones, в графе type, по менять значения native на slave или master.

P.S. На этом я не останавливаюсь у меня же есть внутренний сервер, вот сейчас в активном поиске
альтернативном DHCP Сервера работающий с MYSQL, будем пробовать прикручивать PDNS+DHCP.

P.S. Данная статья и актуальная и для PGSQL.

Используемые материалы
http://www.powerdns.com/
http://www.poweradmin.org/
http://www.the-scream.co.uk/forums/t27204.html



Источник: http://www.lissyara.su/?id=1727
Категория: DNS | Добавил: oleg (05.09.2008) | Автор: salimk
Просмотров: 3980 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024