Готовится статья о DNS сервере NSD

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Готовится статья о DNS сервере NSD

Непрочитанное сообщение terminus » 2008-06-24 20:24:42

Раньше, по долгу службы, приходилось администрировать DNS сервера. И вот, недавно вновь появилась такая необходимость — надо было настроить два авторитарных DNS для обслуживания одной зоны (master + slave). Сервера должны были смотреть в интернет. Задача — запустить зону и обеспечить автоматическое, секюрное обновления от master (192.168.0.1) к slave (192.168.0.2).

В качестве ОС однозначно решил использовать FreeBSD 7.0 RELEASE, а вот с выбором DNS сервера для такого ответственного задания, все было не так просто... Дело в том, что BIND я не считаю за DNS сервер которому можно было бы доверить держать зону выставленную в интернет. Это мое субъективное мнение. Просто я стараюсь держаться подальше от софта в котором с периодичностью раз в пол года находят дыры позволяющие удаленно заражать кеш, не говоря уже о проблемах с его производительностью. Был вариант использовать любимый и проверенный временем пакет djbdns (tinydns), но опять же что-то меня остановило. Все хорошо в софте от djb, но развитие остановилось — не пишет djb обновлений ни для djbdns ни для qmail, да и как то не хотелось снова замарачиваться с настройкой daemontools.

Выбор пал на авторитарный DNS сервер NSD 3. Честно сказать я давно присматривался с этому серверу. Недавно снова обратил свое внимание, когда вышел его брат DNS ресольвер Unbound. Почитав мануалы на оба этих продукта, пришел в выводу, что не все так грустно в мире DNS, и что у djbdns появилась достойная замена.

С архитектурной точки зрения NSD — это исключительно авторитарный DNS сервер. Он не обслуживает рекурсивные клиентские запросы и ни чего не кеширует. Так же из плюсов стоит отметить его маленькие размеры, скромное потребление ресурсов и скорость работы. На счет скорости сошлюсь на результаты тестов которые не так давно проводил Kris Kennaway http://people.freebsd.org/~kris/scaling/bind-nsd.png
Подсчитать количество потребляемых ресурсов можно здесь: http://www.nlnetlabs.nl/projects/nsd/nsd-memsize.html

Что же касается минусов, то стоит отметить функциональность. Нет никаких view'ов — хочешь чтобы кто-то видел зону так, а кто-то другой по-другому - запускай второй NSD с его данными и разруливай доступ на фаерволе. Нет точной статистики по загруженности — только аналог BIND'овских NSTATS XSTATS которые выводятся в лог файл (зато в последний BIND аж, таки, прямо, свой веб сервер встроили чтобы статистику показывать). Если нужна детальная статистика кто, что и сколько — разработчики предлагают использовать для этого сторонние утилиты анализаторы трафика.

В общем быстрого взгляда на опции конфигурации достаточно чтобы понять, что можно сделать с помощью NSD, а что не выйдет. Опций мало, все очень просто.

Так или иначе, мне BIND'овских извращений не надо. Мне надо чтобы работало.
Решено — ставим NSD!

Установка:

На момент написания этой статьи, в портах была доступна версия 3.0.7. На всякий случай упомяну процедуру обновления портов. Для версий FreeBSD начиная с 6.2 и старше, это удобно делать через portsnap:

Код: Выделить всё

# portsnap fetch
# portsnap extract
После обновления портов, ставим NSD традиционным методом:

Код: Выделить всё

# cd /usr/ports/dns/nsd
# make install clean
При первой установке, порт предлагает выбрать несколько опций конфигурации. По-умолчанию выбран вполне разумный набор, с которым можно согласиться. Опции же такие:

Код: Выделить всё

Options for nsd 3.0.7
[ ] 	ROOT_SERVER  Configure NSD as a root server
[X] 	LARGEFILE    Enable support for large files
[X] 	IPV6         Enable IPv6 support
[X] 	DNSSEC       Enable DNSSEC
[ ] 	BIND8_STATS  Enable BIND8 like NSTATS & XSTATS
[ ] 	CHECKING     Enable internal runtime checks
[X] 	TSIG         Enable TSIG support
[ ] 	NSEC3        Enable NSEC3 support
[ ] 	NSID         Enable NSID support
[X] 	DOCFILES     Enable PORTDOCS
ROOT_SERVER — по-умолчанию NSD не разрешает запускать на себе корневую зону. Опция включает такую функциональность.

