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

NSDadmin

Автор: terminus.


Описание работы с NSDadmin

Download:
nsdadmin-0.0.2
файл скачан размер размещён примечание
nsdadmin-0.0.2.tar.gz
747 84.8kb 2010-05-04 nsdadmin-0.0.2.tar.gz



По-русски:

NSDadmin - это веб интерфейс для администрирования DNS сервера NSD. Работать
он должен на той же машине где запущен сам NSD. NSDadmin позволяет сохранять
DNS зоны, TSIG ключи и другую информацию в базе данных MySQL, и переодически
производить одностороннюю синхронизацию этой информации с конфигурационными
файлами сервера NSD. NSDadmin держит свои рабочие файлы в отдельной
директории файловой системы (nsdadmin). Специальный скрипт nsdadmin_poller
переодически производит объединение изменений сделанных с помошью NSDadmin,
с основной конфигурацией сервера NSD.

Небольшая инструкция о том, как создать ваш первый домен сразу же после
успешной установки NSDadmin:

- Войдите в систему как пользователь root (пароль по-умолчанию: root).
- Создайте нового Клиента с именем FIRSTCLIENT.
- Создайте новый мастер Домен example.com для FIRSTCLIENT.
- Создайте нового пользователя в домене example.com с правами администратора.
- Создайте первую запись типа SOA в домене example.com.
- Создайте так же любые другие записи в этом домене.
- Нажмите кнопку "Applay". Если не будет никаких ошибок в данных, то появится
 баннер с текстом "Zones file created sucessfuly!".
- Нажмите на кнопку "Show Current" и вы увидите содержимое текстового файла
 только что сгенерированного и сохраненного на диске из записей базы данных.
- Подождите 5 минут (или вручную запустите скрипт nsdadmin_poller).

После выполнения этих шагов, новые данные будут внесены в базу сервера NSD!
Проверить это можно будет с помошью выполнения команд nslookup или dig.


======================================================================

Для использования NSDadmin необходимо:

- Apache (или другой сервер с поддержкой PHP) запущенный на машине с NSD.
- PHP 5.2.x (или позний) + extensions (или по крайней мере плагин MySQL).
- MySQL сервер с поддержкой MyISAM (5.0.x). PostgreSQL не тестировался.
- sudo установленный на машине с NSD.
- уже настроенный и работающий сервер NSD ;)
- вся система работающая под FreeBSD или Linux ;)


Шаги для конфигурации:

1) Создайте новый виртуалхост в Apache (например такой):
<VirtualHost *:80>
   ServerAdmin root@nsd.host
   DocumentRoot "/usr/local/www/nsdadmin"
   ServerName nsdadmin.nsd.host
   ErrorLog "/var/log/apache/nsdadmin-error_log"
   CustomLog "/var/log/apache/nsdadmin-access_log" common

   <Directory "/usr/local/www/nsdadmin">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
   </Directory>

</VirtualHost>


2) Отредактируйте конфигурационный файл ./modules/globalconfig.inc.php
Впишите там правильные имя пользователя и пароль для доступа к базе данных,
а так же пути к системным утилитам и другую информацию.
Я использую FreeBSD, если у вас Linux, то надо будет поменять пути к тем
самым утилитам.

Не забудьте изменить $GLOBALCONFIG['configured'] на TRUE когда внесете
все необходимые изменения.


3) Установите новую MySQL базу данных для nsdadmin используя скрипт
./install/install_database_and_user.sql Не забудьте предварительно
отредактировать его - там надо будет вписать/поменять имя пользователя
и пароль для доступа к базе.

mysql -u root -p < ./install_database_and_user.sql


4) Установите и настройте sudo чтобы дать возможность пользователю www
(из-под которого работает Apache) иметь доступ к системным командам.
Используя visudo внесите в конфигурацию sudo следующие строки:

www ALL=NOPASSWD: /usr/local/etc/rc.d/nsd
www ALL=NOPASSWD: /usr/local/sbin/nsdc
www ALL=NOPASSWD: /usr/sbin/chroot
www ALL=NOPASSWD: /usr/sbin/chown
www ALL=NOPASSWD: /usr/sbin/kill