LARGEFILE - не берусь прокомментировать. В README эта опция описана как «Disable large file support (64 bit file lengths). Makes off_t a 32bit length during compilation» По-умолчанию включена.

DNSSEC — включает функциональность позволяющую подписывать DNS сообщения между серверами на основе шифрования с открытым ключом и использовать другие возможности DNSSEC.

CHECKING — полезно для debug, дополнительные внутренние проверки во время работы. Снижает производительность.

TSIG — включает функциональность позволяющую подписывать DNS сообщения между серверами на основе шифрования с общим симметричным ключом.

NSEC3 — экспериментальное расширение DNSSEC (непонялчтотакое =) не надо в общем)

NSID - экспериментальное расширение позволяющее вставлять в каждый ответ DNS сервера метку однозначно идентифицирующую DNS сервер. Используется для дебага.

DOCFILES — в /usr/loca/share/doc/nsd будет установлен набор полезных руководств.


Компиляция происходит очень быстро — сервер маленький. Через пару минут порт будет собран и установлен.

Файлы устанавливаемые портом:

Код: Выделить всё

/usr/local/sbin
/usr/local/etc/nsd
/usr/local/man
/usr/local/man/man8
/usr/local/man/man5
/usr/local/sbin/nsd
/usr/local/sbin/zonec
/usr/local/sbin/nsdc
/usr/local/sbin/nsd-notify
/usr/local/sbin/nsd-checkconf
/usr/local/sbin/nsd-patch
/usr/local/sbin/nsd-xfer
/usr/local/man/man8
/usr/local/man/man8
/usr/local/man/man8
/usr/local/man/man8/nsd-notify.8
/usr/local/man/man8/nsd-checkconf.8
/usr/local/man/man8/nsd-patch.8
/usr/local/man/man8/nsd-xfer.8
/usr/local/man/man5/nsd.conf.5
/usr/local/etc/nsd/nsd.conf.sample
/usr/local/etc/rc.d/nsd.sh
/usr/local/share/doc/nsd/CREDITS
/usr/local/share/doc/nsd/ChangeLog
/usr/local/share/doc/nsd/LICENSE
/usr/local/share/doc/nsd/NSD-DATABASE
/usr/local/share/doc/nsd/NSD-DIFFFILE
/usr/local/share/doc/nsd/NSD-FOR-BIND-USERS
/usr/local/share/doc/nsd/README
/usr/local/share/doc/nsd/README.icc
/usr/local/share/doc/nsd/RELNOTES
/usr/local/share/doc/nsd/REQUIREMENTS
/usr/local/share/doc/nsd/TESTPLAN
/usr/local/share/doc/nsd/TODO
/usr/local/share/doc/nsd/UPGRADING
/usr/local/share/doc/nsd/coding-style
/usr/local/share/doc/nsd/differences.tex
Установленные инструменты:

Код: Выделить всё

nsd	- the daemon itself
nsdc		- a shell script to control the daemon
zonec		- zone compiler
nsd-notify	- a simple C program to send outbound notifies
nsd-xfer	- a program to receive zones from a master server using 
AXFR from the command line.
nsd-checkconf	- simple C program to check nsd.conf before use.
nsd-patch	- simple program that cleans IXFR changes back to zone files.
Главные инструменты с чем придется работать:

Код: Выделить всё

nsdc — главный интерфейс для локального управления демоном 
(аналог BIND'овской ndc)
nsd-checkconf — проверяет корректность конфигурации nsd.conf

# nsdc
Usage: nsdc [-c configfile] {start|stop|reload|rebuild|restart|
                                running|update|notify|patch}
options:
        -c configfile   Use specified configfile (default: /usr/local/etc/nsd/nsd.conf).
commands:
        start           Start nsd server.
        stop            Stop nsd server.
        reload          Nsd server reloads database file.
        rebuild         Compile database file from zone files.
        restart         Stop the nsd server and start it again.
        running         Prints message and exit nonzero if server not running.
        update          Try to update all slave zones hosted on this server.
        notify          Send notify messages to all secondary servers.
        patch           Merge zone transfer changes back to zone files.
В процессе установки не создается никаких новых пользователей. NSD сразу же компилится так, чтобы запускаться от имени пользователя bind который уже присутствует в системе
Это все, что касается установки из порта. Далее, идет настройка.

Настройка:
Как и каждый правильный демон, NSD требует к себе уважения. Это означает что его хозяину надо прочитать man nsd.conf, составить этот nsd.conf и составить файлы данных зон. Синтаксис nsd.conf (файла конфигурации NSD) отличается от того, что принято в BIND. Синтаксис файлов зон такой же как в BIND. NSD может работать в chroot окружении. Я поленился делать jail для запуска NSD и для большей секюрности решил использовать этот chroot. По умолчанию chroot не задействован.

Далее описание настроек сделаных на master сервере:

Стартовый скрипт запуска /usr/local/etc/rc.d/nsd.sh подправляем, для того чтобы указать на новое расположение nsd.pid:

Код: Выделить всё

##pidfile=/var/run/${name}.pid
pidfile=/usr/local/etc/nsd/run/${name}.pid
В /usr/local/etc/nsd создаем поддиректории со следующими правами доступа:

Код: Выделить всё

[root@master /usr/local/etc/nsd]# ls -la
drwxr-xr-x  	5 root  	wheel  	512 Jun 24 18:22 .
drwxr-xr-x  	5 root  	wheel  	512 Jun 24 11:35 ..
drwxrwx---  	2 root  	bind   	512 Jun 24 13:38 data
-r--r-----  	1 root  	wheel  	935 Jun 24 13:28 nsd.conf
drwxrwx---  	2 root  	bind   	512 Jun 24 16:07 run
drwxr-x---  	4 root  	bind   	512 Jun 24 11:50 zones
Права доступа для ./data такие потому, что пользователь bind будет писать в нее. На работающем master сервере там автоматически создаются файлы:

Код: Выделить всё

-rw-r--r--  	1 root  	bind    	677 Jun 24 13:38 nsd.database
-rw-r--r--  	1 bind  	bind   	1524 Jun 24 14:24 xfrd.state
В директорию ./run на работающем сервере, будет писаться pid

Код: Выделить всё

-rw-r--r--  1 	bind  	bind     	5 Jun 24 16:07 nsd.pid
Директория zones содержит:

Код: Выделить всё

drwxr-x---  	2 root  	bind   	512 Jun 24 13:39 master
drwxr-x---  	2 root  	bind   	512 Jun 24 12:37 slave
Директория slave тут пустая, в директории master создан файл с именем зоны:

Код: Выделить всё

-rw-r--r--  	1 root  	bind  	1163 Jun 24 13:38 domain.su
Создаем случайный общий ключ который будет использоваться в TSIG подписях при передаче зон между master и slave. Делаем это так:

Код: Выделить всё

# dd if=/dev/urandom bs=16 count=1 2>/dev/null | openssl base64
KSVb40kv/CuHgTTvhKZ7Y5==
Конфигурационный файл nsd.conf на master такой:

Код: Выделить всё

server:
        chroot: "/usr/local/etc/nsd"
        ip-address: 0.0.0.0
        ip4-only: yes
        database: "/usr/local/etc/nsd/data/nsd.database"
        logfile: "/var/log/nsd.log"
        server-count: 5
        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"

key:
        name: "master-slave.domain.su"
        algorithm: hmac-md5
        secret: "KSVb40kv/CuHgTTvhKZ7Y5=="

zone:
        name: "domain.su"
        zonefile: "./master/domain.su"
        notify: 192.168.0.2  master-slave.domain.su
        provide-xfr: 192.168.0.2  master-slave.domain.su

Файл зоны domain.su на master такой (примерно):

Код: Выделить всё

$TTL 1800 ;minimum ttl
domain.su.	IN	SOA	ns1.domain.su. hostmaster.domain.su. (
			2008062414	;serial
			3600	 	;refresh
			9600		;retry
			180000	 	;expire
			600		;negative ttl
			)

		NS		ns1.domain.su.
		NS		ns2.domain.su.
		MX	10	mail
		A		127.0.0.24

ns1		A		192.168.0.1
ns2		A		192.168.0.2
www		A		127.0.0.24
ftp		A		127.0.0.26
mail		A		127.0.0.27
После создания nsd.conf и файла зоны, необходимо выполнить:

Код: Выделить всё

# nsd-checkconf /usr/local/etc/nsd/nsd.conf
Если нет сообщений об ошибках то создаем базу nsd.database в которой собственно и будут храниться данные о записях зоны:

Код: Выделить всё

# nsdc rebuild
zonec: reading zone "domain.su".
zonec: processed 8 RRs in "domain.su".
zonec: done with 0 errors.
После этого база /usr/local/etc/nsd/data/nsd.database будет создана.

Вносим в /etc/rc.conf строку nsd_enable="YES" и запускаем сервер

Код: Выделить всё

# /usr/local/etc/rc.d/nsd.sh start
После этого создадутся файлы:

Код: Выделить всё

/usr/local/etc/nsd/run/nsd.pid
/usr/local/etc/nsd/data/xfrd.state
/var/log/nsd.log
Все в порядке — master работает. Стоит проверить ps auxw, /var/log/nsd.log, а так же через nslookup поспрашивать новый сервер и убедиться, что все ок.


Далее описание настроек сделаных на salve сервере:

Стартовый скрипт запуска /usr/local/etc/rc.d/nsd.sh подправляем для того, чтобы указать на новое расположение nsd.pid:

Код: Выделить всё

##pidfile=/var/run/${name}.pid
pidfile=/usr/local/etc/nsd/run/${name}.pid
В /usr/local/etc/nsd создаем поддиректории со следующими правами доступа:

Код: Выделить всё

[root@master /usr/local/etc/nsd]# ls -la
drwxr-xr-x  	5 root  	wheel  	512 Jun 24 18:22 .
drwxr-xr-x  	5 root  	wheel  	512 Jun 24 11:35 ..
drwxrwx---  	2 root  	bind   	512 Jun 24 13:38 data
-r--r-----  	1 root  	wheel  	935 Jun 24 13:28 nsd.conf
drwxrwx---  	2 root  	bind   	512 Jun 24 16:07 run
drwxr-x---  	4 root  	bind   	512 Jun 24 11:50 zones
Права доступа для ./data такие потому, что пользователь bind будет писать в нее. На работающем slave сервере там автоматически создаются файлы:

Код: Выделить всё

-rw-r--r--  	1 bind  	bind    	604 Jun 24 19:09 ixfr.db
-rw-r--r--  	1 root  	bind    	677 Jun 24 13:38 nsd.database
-rw-r--r--  	1 bind  	bind   	1524 Jun 24 14:24 xfrd.state
В директорию ./run на работающем сервере, будет писаться pid

Код: Выделить всё

-rw-r--r--  1 	bind  	bind     	5 Jun 24 16:07 nsd.pid
Директория zones содержит:

Код: Выделить всё

drwxr-x---  	2 root  	bind   	512 Jun 24 13:39 master
drwxr-x---  	2 root  	bind   	512 Jun 24 12:37 slave
Обе директории master и slave пока пустые:


Конфигурационный файл nsd.conf на slave такой:

Код: Выделить всё

server:
        chroot: "/usr/local/etc/nsd"
        ip-address: 0.0.0.0
        ip4-only: yes
        database: "/usr/local/etc/nsd/data/nsd.database"
        logfile: "/var/log/nsd.log"
        server-count: 5
        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"

key:
        name: "master-slave.domain.su"
        algorithm: hmac-md5
        secret: "KSVb40kv/CuHgTTvhKZ7Y5=="

zone:
        name: "domain.su"
        zonefile: "./slave/domain.su"
        allow-notify: 192.168.0.1  master-slave.domain.su
        request-xfr: AXFR 192.168.0.1  master-slave.domain.su

После создания nsd.conf и файла зоны, необходимо выполнить:

Код: Выделить всё

# nsd-checkconf /usr/local/etc/nsd/nsd.conf
Если нет сообщений об ошибках то создаем базу nsd.database в которой собственно и будут храниться данные о записях зоны:

Код: Выделить всё

# nsdc rebuild
zonec: reading zone "domain.su".
warning: slave zone domain.su with no zonefile './slave/domain.su'
(No such file or directory) will force zone transfer.
zonec: processed 0 RRs in "domain.su".
zonec: done with 0 errors.
После этого база /usr/local/etc/nsd/data/nsd.database будет создана

Вносим в /etc/rc.conf строку nsd_enable="YES" и запускаем сервер

Код: Выделить всё

# /usr/local/etc/rc.d/nsd.sh start
После этого создадутся файлы:

Код: Выделить всё

/usr/local/etc/nsd/run/nsd.pid
/usr/local/etc/nsd/data/xfrd.state
/var/log/nsd.log
Все в порядке — slave работает. Стоит проверить ps auxw и /var/log/nsd.log.


Последний шаг чтобы убедиться, что репликация между master и slave происходит как надо - заходим на master, открываем текстовый файл зоны /usr/local/etc/nsd/zones/master/domain.su и меняем там строку с серийным номером. Сохраняем файл зоны и выполняем:

Код: Выделить всё

# nsdc rebuild
# nsdc reload
Эта процедура пересоздает базу nsd.database на master (вносит туда изменения из отредактированного файла зоны) и отправляет сообщение NOTIFY на slave. Получив такое сообщение, slave запросит произвести AXFR передачу с master (192.168.0.1) и сохранит полученные данные в ixfr.db. Это важный момент! На slave база ixfr.db является своего рода логом транзакций полученных с master. Сразу после этого slave может обслуживать запросы. Текстовые данные пока еще НЕ созданы в файле ./zones/slave/domain.su

Последний штрих который необходимо сделать на slave сервере — внести в crontab root'a выполнение такой команды:

Код: Выделить всё

5       5       *       *       *       /usr/local/sbin/nsdc patch
Команда nsdc patch выполняет две операции:
1 Переносит данные из лога ixfr.db в базу nsd.database, после чего удаляет лог.
2 Создает текстовые файлы с данными зоны в /zones/slave/domain.su


Можно было бы не писать, но все же упомяну - все дальнейшие изменения в записи зоны вносятся в текстовый файл ./zones/master/domain.su на master сервере, после чего для перестройки базы и ее реплткации на slave, выполняется тот же самый цикл команд:

Код: Выделить всё

# nsdc rebuild
# nsdc reload

Замечания:
Почитав файл README и NSD-FOR-BIND-USERS из комплекта поставки NSD удалось просветлиться по поводу таких моментов:

То, является ли зона типа master или типа slave определяется отсутствием директивы request-xfr — у master ее нет, у slave она должна быть.

NSD master не поддерживает инкрементные передачи IXFR, поддерживаются только AXFR. Если мастер (как в данном примере) работает под NSD, то в конфиге slave появляется request-xfr: AXFR 192.168.0.1 master-slave.domain.su

Директива provide-xfr на master эквивалентна директивам allow-transfer + server для BIND

В BIND ассоциация TSIG ключей происходит с IP сервера с которым производится коммуникация. В NSD TSIG ключи ассоциируются с ALC записями и соответствующие ключи используются при проведении различных запросов/ответов. Таким образом при работе с одним сервером можно применять одни ключи для оповещении о изменении зоны, и другие ключи при передаче данных зоны (своя пара для notify; allow-notify и своя для provide-xfr; request-xfr)! На TSIG запросы отсылаются TSIG ответы.

В отличии от BIND, где адреса slave серверов определяются непосредственно из данных зоны (какие NS там указаны, такие значит у зоны slave), в NSD это определяется только из настроек в nsd.conf (кто указан в параметрах notify тот и slave).

xfrd.state - файл-состояния используемый на slave для отслеживания истечения срока годности записей slave зоны.

---

Прошу покомментировать/поспрашивать/поругать :smile: Если все в порядке - добавим в общую копилку. Осилил эту заметку по той же причине по которой лисяра пишет свои заметки - память дрянь - нифига не помню! А так вот и мне польза и всем кому интересно :drinks:

В следующий раз напишу про unbound...

Разместил готовую статью здесь: http://www.lissyara.su/?id=1696
Последний раз редактировалось terminus 2008-07-06 21:57:35, всего редактировалось 5 раз.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение Alex Keda » 2008-06-24 20:28:21

+1
=======
солидно.
а через раз, если можно - про бинд.
тот мохнатый мануал что на сайте - давно в архив пора...
и кстати - бинд не такая уж и плохая штука.... мне нравиться.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение terminus » 2008-06-24 20:35:07

Не, бинд это полный нуевонах, :st: я не смогу себя заставить! Так что извиняй главный =)
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение Alex Keda » 2008-06-24 21:01:14