5) Создайте где-нибудь отдельную директорию под именем nsdadmin.
Эту директорию система будет использовать для дампа текстовых файлов с
информацией из базы. Логичным будет создать требуемую директорию внутри
директории настроенной в конфиге NSD как zonesdir. Например, если zonesdir
указана как /usr/local/etc/nsd/zones то создаем nsdadmin в ней:

mkdir /usr/local/etc/nsd/zones/nsdadmin
mkdir /usr/local/etc/nsd/zones/nsdadmin/master
mkdir /usr/local/etc/nsd/zones/nsdadmin/slave
chmod -R 755 /usr/local/etc/nsd/zones/nsdadmin
touch /usr/local/etc/nsd/zones/nsdadmin/includes.conf
chown -R www:bind /usr/local/etc/nsd/zones/nsdadmin


6) Отредактируйте nsd.conf.
Ниже приводится пример файла nsd.conf. Вам надо будет добавить в ваш файл
только одну новую директиву указывающую подключать внешний вайл с конфигурацией
(include: "/usr/local/etc/nsd/zones/nsdadmin/includes.conf")

server:
       chroot: "/usr/local/etc/nsd"
       ip-address: 0.0.0.0
       port: 53
       ip4-only: yes
       identity: "DNS"
       hide-version: yes
       database: "/usr/local/etc/nsd/data/nsd.database"
       logfile: "/var/log/nsd.log"
       server-count: 2
       pidfile: "/usr/local/etc/nsd/run/nsd.pid"
       zonesdir: "/usr/local/etc/nsd/zones"
       difffile: "/usr/local/etc/nsd/data/ixfr.db"
       xfrdfile: "/usr/local/etc/nsd/data/xfrd.state"

       include: "/usr/local/etc/nsd/zones/nsdadmin/includes.conf"


7) Настройте cron на переодическое выполнение nsdadmin_poller. Сохраните
этот скрипт где-нибудь (например в /root/bin). Предварительно отредактируйте
nsdadmin_poller и укажите там корректный путь к nsdc (если это необходимо).
Отредактируйте crontab рута:

*/5 * * * * root /root/bin/nsdadmin_poller


8) Теперь вы можете удалить директорию install и начинать использовать систему.



Тестировалось в FreeBSD 7.3-STABLE и FreeBSD 9.0-CURRENT используя:
nsd-3.2.4_1
apache-2.2.11_7
php5-5.2.10
php5-extensions-1.3
sudo-1.7.2.2
mysql-server-5.0.83


======================================================================
======================================================================

English:

NSDadmin is a web based administration interface that should be run on
the same server there NSD is running. NSDadmin allows you to store DNS
zones, TSIG keys and other info in MySQL database and periodicaly
merge it from there into NSD config files. NSDadmin stores it's files
and subdirectories in separate directory in filesystem (nsdadmin).
Separate shell script named nsdadmin_poller is responsable for merging
changes made by NSDadmin into main NSD database.

Quick instructions about HowTo create you first domain after sucessful
NSDadmin setup:

- Login as root user (default password: root)
- Create new Client FIRSTCLIENT
- Create new Domain (type master) example.com for FIRSTCLIENT
- Create new User with admin rights in example.com
- Create SOA record for example.com
- Create other DNS records as you like
- Click "Applay" button. If there is no errors in you domain then you
 will se banner "Zones file created sucessfuly!"
- Click "Show Current" button and you will see content of zonefile
 stored on disk, that have been just created from database records.
- Wait about 5 minutes (or run nsdadmin_poller by hands).

Now data from zones txt files should be megred into NSD!
Check it using nslookup or dig.


======================================================================

To start using NSDadmin you need:

- Apache (or other web server with PHP support) running on NSD host.
- PHP 5.2.x (or later) + extensions (or at least MySQL plug-in).
- MySQL server with MyISAM (5.0.x or later). PostgreSQL is untested.
- sudo installed on NSD server.
- already configured and running NSD ;)
- FreeBSD or Linux box ;)


Configuration steps:

1) Create new virtualhost in Apache as you like (for example):
<VirtualHost *:80>
   ServerAdmin root@nsd.host
   DocumentRoot "/usr/local/www/nsdadmin"
   ServerName nsdadmin.nsd.host
   ErrorLog "/var/log/apache/nsdadmin-error_log"
   CustomLog "/var/log/apache/nsdadmin-access_log" common

   <Directory "/usr/local/www/nsdadmin">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
   </Directory>