жаль...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение Morty » 2008-06-24 21:19:00

отличная статья, очень стиль в котором статья написана понравился, все подробно и "плавно" описано
:good:

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение dikens3 » 2008-06-24 21:58:35

Статья понравилась.
Создан случайный общий ключ который будет использоваться в TSIG подписях при передаче зон между master и slave.
Может быть создаём, а не создан?

Ну и грамматика:
Далее описание настроек сделанных на salve сервере:
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение terminus » 2008-06-25 10:25:09

Чуть поравил как dikens3 посоветовал. За грамматику извиняйте - openoffice лучше не спелчекит, а сам я родную речь уже подзабываю малость :smile:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение Alex Keda » 2008-06-25 22:01:36

2 тредстартер
стандартно - слишком широкая.
причём насколько я понимаю - виноваты пробелы в конце листингов кода.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение terminus » 2008-06-25 22:29:36

тока что исправил - теперь должна влезать...

то есть вот теперь самое точно должна влезать :smile:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение Alex Keda » 2008-06-25 22:45:04

Код: Выделить всё

-c configfile   Use specified configfile (default: /usr/local/etc/nsd/nsd.conf).
nsdc	- главный интерфейс для локального управления демоном (аналог BIND'овской ndc)
слишком длинные
ты почти вписался - ещё пикселов 20 =)))
Убей их всех! Бог потом рассортирует...

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение terminus » 2008-06-25 22:50:49