</VirtualHost>


2) Edit ./nsdadmin/modules/globalconfig.inc.php and type there correct
MySQL database password, system paths and other related info.
I'm using FreeBSD 7.3 and 9.0 on my testing NSD servers. If you are
using Linux you will need to change paths for system tools.

Do not forget to change $GLOBALCONFIG['configured'] to TRUE then
you are done.


3) Applay MySQL database from ./install/install_database_and_user.sql
Do not forget to edit it first and type correct username and password
for nsdadmin database user.

mysql -u root -p < ./install_database_and_user.sql


4) Setup sudo to allow you www user (Apache user) run system commands.
Use visudo to put in sudo configuration following this strings:

www ALL=NOPASSWD: /usr/local/etc/rc.d/nsd
www ALL=NOPASSWD: /usr/local/sbin/nsdc
www ALL=NOPASSWD: /usr/sbin/chroot
www ALL=NOPASSWD: /usr/sbin/chown
www ALL=NOPASSWD: /usr/sbin/kill


5) Create some there in the filesystem nsdadmin directory.
I like it to be placed as subdirectory under NSD zones directory.
If we have NSD configured to use /usr/local/etc/nsd/zones as zonesdir
then it would be good idea to place nsdadmin as subdir there:

mkdir /usr/local/etc/nsd/zones/nsdadmin
mkdir /usr/local/etc/nsd/zones/nsdadmin/master
mkdir /usr/local/etc/nsd/zones/nsdadmin/slave
chmod -R 755 /usr/local/etc/nsd/zones/nsdadmin
touch /usr/local/etc/nsd/zones/nsdadmin/includes.conf
chown -R www:bind /usr/local/etc/nsd/zones/nsdadmin


6) Edit nsd.conf.
There is a example of nsd.conf. You should put in you nsd.conf a new
directive (include: "/usr/local/etc/nsd/zones/nsdadmin/includes.conf")

server:
       chroot: "/usr/local/etc/nsd"
       ip-address: 0.0.0.0
       port: 53
       ip4-only: yes
       identity: "DNS"
       hide-version: yes
       database: "/usr/local/etc/nsd/data/nsd.database"
       logfile: "/var/log/nsd.log"
       server-count: 2
       pidfile: "/usr/local/etc/nsd/run/nsd.pid"
       zonesdir: "/usr/local/etc/nsd/zones"
       difffile: "/usr/local/etc/nsd/data/ixfr.db"
       xfrdfile: "/usr/local/etc/nsd/data/xfrd.state"

       include: "/usr/local/etc/nsd/zones/nsdadmin/includes.conf"


7) Setup cron to run nsdadmin_poller. Put this script somethere in
filesystem (I assube /root/bin is good place). Edit nsdadmin_poller
and type correct path to nsdc. Edit crontab:

*/5 * * * * root /root/bin/nsdadmin_poller


8) Now you can delete install folder and start using nsdadmin web.



Tested in FreeBSD 7.3-STABLE and FreeBSD 9.0-CURRENT using:
nsd-3.2.4_1
apache-2.2.11_7
php5-5.2.10
php5-extensions-1.3
sudo-1.7.2.2
mysql-server-5.0.83

======================================================================
======================================================================

Описание шагов для работы с интерфейсом будет добавлено позже. Пока программа
активно разрабатывается нет смысла описывать - все может еще поменяться.
Да и к тому же там все совсем не сложно...

Скриншоты:




































BD structure:



размещено: 2010-05-04,
последнее обновление: 2010-05-16,
автор: terminus


drurus, 2010-06-13 в 2:37:02

Возможно окажется даже полезной штукой, нужно опробовать :)
Но вот все в базы пихать зачем, хотя бы sqlite или bdb вместо мускула?

terminus, 2010-06-13 в 11:12:33

Этот проект выполнялся как контрольная работа в универе. Были определенные требования. Одно из требований - база MySQL.
Преимущество такого решения в том, что сервер базы данных может находиться на другой машине.

Еще один момент - PHP код для работы с базами "выдернут" из Postfixadmin. Там были реализованы только MySQL и Postgresql.



 

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0455 секунд
Из них PHP: 23%; SQL: 77%; Число SQL-запросов: 111 шт.
Исходный размер: 109322; Сжатая: 11979