Эво оно как! Уфф - писать статьи это не так просто...
Теперь вроде влезло наконец :cf:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение Alex Keda » 2008-06-25 22:52:01

случайно ушло в продакшен =)))
так что - спам разослал, по рсс уже потащили во все стороны...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение dikens3 » 2008-06-26 9:49:00

Ошибки:
обеспечить автоматическое, секюрное обновления от master (192.168.0.1) к slave (192.168.0.2).
Далее описание настроек сделаных на salve сервере
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение terminus » 2008-06-26 10:27:26

Спасибо, исправил ошибки.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Гость
проходил мимо

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение Гость » 2008-06-26 17:53:11

А можно ли настроить секьюрное автоматическое создание самих зон на втором сервере?
Настроил slave сервер и забыл, надо зону добавить - лезем только на master, а тот уже сам поднимает зону на slave и отправляет туда содержимое.
Или я слишком многого хочу? :)

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение terminus » 2008-06-26 20:11:47

Если подумать, то в случае NSD это можно сделать так:
На двух серверах запускается NSD. На первом сервере происходит вся работа - правится nsd.conf, в него добавляются новые зоны, изменяются и удаляются имеющиеся зоны и т.д. - ведется обычная работа. А на втором сервере через cron раз в 5 минут запускается скрипт. В скрипте вызывается rsync который через ssh синхронизирует все содержимое /usr/local/etc/nsd с первым сервером - переносит на второй все измененные данные с первого. Ну и в скрипте анализировать результаты работы rsync - была синхронизация хоть чего-нибудь или ничего нового он не стянул. Если что-то синхронизировал, то перезапускать nsd на втором, чтобы он новую информацию из базы к себе в память считал.

Как-то так можно придумать. А по-умолчанию такого чуда конечно нет.

К стати способ этот применялся при работе с djbdns, ибо tinydns еще аскетичнее чем NSD - там даже AXFR передач нет - так и делали чтобы не замарачиваться - rsync'ом дублировали :-D
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Гость
проходил мимо

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение Гость » 2008-06-27 9:02:26

terminus писал(а):На первом сервере происходит вся работа - правится nsd.conf, в него добавляются новые зоны, изменяются и удаляются имеющиеся зоны и т.д. - ведется обычная работа. А на втором сервере через cron раз в 5 минут запускается скрипт. В скрипте вызывается ...
Вот примерно в таком варианте я и настраивал несколько серверов.
На одном - bind и через nfs кусочек файловой системы отдается на slave, т.к. сервера стоят рядом, то такая ситуация работает, но надежности нет.
На втором - на secondary через cron запускается синхронизация с primary - забирает файл зоны (есть вариант скрипта с rsync, есть вариант скрипта через scp) - технология PULL.
На третьем - на primary сделан скрипт для добавления зоны, который через ssh заходит на secondary и запускает скрипт по добавлению зоны - технология PUSH.

А мне вот хочется использовать технологию push для того, чтобы secondary сервер не занимался бесполезными опросами основного, а получал данные только по команде от primary.
Такая технология используется регистраторами для обновления информации в корневых DNS, но вот только читал про них давно и забыл название технологии, которая там используется, собственно теперь и не загуглить :(

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение terminus » 2008-06-27 9:56:29

Теме же скриптами можно сделать и push. Только теперь написать скрипт который будет использоваться на master. Запускать этот скрипт каждый раз, когда добавляются новые записи в зону. Скрипт будет вызывать nsdc rebuild; nsdc reload и rsync на удаленный сервер. Полет фантазии ничем не ограничен в принципе... :smile:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Linxpro
рядовой
Сообщения: 38
Зарегистрирован: 2007-07-15 10:05:11
Откуда: Казахстан
Контактная информация:

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение Linxpro » 2008-10-20 7:17:27

Спасибо за статью! Извините за тупой вопрос!!! С днс сталкиваюсь впервые!
Мне пров дал статический IP! Я хочу сделать "честный" сервер(своя почта,www,ftp)
Зарегить на этот IP домен! Какой мне днс нужен мастер или slave!
Если мона по подробней!
Заранее спс!
Опыт появляется сразу после того, когда он не нужен!

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение terminus » 2008-10-20 11:10:10

Если вы живете в России, то по правилам регистратора nic.ru, для осуществления делегирования DNS зоны, вам понадобится минимум два работающих DNS сервера - мастер и слейв. Я бы держал мастер сервер у себя (чтобы иметь возможность удобно управлять зоной и не платить никому за его хостинг). О хостинге слейв сервера вам придется позаботится отдельно - возможно ваш провайдер может предложить такую услугу, возможно придумаете как нахаляву запустить его у знакомых чтобы не платить за хостинг... Запускать слейв на том же IP или на IP из того же субнета где находится мастер нельзя - насколько я помню nic.ru имеет жесткие требования, что мастер и слейв сервера должны находится в отдельных субнетах (а если не ошибаюсь то даже в отдельных автономных системах - сетях от разных провайдеров. Чтобы сервера имели два независимых маршрута на случай аварии).

Пример записей зоны:

Код: Выделить всё

$TTL 86400 ;minimum ttl 24h
domen.ru.	IN	SOA	ns1.domen.ru. hostmaster.domen.ru. (
			2008102000	;serial
			3600		;refresh 1h
			1800		;retry 30m
			2592000	;expire 30d
			600		;negative ttl 10m
			)

		NS		ns1
		NS		ns2
		MX	10	mail
		A		223.223.245.53

ns1		A		223.223.245.53
ns2		A		1.2.3.4
www		A		223.223.245.53
ftp		A		223.223.245.53
mail		A		223.223.245.53
Эти данные вначале запускаютя на мастере, а потом, после настройки слейва, автоматически реплицируются на него. nic.ru будет тестировать работу обоих серверов перед тем как окончательно делегировать на вас домен поэтому зону надо запускать до того как внесете изменения о NS. Тут описано, что и как https://www.nic.ru/dns/service/faq.html

При проведении делегирования (внесении изменений в данные регистрации на nic.ru) надо будет указать DNS имена и IP адреса мастер и слейв серверов - это NS записи для домена. Например, если ваш IP, где будет запушен мастер 123.23.45.67, а IP где будет запушен слейв 1.2.3.4, то в nic.ru вносится:
ns1.domen.ru 223.223.245.53
ns2.domen.ru 1.2.3.4

NSD не поддерживает инкрементальные IXFR передачи данных между мастером и слейвом, поэтому, при настройке слейв сервера в нем необходимо указывать, что мастер работает только с полными AXFR передачами. Это надо четко объснить администратору слейв сервера. Если слейв сервер работает под BIND, то там в настройках слейв зоны прописывается опция request-ixfr no.

Дополнительный маневр:
Если на вашем IP 223.223.245.53 будет работать SMTP сервер через который вы будете посылать почту *наружу* (использовать его для релая почты от имени вашего домена), то необходимо обратиться к вашему провайдеру с просьбой сделать реверс запись 53.245.223.223.in-addr.arpa PTR mail.domen.ru. при этом в настройках почтового сервера указать что его hostname mail.domen.ru Это необходимо так как многие не принимают почту от SMTP источников если у них нет или не правильное реверс имя.

Вроде это все, что надо было делать в таких случаях :cf:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
Linxpro
рядовой
Сообщения: 38
Зарегистрирован: 2007-07-15 10:05:11
Откуда: Казахстан
Контактная информация:

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение Linxpro » 2008-10-20 12:59:28

Спасибо огромное за инфу! Я сам из Казахстана. Будем дерзать!
Опыт появляется сразу после того, когда он не нужен!

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение terminus » 2008-10-20 13:23:55

Блин, ну да - в профиле ж написано - Казахстан :smile: Домен значил в .kz регистрировать будете? Ну тогда у своего регионального регистратора по поводу политики спрашивайте - может у вас не так строго как в России и слейва можно будет держать или у себя или вообще без него (если не страшно так жить).
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
razdrob
рядовой
Сообщения: 12
Зарегистрирован: 2008-06-23 14:10:24
Контактная информация:

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение razdrob » 2009-03-03 15:55:20

Код: Выделить всё

squid# dd if=/dev/urandom bs=16 count=1 2>/dev/null | openssl base64
Ambiguous output redirect.
Как бороться ?
Последний раз редактировалось Alex Keda 2009-03-03 22:18:11, всего редактировалось 1 раз.
Причина: Товарисчи, юзайте кнопочку [code], цените чужое время....

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение Alex Keda » 2009-03-03 22:18:25

перевести фразу и подумать
Убей их всех! Бог потом рассортирует...

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Готовится статья о DNS сервере NSD

Непрочитанное сообщение terminus » 2009-03-04 17:17:11

razdrob писал(а):

Код: Выделить всё

squid# dd if=/dev/urandom bs=16 count=1 2>/dev/null | openssl base64
Ambiguous output redirect.
Как бороться ?
Хммм. Как такое может быть?

Попробуйте так:

Код: Выделить всё

dd if=/dev/urandom bs=16 count=1 | openssl base64
1+0 records in
1+0 records out
16 bytes transferred in 0.000392 secs (40820 bytes/sec)
wSRWgx6ZCjAZHoyR2Ovanw==
Или что-то свое подсуньте, типа:

Код: Выделить всё

echo moiparolniktoneuznaet | openssl base64
bW9pcGFyb2xuaWt0b25ldXpuYWV0Cg==
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.